2010-06-11 3 views
12

Wann treten verschiedene git status nicht zusammengefügte Zustände auf, wie added by us, added by them oder both deleted?Git: Wie erstelle ich verschiedene nicht zusammengefügte Zustände?

Ich habe versucht, das Letztere zu reproduzieren, indem ich eine Zusammenführung durchführe, bei der eine Datei im aktuellen Zweig und im fusionierten Zweig gelöscht wurde, aber ich konnte diesen Status nicht erstellen.

+0

"beide gelöscht"? Geht es um Octopus Fusion? Wie kann es in der üblichen Zusammenführung von zwei Elternteilen sein? –

+0

Genau das wollte ich wissen. – mklhmnn

Antwort

17

Sie können alle drei erhalten, indem Sie eine Datei in jeder Verzweigung anders benennen.

git init 
touch foo 
git add foo 
git commit -m 'initial commit' 
git checkout -b tmp 
git mv foo X 
git commit -m 'rename to X' 
git checkout - 
git mv foo Y 
git commit -m 'rename to Y' 
git merge tmp 

Jetzt haben Sie alle drei Zustände.

 
$ git status 
# On branch master 
# Unmerged paths: 
# (use "git add/rm ..." as appropriate to mark resolution) 
# 
#  added by them:  X 
#  added by us:  Y 
#  both deleted:  foo 
# 
no changes added to commit (use "git add" and/or "git commit -a") 
+0

Schöne Demo. Dies half mir zu sehen, was wir gegen sie bedeuten. Wenn ich in Zweig A bin und in Zweig B fusioniere, ist Zweig A "uns" und Zweig B ist "sie". –

+5

Auch - Ihr Beispiel lehrte mich 'git checkout -', das ist wie' cd -'; es bedeutet "check the abzweig, auf dem ich war, bevor ich zu diesem hinwechsle." Für jeden, der dies findet, schaltet es nur zwischen zwei Zweigen um; es behält keine Geschichte bei. –

+2

Ab Git 1.9.3 scheint dieses Beispiel nicht mehr zu funktionieren: Es wird kein Merge-Konflikt generiert. – Pol

Verwandte Themen