Git Pull ist nicht möglich, nicht zusammengeführte Dateien

Lesezeit: 4 Minuten

Git Pull ist nicht moglich nicht zusammengefuhrte Dateien
Christian Steward

Ich habe alle ähnlichen Fragen dazu gelesen; es scheint, dass keiner der folgenden Punkte funktioniert hat:

Delete offending files
git reset --hard HEAD
git stash
git pull

Nahezu jede Kombination, Stashing von Änderungen und Abrufen aus dem Repository, führt zu nicht zusammenführbaren Dateien. Ich möchte alle lokalen Änderungen verwerfen und nur die Fernbedienung verwenden, aber ich kann nicht erneut klonen (Bandbreiten- und Internetnutzungsbeschränkungen, wenn der Entwickler dies versucht). Wie mache ich das?

Gerade versucht:

git stash
git pull

Hat auch nicht funktioniert.

Mehr Info

Es gibt einen lokalen Commit, und der Upstream hat ebenfalls einen Commit. Ich habe es also versucht git pull --rebase aber es funktioniert immer noch nicht richtig … Das gibt mir Fehler – “Beenden wegen eines ungelösten Konflikts”. Wenn ich mache git stash, git reset --hard HEAD, git pull --rebaseerhalte ich die Fehlermeldung “Pull ist nicht möglich, nicht zusammengeführte Änderungen …”

Git Pull ist nicht moglich nicht zusammengefuhrte Dateien
Trevor Norris

Sagen Sie, die Fernbedienung ist origin und der Zweig ist masterund sagen Sie, Sie haben bereits master ausgecheckt, könnte folgendes versuchen:

git fetch origin
git reset --hard origin/master

Dies nimmt im Grunde nur den aktuellen Zweig und zeigt ihn auf die HEAD der entfernten Filiale.

WARNUNG: Wie in den Kommentaren angegeben, Dadurch werden Ihre lokalen Änderungen verworfen und mit dem überschreiben, was auf dem Ursprung steht.

Oder Sie können die Installationsbefehle verwenden, um im Wesentlichen dasselbe zu tun:

git fetch <remote>
git update-ref refs/heads/<branch> $(git rev-parse <remote>/<branch>)
git reset --hard

EDIT: Ich möchte kurz erklären, warum das funktioniert.

Der .git Ordner kann die Commits für eine beliebige Anzahl von Repositories enthalten. Da der Commit-Hash eigentlich eine Überprüfungsmethode für den Inhalt des Commit ist und nicht nur ein zufällig generierter Wert, wird er verwendet, um Commit-Sets zwischen Repositories abzugleichen.

Ein Zweig ist nur ein benannter Zeiger auf einen bestimmten Hash. Hier ist ein Beispielsatz:

$ find .git/refs -type f
.git/refs/tags/v3.8
.git/refs/heads/master
.git/refs/remotes/origin/HEAD
.git/refs/remotes/origin/master

Jede dieser Dateien enthält einen Hash, der auf einen Commit zeigt:

$ cat .git/refs/remotes/origin/master
d895cb1af15c04c522a25c79cc429076987c089b

Diese sind alle für den internen Git-Speichermechanismus und arbeiten unabhängig von der Arbeitsverzeichnis. Indem Sie Folgendes tun:

git reset --hard origin/master

git zeigt den aktuellen Zweig auf denselben Hashwert, auf den origin/master zeigt. Dann ändert es zwangsweise das Arbeitsverzeichnis, damit es mit der Dateistruktur/dem Inhalt bei diesem Hash übereinstimmt.

Um dies bei der Arbeit zu sehen, probieren Sie Folgendes aus:

git checkout -b test-branch
# see current commit and diff by the following
git show HEAD
# now point to another location
git reset --hard <remote>/<branch>
# see the changes again
git show HEAD

  • Von der kürzlich genehmigten Bearbeitung, die die massive Warnung am Anfang hinzufügt, möchte ich nur darauf hinweisen, dass sie bereits erwähnt wird: „Dann [git] ändert das Arbeitsverzeichnis zwangsweise, damit es mit der Dateistruktur/dem Inhalt bei diesem Hash übereinstimmt.” Aber schätze, das war nicht explizit genug.

    – Trevor Norris

    14. Mai 14 um 22:28 Uhr

1643909886 56 Git Pull ist nicht moglich nicht zusammengefuhrte Dateien
Taylor

Ich hatte Glück mit

git checkout -f <branch>

in einer ähnlichen Situation.

http://www.kernel.org/pub//software/scm/git/docs/git-checkout.html

Löschen in GIT rückgängig machen

Gelöst, mit dem folgenden Befehlssatz:

git reset --hard
git pull --rebase
git rebase --skip
git pull

Der Trick besteht darin, die Änderungen zu rebasen … Wir hatten einige Probleme beim Rebasen eines trivialen Commits, und deshalb haben wir es einfach mit git rebase –skip übersprungen (nachdem wir die Dateien kopiert hatten).

Wenn dieses Problem jemals auftritt, nachdem Sie a git fetch und dann erlaubt dir git nicht zu laufen git pull wegen eines Zusammenführungskonflikts (sowohl modifizierte als auch nicht zusammengeführte Dateien, und um Sie noch frustrierter zu machen, werden Ihnen keine Konfliktmarkierungen in der Datei angezeigt, da sie noch nicht zusammengeführt wurde). Wenn Sie Ihre Arbeit nicht verlieren möchten, können Sie Folgendes tun.

Stage die Datei.

$ git add filename

verstauen Sie dann die lokalen Änderungen.

$ git stash

Ziehen und aktualisieren Sie Ihr Arbeitsverzeichnis

$ git pull

Stellen Sie Ihre lokale geänderte Datei wieder her (git wird automatisch zusammengeführt, wenn dies möglich ist, andernfalls lösen Sie es auf)

$ git stash pop

Hoffe es wird helfen.

1643909886 839 Git Pull ist nicht moglich nicht zusammengefuhrte Dateien
Preeti A.

Es gibt eine Lösung, auch wenn Sie Ihre lokalen Änderungen nicht entfernen möchten. Reparieren Sie einfach die nicht zusammengeführten Dateien (by git add oder git remove). Dann mach git pull.

Git Pull ist nicht moglich nicht zusammengefuhrte Dateien
Ryan Steward

Angenommen, Sie möchten alle vorgenommenen Änderungen verwerfen, überprüfen Sie zuerst die Ausgabe von git status. Führen Sie für jede Datei mit der Aufschrift “unmerged” daneben aus git add <unmerged file>. Dann weiter mit git reset --hard. Dadurch werden alle lokalen Änderungen mit Ausnahme von nicht verfolgten Dateien entfernt.

Ich wurde mit git gelöst, um die nicht zusammengeführte Datei lokal zu entfernen.

$ git rm <the unmerged file name>
$ git reset --hard
$ git pull --rebase
$ git rebase --skip
$ git pull
Already up-to-date.

Wenn ich danach Git Commit sende:

$ git commit . -m "my send commit"
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

.

758170cookie-checkGit Pull ist nicht möglich, nicht zusammengeführte Dateien

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy