Wie bekomme ich "ihre" Änderungen mitten in einer widersprüchlichen Git-Rebase?

349

Ich habe widersprüchliche Zweige, Zweig2 verzweigt von Zweig1.

Nehmen wir branch2an branch1, ich entscheide mich bei der Neubasierung auf dem aktuellen Stand und bei der Lösung von Konflikten, einige (nicht alle) "ihrer" (dh branch1) Dateien unverändert zu lassen . Wie mache ich das?

Ich habe es versucht:

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
Ondra Žižka
quelle
41
Hinweis: Wenn Sie Zweig2 auf Zweig1 umbasieren, erfolgt die Wiedergabe relativ zu Zweig1, sodass "ihr" tatsächlich Zweig2 und "unser" Zweig1 ist. git.661346.n2.nabble.com/…
Herr Fooz
2
Siehe auch github.com/git/git/commit/…
VonC
1
Das hat mich nur ungefähr 20 Stunden fleißige Arbeit gekostet. Ich dachte ehrlich, "unsere" wäre immer die Arbeitskopie.
Theodore R. Smith

Antworten:

496

Sie möchten verwenden:

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

Wenn Sie eine Verzweigung feature_xgegen neu starten master(dh git rebase masterwährend der Verzweigung ausgeführt wird feature_x), oursbezieht sich die Neufasierung auf masterund theirsauf feature_x.

Wie in den Git-Rebase-Dokumenten erwähnt :

Beachten Sie, dass eine Rebase-Zusammenführung funktioniert, indem jedes Commit aus dem Arbeitszweig über dem Zweig wiedergegeben wird. Wenn ein Zusammenführungskonflikt auftritt, ist die als unsere gemeldete Seite die bisher neu basierte Serie, beginnend mit <upstream>, und ihre ist der Arbeitszweig. Mit anderen Worten, die Seiten werden getauscht.

Für weitere Details lesen Sie diesen Thread .

iGEL
quelle
0

Wenn Sie eine bestimmte Datei aus einem anderen Zweig ziehen möchten, tun Sie dies einfach

git checkout branch1 -- filenamefoo.txt

Dadurch wird eine Version der Datei aus einem Zweig in den aktuellen Baum gezogen

Adrian Cornish
quelle
35
Dies wäre wahrscheinlich eine schlechte Idee mitten in einer Rebase, da es die Datei aus dem Kopf dieses Zweigs ziehen würde, nicht an dem abgetrennten Kopfpunkt, an dem Sie sich in einem konfliktreichen Rebase-Zustand befinden würden
Clintm