2013-01-16 18 views
25

Come interessante e utile come risposta a How to setup a git driver to ignore a folder on merge, non ha risposto alla domanda originale che mi ha ancora bloccato.Come rendere git ignorare una directory durante l'unione

A differenza della domanda di cui sopra, ho due rami con lo stesso insieme di directory e per unire l'uno nell'altro ho bisogno di git per ignorare completamente una directory.

L'ho provato con il mio proprio driver di unione come descritto in How do I tell git to always select my local version for conflicted merges on a specific file? ma il problema con questo approccio è che questo driver viene richiamato solo quando c'è un file in conflitto effettivo in questi due rami. Ogni volta che le modifiche di un file sono solo su un ramo, git le unisce senza chiamare il mio driver di unione.

Ciò porta a modifiche nei file nella directory che non desidero. Qualche idea su come potrei fare git ignorare ogni singolo file in quella directory per tutto il tempo - che sia stato toccato o no?

+0

Ho cercato in git ultimamente, e questo sembra essere uno dei problemi che ci sia consentito l'uso esso, si non può unire selettivamente le cose. – user606723

+0

il comando 'git filter-branch' potrebbe essere quello che stai cercando. Ti consente di eseguire un'unione mentre filtri ciò che viene unito. http://git-scm.com/docs/git-filter-branch –

+0

Grazie per la risposta, ma non capisco come potrei applicare 'filter-branch' in questo caso specifico senza fare un sacco di lavoro manuale per ogni fondersi. –

risposta

37

Io in realtà non usano Git, ma credo che questo dovrebbe funzionare per il vostro caso:

usare qualcosa come quello che sta qui specificato: https://gist.github.com/564416

git checkout master  
git merge --no-commit --no-ff development 
git reset -- /path/to/folder # revert updates from path 
git commit 

Ancora una volta, io non uso git, Sto solo rimandando a come penso che le cose funzionino in base alla mia esperienza con TryGit.

  1. cassa maestro
  2. merge, ma non commettere, senza avanzamento rapido.
  3. unioni sono ora in scena, in modo che ripristinate intero albero di directory
  4. commettere
+0

@SebastianThiebes Questa è la risposta corretta. Votalo, accettalo – jthill

+1

Penso che dovresti dare questa risposta anche in [Come configurare un driver git per ignorare una cartella in unione] (http://stackoverflow.com/questions/3111515/how-to-setup-a-git-driver-to -ignore-a-cartella-on-merge). Forse anche considerare di non mostrare la fase di checkout? È irrilevante e penso che toglie la semplicità della soluzione. – jthill

+1

Se la mia modifica non viene eseguita, il ripristino dovrebbe essere 'git reset - path/to/folder' – jthill

Problemi correlati