2017-05-09 1 views
0

Rebasing Während ein Zweig auf einen anderen Rebasing wie untenWie ein Patch/commit statt Überspringen es zu überschreiben, während

git checkout dev 
git rebase master 

(dev Zweig auf master Rebasing), wenn ein Konflikt auftritt, dann

wir folgende Optionen Jetzt
The copy of the patch that failed is found in: .git/rebase-apply/patch 

When you have resolved this problem, run "git rebase --continue". 
If you prefer to skip this patch, run "git rebase --skip" instead. 
To check out the original branch and stop rebasing, run "git rebase --abort". 

, um die Konflikte zu lösen, wir entweder die Dateien manuell bearbeiten oder den Patch (git rebase --skip) überspringen, um den Patch zu beseitigen, die Konflikte schafft, während Rebasing.

aber ich wollte hier, was ist das Patch von Entwickler zu überschreiben und den Patch zu ignorieren, die bereits im Master ist ... so etwas wie (git rebase --overwrite)

Gibt es eine solche Option oder eine andere Möglichkeit, es zu tun, so ?

Antwort

1

Ich bin mir nicht sicher, was Sie meinen, indem Sie ein Commit überschreiben, anstatt es zu überspringen. Entweder wird ein Commit in seiner Gesamtheit angewendet oder es wird übersprungen. In jedem Fall sollten Sie in der Lage sein, die gewünschte Kontrollebene auf Dateiebene zu erhalten.

Bei der Neuausrichtung und bei einem Konflikt gibt es zwei Eltern für jede Datei im Konflikt. Wenn Sie einige Datei path/to/file.ext hatten und Sie wollten mit der Master Version überschrieben werden sollen, dann könnten Sie verwenden:

git checkout --ours path/to/file.ext 
git add path/to/file.ext 

Wenn Sie die dev Version derselben Datei verwenden wollen, dann könnte man diese verwenden :

git checkout --theirs path/to/file.ext 
git add path/to/file.ext 

Diese Antwort nimmt die Situation, die Sie in Ihrer Frage beschrieben, nämlich die Sie dev auf master, von diesem Zweig umbasiert:

git checkout dev 
git rebase master 
+0

Ja, das ist, was ich suche. Was ich mit dem Überschreiben eines Commits meinte, ist nichts anderes als 'git checkout --theirs '. Als 'git checkout - ' ist ähnlich wie 'git rebase - skip' – newbie

+1

OK, aber denken Sie daran, wenn Sie einen ganzen Patch überspringen, bedeutet es _every_ Datei, während meine Antwort nur sagt Ihnen, wie Sie über eine _single_ Datei zu überspringen. –

+0

Oh ja! Genauer gesagt ist "git rebase - skip" ähnlich wie "git checkout --ours." – newbie

Verwandte Themen