Ich bin sehr neu in Git und habe mich gefragt, wie ich eine Zusammenführung durchführen soll, bei der ich im lokalen Repo mehrere Dateien im Hauptzweig gelöscht habe, diese Dateien jedoch im Remote-Hauptzweig vorhanden sind.
Nach dem Zusammenführen von git-merge werden die aufgetretenen Konflikte angezeigt.
Mit git gui wird angezeigt, dass die lokale Datei gelöscht wird, während die Remote-Verzweigungsdatei Inhalt enthält.
Wie verhindern Sie, dass diese Dateien in Konflikt geraten? Gibt es eine einfache Möglichkeit, Git Gui zu verwenden?
Danke vielmals
Antworten:
Sie sollten die Konflikte nach Belieben lösen. Wenn die Datei wirklich entfernt werden soll und Sie diese Änderung am Ursprung veröffentlichen, entfernen Sie sie erneut:
Wenn die Datei tatsächlich noch verfolgt werden soll, fügen Sie sie hinzu (die Version im Arbeitsbaum ist die Version vom Ursprung):
Nachdem Sie eine der beiden Aktionen ausgeführt haben, um den Konflikt zu lösen, führen Sie die Zusammenführung durch.
quelle
cd
in das Verzeichnis undgit rm *.ext
. Ihre Shell (nicht Git) wird*.ext
auf alle übereinstimmenden Dateinamen erweitert.git rm
hat keine-i
Flagge.git rm *-suffix.ext
? Gleicher Unterschied. Wenn Sie Probleme haben, herauszufinden, wie Shell-Platzhalter verwendet werden, wenden Sie sich an unix.stackexchange.com. Wenn Sie sicher sind, dass das, was Sie wollen, nicht mit Globbing gemacht werden kann, verwenden Sierm -i
und folgen Siegit add -u
, um die Löschungen aufzunehmen.-s recursive -X ours
, warum ist es immer noch notwendiggit rm
undgit add
?Als zusätzlichen Tipp zusätzlich zu der akzeptierten Antwort in einem "von uns gelöschten" , wenn Sie die Änderungen sehen möchten, die an der gelöschten Datei vorgenommen wurden, damit Sie diese Änderungen an anderer Stelle anwenden können, können Sie:
Wenn es sich um ein Szenario handelt, das von ihnen gelöscht wurde und Sie die Änderungen sehen möchten, damit Sie sie an anderer Stelle anwenden können, können Sie Folgendes verwenden:
quelle
git diff mybranch@{1}...origin/master -- path/to/file
git diff --base
(siehe meine andere Antwort).In der Git-GUI wählen Sie die Konfliktdatei aus und klicken dann mit der rechten Maustaste auf den Haupttextbereich, in dem der Konflikttext angezeigt wird.
Im angezeigten Kontextmenü können Sie zwischen "Remote" und "Lokal" wählen. Wenn eine Datei remote gelöscht wird, können Sie "Remote" auswählen, um das Löschen lokal zu verbreiten, und umgekehrt.
Ich habe einen Monat gebraucht, um es herauszufinden ... es wäre schön, wenn Git GUI tatsächlich Dokumentation hätte ...
quelle
Die am besten bewertete Antwort konzentriert sich auf den Weg zur Lösung des Konflikts.
Vorher möchten Sie wahrscheinlich wissen, was die Fernbedienung in den lokal entfernten Dateien geändert hat.
Dazu können Sie die Änderungen sehen mit:
Von https://git-scm.com/docs/git-diff#Documentation/git-diff.txt--1--base
quelle
git diff --base
stackoverflow.com/a/60484874/470749In EGit habe ich auch Probleme gefunden. Meine Lösung war:
quelle
Wie in dieser nützlichen Antwort auf eine verwandte Frage angegeben , können Sie
git mergetool
einen Dialog starten, in dem Sie auswählen können, ob Sie die geänderte oder die gelöschte Version der Datei (en) übernehmen möchten.quelle