714 Stimmen

Wie löst man einen Git Stash-Konflikt ohne Commit?

Als in dieser Frage gefragt Ich möchte auch wissen, wie man einen Konflikt auflöst git stash pop ohne alle Änderungen zu einem Commit hinzuzufügen (so wie es "git stash pop" ohne Konflikt tut).

Mein derzeitiger Ansatz ist sehr uncool, weil ich es auf diese Weise mache:

git stash pop  # -> CONFLICT
git stash drop
# [resolve conflict]
# [add conflict files]
git reset HEAD # <all files that are in commit-mode>

Wie man sich fortpflanzt:

mkdir foo; cd foo; git init
echo "1" > one
echo "2" > two
git add -A; git commit -m "first"
echo "1.1" > one
echo "2.1" > two
git stash
echo "2.2" > two
git commit -a -m "second"
echo "Only this file would stay in HEAD without the conflict" > third
git add third
git stash pop
git status

2016-06-27: Dem Beispiel wurde eine neue Datei namens 'third' hinzugefügt, um zu zeigen, dass Workarounds wie die Lösung von scy nur für leere HEADs funktionieren, aber nicht das ursprüngliche Problem beheben, dass der HEAD nicht denselben Inhalt hat wie bei einem git stash pop ohne einen Konflikt.

1voto

samgrigg Punkte 11

Nach Angaben von Fragen zum Git-Versteck nachdem der Konflikt behoben wurde, git add <file> ist die richtige Vorgehensweise.

Es war nach der Lektüre dieser Kommentar dass ich verstanden habe, dass die Änderungen automatisch in den Index aufgenommen werden (absichtlich). Deshalb git add <file> schließt den Konfliktlösungsprozess ab.

-2voto

Bishwas Mishra Punkte 1094

Es ist nicht die beste Methode, aber sie funktioniert:

$ git stash apply
$ >> resolve your conflict <<
$ >> do what you want to do with your code <<
$ git checkout HEAD -- file/path/to/your/file

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X