Wie der Titel besagt, versuche ich, aus einem Git-Repository zu ziehen, das ich zwischen meinem Freund und mir und mir freigeben kann. Er kann einen Commit ausführen, aber wenn einer von uns versucht, ihn zurückzuziehen, bringt er es zurück: DIRTY_WORKTREE
Wir beide sind extrem neu bei git und haben keine Richtung, wie man dieses Problem beheben kann.
Ich konnte ein ähnliches Problem mithilfe des git-Befehlszeilenclients beheben. Während Eclipse (egit) nur DIRTY_WORKTREE sagte, sah ich in der Befehlszeile mehrere in Konflikt stehende Dateien. Mit git merge master
von der Kommandozeile aus konnte ich die Konflikte dann leicht in Eclipse lösen . Für mich scheint dies ein Problem zu sein.
Wenn Sie keine Arbeit haben, versuchen Sie, Ihren HEAD zurückzusetzen.
Mit EGit: Zurücksetzen Ihres aktuellen HEAD :
Wählen Sie in einem Projekt
Team -> Reset...
aus. Dadurch wird ein Dialogfeld geöffnet, in dem Sie einen Zweig oder ein Tag auswählen können.
Setzen Sie HEAD in Ihrem aktuellen Zweig zurück, um den Indexbaum und auf den letzten Commit des Zweigs zurückzusetzen.
Dann versuchen Sie Ihren Zug.
Ich hatte nicht festgeschriebene Änderungen. Nachdem ich sie festgelegt und dann zusammengeführt hatte, verschwand das Problem mit dem schmutzigen Worktree.
Es scheint zu bedeuten, dass die Version, in der Sie sich gerade befinden, Änderungen enthält, die noch nicht festgelegt wurden. Sie müssen diese Änderungen also entweder entfernen oder festschreiben. Beachten Sie, dass Sie möglicherweise Konflikte bei der Zusammenführung bekommen, wenn Sie sie festlegen.
Löschen Sie einfach den im Projektordner vorhandenen .gitignore und führen Sie dann die Zusammenführung von ... durch. Die Zusammenführung zeigt Konflikte, die Sie auflösen müssen, und drücken Sie dann die Änderungen.
In Eclipse ging ich zur Team-Synchronisierungsansicht und klickte mit der rechten Maustaste auf mein Projekt und drückte auf 'Überschreiben', um alle lokalen Änderungen zu überschreiben. Wiederholen Sie dann die Zusammenführung.
In meinem Fall wurde das DIRTY_WORKTREE durch diese Sequenz verursacht:
In diesem Szenario denkt Eclipse, dass Ihr Arbeitsbaum schmutzig ist. Es ist in der Tat nicht offensichtlich, dass der Vergleich zweier Dateisätze, wenn eine der beiden Dateien einige Dateien ignoriert und die andere nicht.
Um das Problem zu lösen in Eclipse habe ich Folgendes getan:
Wenn Sie Ihren lokalen Zweig mit dem Origin-Zweig überschreiben möchten.
Gehen Sie zur Git-Repo-Ansicht> Klicken Sie auf Origin-Master> Wählen Sie Reset -> Es wird der aktuelle HEAD angezeigt und der Zweig wird zurückgesetzt. Wählen Sie HARD Reset, wenn Sie Ihre lokalen Änderungen vollständig überschreiben möchten
Ich hatte ein ähnliches Problem bei Eclipse mit nicht festgeschriebenen Änderungen als uneinheitlich ..__ Nach einem Festschreiben konnte ich zusammenführen und alles ist wieder so, wie es sein sollte .. _. Schauen Sie sich Ihren Quellcode an und überprüfen Sie die Änderungen. Wenn keine, können Sie hart zurücksetzen.
Nur um einen weiteren Fall hinzuzufügen, ich habe DIRTY_WORKTREE, ich bin der einzige, der sich für mein Github-Projekt einsetzt, also habe ich in EGit einen Push-Zweig erstellt ...
GEFAHR: Wenn andere an demselben Projekt arbeiten, werden durch diese Aktion ihre Commits seit der Divergenz gelöscht.
Wenn Sie Änderungen vorgenommen haben, ohne zu bestätigen, werden Sie von Eclipse informiert, wenn Sie versuchen, die Änderungen zu übernehmen. Um dies zu beheben, können Sie die Änderungen verwerfen oder das Festschreiben dieser Dateien durchführen.
Quelle: https://www.Eclipse.org/forums/index.php?t=msg&th=890477&goto=1565668&#msg_1565668
Dieser Fehler tritt auf, wenn Sie lokale Änderungen an Dateien vorgenommen haben, die noch nicht festgeschrieben wurden. Im Sprachgebrauch von Git haben Sie nicht festgeschriebene Änderungen in Ihrem Arbeitsbaum vorgenommen.
Wenn Sie in dieser Situation sind und versuchen zu ziehen, ist git nicht sicher, was Sie mit den lokalen Änderungen tun sollen. Sollte es diese verwerfen und die Änderungen aus der Fernbedienung ziehen? Sollte es die vor festschreiben, die die Änderungen von der Direktübertragung ziehen? Deshalb scheitert es.
Um dieses Problem zu vermeiden, bevor Sie Änderungen in Ihr lokales Repository übernehmen, müssen Sie entweder Ihre lokalen Änderungen festschreiben, sie verstecken oder verwerfen. Sobald Sie keine ausstehenden lokalen Änderungen in Ihrem Arbeitsbaum haben, sollten Sie in der Lage sein, fehlerfrei zu ziehen.
Löschen Sie die betroffenen Dateien und versuchen Sie es erneut. Danach Schieben Sie Ihre Änderungen in den Git. Ich habe das gleiche Problem und das hat für mich funktioniert.