Come ottenere i "loro" cambiamenti nel mezzo del conflitto di Git in conflitto?


349

Ho rami in conflitto, branch2 ramificato da branch1.

Diciamo che quando ci si rifà branch2all'attuale branch1, risolvendo i conflitti, decido di prendere alcuni (non tutti) dei "loro" (cioè branch1) file così come sono. Come lo faccio?

Provai:

git checkout branch1:foo/bar.java
fatal: reference is not a tree: TS-modules-tmp:foo/bar.java

git checkout refs/heads/branch1:foo/bar.java
fatal: reference is not a tree: refs/heads/TS-modules-tmp:foo/bar.java

41
Nota: se stai riordinando branch2 su branch1, la riproduzione avviene relativamente a branch1, quindi "loro" è in realtà branch2 e "nostro" è branch1. git.661346.n2.nabble.com/…
Mr Fooz,


1
Questo mi è costato circa 20 ore di lavoro diligente. Onestamente ho pensato che "nostro" sarebbe sempre stata la copia funzionante.
Theodore R. Smith,

Risposte:


496

Vuoi usare:

git checkout --ours foo/bar.java
git add foo/bar.java

Se si ribatte un ramo feature_xcontro master(ovvero correndo git rebase mastermentre sul ramo feature_x), durante il rebasing si oursfa riferimento a mastere theirsa feature_x.

Come sottolineato nei documenti git-rebase :

Si noti che un'unione rebase funziona riproducendo ciascun commit dal ramo di lavoro in cima al ramo. Per questo motivo, quando si verifica un conflitto di unione, la parte segnalata come nostra è la serie finora riformulata, che inizia con <upstream>, e la loro è la branca operativa. In altre parole, i lati vengono scambiati.

Per ulteriori dettagli leggi questa discussione .


0

Se vuoi estrarre un determinato file da un altro ramo, fallo

git checkout branch1 -- filenamefoo.txt

Ciò estrarrà una versione del file da un ramo nella struttura corrente


35
Questa sarebbe probabilmente una cattiva idea nel mezzo di un rebase in quanto estrarrebbe il file dalla testa di quel ramo non nel punto di testa staccato in cui ti trovi in ​​uno stato di rebase in conflitto
Clintm,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.