Problem beim Zusammenführen der Upstream-Änderungen in meine Filiale
Ich in Konflikte beim Versuch der merge-upstream-änderungen wieder in meine Filiale und ich bin mir nicht sicher, wie Sie zu lösen sind.
Ich meine eigene Gabel. Ich geklont. Ich machte änderungen an dem ast, auf meiner Gabel, verpflichtet, und geschoben. Aber dann den main Gabel aktualisiert, und ich versucht, zu aktualisieren, meine eigene Gabel durch die Verschmelzung upstream in etwa so:
$ cd repo-name
$ git remote add upstream git://github.com/username/repo-name.git
$ git fetch upstream
$ git merge upstream/master
Den merge sagt, dass es ein problem mit einer Datei und das automatische Zusammenführen funktioniert nicht. Sagt es mir, es zu beheben und mich wieder zusammenzuführen. So ich ging auf den upstream-repository auf GitHub der wichtigsten Gabel und kopiert den code von der neuen Datei in die Datei auf meiner Gabel, und versucht, wieder vereint sind. Dann git gibt mir diese Fehlermeldung:
fatal: 'merge' ist nicht möglich weil du nicht zusammengeführte Dateien.
Bitte, lösen Sie sich in die Arbeit, Struktur, und benutzen Sie dann 'git add/rm ', wie
geeignet zum markieren Auflösung und eine committen, oder benutzen Sie 'git commit-a'.
Gibt es irgendein argument, das ich verlassen bin? Mache ich etwas dumm? Was bedeutet es, von "nicht zusammengeführte Dateien?" Ist das nicht der springende Punkt bei der Zusammenführung zum Zusammenführen von Dateien? Muss ich meine änderungen bestätigen, bevor ich Sie Zusammenführen?
InformationsquelleAutor der Frage anonymous | 2011-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie sehen, bedeutet, dass das automatische Zusammenführen konnte keine Lösung der Konflikte in den Dateien. Sie brauchen, um diese Konflikte aufzulösen manuell. Führen Sie
git mergetool
odergit gui
.InformationsquelleAutor der Antwort Let_Me_Be
"Git merge" - Befehl versucht, Einarbeitung von änderungen von einem Zweig auf den Zweig vorhanden. Wenn der merge ist sauber, d.h. keine Konflikte, es zu Begehen. Seit dem merge haben Konflikte, die es nicht begangen hat. Sie brauchen, um den Konflikt zu lösen.
Ziehen Sie die Kopie aus dem upstream-repo ist ein Weg, das zu tun - durch die Annahme der upstream-repo-version. Sie können innerhalb git mit "git checkout --theirs conflicting_file.txt"
Bearbeiten der Datei, um es in die Form, die Sie wollen, ist ein anderer Weg.
Sobald es behoben ist, müssen Sie mit "git add conflicting_file.txt" dann Begehen. Dann wird Ihre Arbeitskopie ist sauber und bereit für mehr hacking. Viel Glück.
InformationsquelleAutor der Antwort cbare
In Git gibt es Fälle Zusammenführen weigert sich sogar starten, um zu schützen Ihre lokalen änderungen. Dies kann geschehen, in zwei Fällen:
Haben Sie übernommene änderungen in Ihr repository, merge-Konflikt mit. Der git wird sich weigern, einen Seriendruck mit der folgenden Meldung:
Dann müssen Sie entweder die änderungen zunächst (
git commit -a
odergit add
+git commit
), oder verstauen Sie Sie Weg mitgit stash save
.Sind Sie in der Mitte ein paar unvollendete merge-y-Betrieb. Es gab einige Konflikte, zum Beispiel
und Sie sind noch nicht fertig mit der Lösung von Konflikten (durch Bearbeiten der Dateien und markiert Sie als erledigt mit
git add
oder mit einigen grafischen merge-tool übergit mergetool
) und nicht erstellen Sie eine endgültige merge-commit mitgit commit -a
oder abgebrochen verschmelzen mitgit reset --hard
(HINWEIS: dies verwirft alle änderungen, und Sie verliert Ihre Arbeit an der Lösung von Konflikten!!!).Oder Sie haben gerade ausgeführt zweiten
git merge
zu schnell, oder verwendet werdengit merge
stattgit commit
zum erstellen eines merge-commit.Konflikte zu lösen, wie beschrieben z.B. in alten Spaß bei Abschluss einer Zusammenführen Artikel von Junio C Hamano und zum Abschluss ein merge mit
git commit
oder verwerfen einer Zusammenführen, oder verstauen Sie Sie Weg. Dann, wenn Sie soll diese zweite Zusammenführen, können Sie es tun.Sidenote: von Standard-git-aware-shell-prompt zeigt, wenn Sie in der Mitte von merge, rebase oder anwenden von patches (
git am
- Betrieb). Sie können auch konfigurieren, es zu zeigen, wenn das Arbeitsverzeichnis schmutzig ist (anders als die neueste version, D. H. den KOPF).InformationsquelleAutor der Antwort Jakub Narębski
Laufen
git commit
(nach dem hinzufügen der Dateien), das zweite mal nichtgit merge
.Auch die Konfliktlösung wird Dateien erstellen, um Ihnen zu helfen merge. Siehe auch
git mergetool
.InformationsquelleAutor der Antwort alternative
Nachdem Sie sich gelöst, Zusammenführen, müssen Sie
git add
hinzufügen, die Dateien, die Sie geändert haben, auf den index, und dann Begehen (wie die Meldung besagt). Dies sagt git "ja, ich weiß wirklich wollen, um diese änderungen vorzunehmen".Denken Sie daran, verwenden Sie immer
git add
bevor Sie (entweder normal oder Begehung einer Zusammenführen), wenn du mit dem command line interface. Frontends wie magit optimieren diese für Sie, so dass Sie nicht haben, um sorgen über die Eingabe von "git add" jedes mal.InformationsquelleAutor der Antwort Robin Green