2017-02-21 3 views
0

Meine Frage betrifft Git und wie man es richtig verwendet. Mein Wissen ist sehr einfach.Include Teil der älteren Version der Commit-Datei in neue Commit-Version der Datei

Ich habe versehentlich einen Code-Chunk in meiner Datei gelöscht, aber erst nach dem Commit und Push-to-Github realisiert. Bevor ich das bemerkte, habe ich weitere absichtliche Änderungen vorgenommen, die ich auch übernommen und vorangetrieben habe. Nun möchte ich den unionally gelöschten Code-Chunk in die neueste (committed) Version meiner Datei einbeziehen.

(Wie) ist das möglich zu erreichen?

Antwort

2

Da Sie bereits Ihr Commit geändert haben, ist es potentiell gefährlich, es zu verändern, da jemand es überprüft haben könnte und jetzt daran arbeitet. Es wäre sauberer, den Chunk bei einem neuen Commit hinzuzufügen.

Es ist jedoch möglich, den Codeabschnitt zu erfassen und ihn in die neueste Version der Datei aufzunehmen, aber Sie müssen auf die eine oder andere Weise neue Commits erstellen.

Sie haben nicht erwähnt, wenn Sie irgendeine Art von GUI verwenden, also werde ich davon ausgehen, dass Sie Git über die Befehlszeile verwenden.

Option 1: Um es als neues Commit über Ihrem alten Commit hinzuzufügen, verwenden Sie das Werkzeug Ihrer Wahl, um Ihren Repos-Verlauf anzuzeigen (dies wäre gitk in der Befehlszeile), finden Sie das vorige Commit, kopieren das Chunk, das gelöscht wurde, fügen Sie es in Ihren aktuellen Code ein und übergeben Sie das neu hinzugefügte Chunk.

Option 2: Um zurück in Ihre repositorys Geschichte und ändern Sie die Löschung in erster Linie zu gehen, können Sie

git reset HEAD~2 

verwenden Repository zurück von zwei Commits zurücksetzen. Die Änderungen, die durch Ihre beiden Commits eingeführt wurden, erscheinen jetzt als nicht geänderte Änderungen in Ihrem Arbeitsverzeichnis. Um wieder die Löschung des Chunks Sie behalten möchten, können Sie entweder Ihre Änderungen in der gesamten Datei rückgängig machen (wenn es keine anderen Änderungen sind) durch

git checkout -- <filename> 

oder rückgängig machen nur das Löschen des Blocks von

git checkout -p <filename> 

und folgen Sie den Anweisungen auf dem Bildschirm. Dann können Sie Ihre Änderungen festschreiben, entweder als ein Commit oder getrennt in zwei, wie sie ursprünglich waren. Wenn Sie pushen möchten, müssen Sie das Überschreiben mit dem Argument --force erzwingen, da sich Ihr Verlauf von demjenigen im Upstream unterscheidet. Seien Sie sich bewusst, dass dies potenziell zerstörerisch ist.

Verwandte Themen