Ich möchte Änderungen an einer Datei in meinem Repo vornehmen und erzwinge dann git zu glauben, dass die Datei nicht eingebunden ist und in git status
like so angezeigt wird:
Das ist die Gesamtheit meiner Frage. Lesen Sie weiter für eine Erklärung, warum, weil ich weiß, dass das erste, was gefragt wird.
Der Zweck hier ist ein Bugfix für Piston , der heute Zusammenführungskonflikte im Index lässt, wo sie zu leicht übersehen werden.
> Die Art, wie piston update
mit einem Git Repo arbeitet, ist:
git merge master
im temporären Repo aus, um unsere lokalen Änderungen mit den Änderungen des fernen Repos zusammenzuführen Ich erwarte, dieses Problem zu beheben, indem ich die Datei mit Zusammenführungskonflikten in den temporären Zweig einbinden lasse, aber ganz am Ende (nachdem git merge --squash
läuft) möchte ich git über die Dateien informieren, die einen Zusammenführungskonflikt hatten im Temp Repo.
In der Git-Datei, die einen Zusammenführungskonflikt hat, gibt es (normalerweise) drei Versionen im Index und eine Version im Arbeitsbereich mit den Konfliktmarkern diff3 -E
/ rcsmerge
. Die Versionen im Index sind Stufe 1 von gemeinsamen Vorfahren, Stufe 2 für "unsere" Version und Stufe 3 für "ihre" Version. Für nicht zusammengefügte Dateien gibt es keine Version in Stufe 0 (Sie können git update-index --unresolve
verwenden, um den nicht zusammengefassten Zustand wiederherzustellen, indem Stufe 0 gelöscht wird).
Sie müssten git ls-files --stage
oder git ls-tree <commit>
verwenden, um sha-1 Bezeichner von Blobs (Dateiversionen) zu erhalten, die Sie in den Index einfügen möchten, oder git hash-object -w <file>
, wenn Sie die Version einer Datei von Grund auf neu generieren möchten. aus der Arbeitsbereichsversion. Dann verwenden Sie git update-index --index-info
, um Stufen höherer Ordnung in die Indexdatei zu legen (und git update-index --unresolve
danach oder git update-index --force-remove
vor dem Füllen höherer Stufen, um Stufe 0 aus dem Index zu entfernen). Sie können die Datei mit Mergemarkern im Arbeitsbereich mithilfe von git checkout --conflict=merge -- <file>
neu generieren.
HTH (Hoffnung, die hilft)
Siehe auch: " Wie wird der Zusammenführungszustand selektiv wiederhergestellt? "Thread auf Git-Mailing-Liste.
Tags und Links git ruby-piston