2013-03-26 7 views
6

Während der Arbeit an einem Feature-spezifischen Zweig (aus dem "Entwicklung" Zweig), habe ich den falschen Ansatz (ein paar Mal: ​​/) und möchte im Wesentlichen alle löschen Ich verpflichte mich in diesem Zweig vor meinem jetzigen Einsatz.So interpretieren Sie "gelöscht von uns" nach git rebase interactive

Was ich vorher in dieser Art von Situation getan habe, ist eine git rebase -i development zu tun und löschen Sie alle Commits vor dem, den ich behalten möchte (die aktuellste) und dann eine git Push --force, um den Remote Repo zu aktualisieren um nur meine letzte goldene Verpflichtung zu enthalten.

Danach, wenn es Zeit für mich ist, die Änderungen für diese Rebase-Commit zu begehen, sieht es aus wie git reagiert etwas seltsam auf meine Anfrage. Es gibt ein paar Dateien, die es sagt

both modified:  app/helpers/statistics_helper.rb 
deleted by us:  app/models/referrals/chart.rb 
deleted by us:  app/views/statistics/_referrals.html.haml 
deleted by us:  app/views/statistics/_referrals2.html.haml 
deleted by us:  app/views/statistics/_referrals3.html.haml 

Ich weiß nicht, wie man darauf reagiert. Wenn ich git add die Dateien, die von "von uns gelöscht" vorangestellt sind, wird es diese Dateien löschen?

Antwort

1

Durch das Entfernen der Commits ist es so, als wären sie nie passiert. Wenn Sie Dateien aus früheren Commits hinzugefügt haben, die gerade entfernt wurden, werden diese Dateien ebenfalls entfernt. Das ist wahrscheinlich, während Sie diese Nachricht sehen. Dies wird wahrscheinlich auch Änderungen an bereits vorhandenen Dateien entfernen, die Sie als Teil Ihres Endergebnisses haben wollten. Ich denke, dass Sie Rebase falsch verwenden.

Wenn am Ende Ihres letzten Commits alles in dem Zustand ist, den Sie wollen, sollten Sie einfach Squash Ihre letzten Commits stattdessen. Sie können dies auf verschiedene Arten tun. Verwenden Sie rebase -i wie Sie und s oder squash anstelle von edit für alle Commit-Zeilen mit Ausnahme der ersten tun.

Der andere Weg, es zu tun wäre:

git reset --soft HEAD~<N> 
git commit 

Wo <N> die Zahl der Commits ist wieder da Sie quetschen müssen.