2017-06-18 2 views
2

Ich habe einige Dateien in einem Ordner, die ich nicht git verfolgen wollte, also habe ich hinzugefügt, um sie an die .gitignore etwa so:Git Fehler: ‚Verweigern untracked Datei zu verlieren‘, wenn fusionieren tun

Directory/Build/ 

aber wenn ich git status benutzte, wurden sie immer noch als "modifizierte Dateien, die nicht für das Commit inszeniert wurden" angezeigt. Ich sah diese auf und es wurde vorgeschlagen, die git Index zu reinigen mit:

git rm --r --cached Directory/Build/ 

Ich tat dies, und nach git status alle Dateien, die ich untracked haben wollten wurden als Deleted: file gezeigt, dachte ich, das war gut genug, um als Sie werden aus dem Arbeitsbaum gelöscht (aber nicht lokal, denke ich?).

Aber dann, als ich versuchte git pull zu tun, habe ich einige seltsame Zusammenführung Konflikte, die ich weiß nicht, wie zu beheben:

error: refusing to lose untracked file at 'Directory/Build/..../file.class' 
error: refusing to lose untracked file at 'Directory/Build/..../file.jar' 

und auch einig

CONFLICT (modify/delete): ... 
CONFLICT (modify/delete): Directory/Build/..../file.jar deleted in HEAD and modified in <<id>>. Version <<id>> of Directory/Build/..../file.jar left in tree. 

Ich versuchte git merge -Xours zu tun, aber Es gab mir immer noch den Konflikt.

Wie lösen?

+0

Wie [VonC sagt] (https://Stackoverflow.com/a/44618504/1256452), müssen Sie die Dateien aus dem Weg räumen. Der Grund dafür, dass "-Xours" und "-Xtheirs" keine Wirkung haben, ist, dass dies "high level" (commit-wide) -Konflikte sind, aber die beiden "-X" -Optionen nur Git dazu bewegen, die eine oder die andere Seite zu bevorzugen beim Auflösen von "Low-Level" (Inside-One-File) -Konflikten. – torek

Antwort

0

Wenn Sie einige Dateien zu Git hinzugefügt haben, werden sie auch nachverfolgt, wenn Sie sie in Ihren Gitignore schreiben. Sie müssen sie also zuerst entfernen. Mit:

git rm --cached files 

dann werden die Dateien in Ihrem Repository gelöscht, aber sie bleiben lokal. Dann können Sie es nach Gitignore schreiben und sie werden ignoriert.

Wenn Sie den Kommentar ausführen, werden die Dateien zuerst als gelöscht angezeigt, weil Sie genau das getan haben. Fügen Sie also add hinzu und übernehmen Sie die Änderung. Dann sollte es funktionieren. Danach sollten Sie keine neuen nicht verdeckten Dateien in Ihren Verzeichnissen finden.

2

Sie noch brauchen, nach den rm --cached -r, zu:

  • begehen diese Löschungen
  • Umzug der Build-Ordner aus dem Weg (außerhalb des git Repo): a git status einen sauberen Arbeits Baum zeigen muss der nächste Befehl ausgeführt werden soll,
  • git pull --rebase (Ihre lokalen Commits auf dem Upstream-Zweig wiederholen)
  • bewegen die Build-Ordner zurück in
Verwandte Themen