2017-03-17 4 views
2

Wie kann ich die zweitletzte Push-Commit mit GIT ändern, ich muss einige Dateien aus dem erwähnten Commit löschen, und ich möchte das letzte Commit beibehalten.GIT: Inhalt des zweitletzten Push-Commit ändern

Was ich bisher tat:

git reset --soft HEAD^ 
git reset --soft HEAD^ # two times 

git reset HEAD .idea/ # and the same for other directories 

git add -A 
git commit --amend 
+0

Mögliches Duplikat http://stackoverflow.com/questions/179123/how-to-modify-existing-unpushed-commits –

+0

Möglichen Duplikat [So ändert bestehende, nicht gedrückte Commits?] (Http://stackoverflow.com/questions/179123/how-to-modify-existing-unpushed-commits) –

Antwort

2

Was brauchen Sie Sie ändern möchten rebase dem Festschreiben zu tun ist.

Schritte:

  1. Holen Sie sich das ID begehen von der Commit Sie ändern möchten.

    git log -2 // here '2' => will display last 2 commits 
    // lets say the commit you wish to change has ID "ededeac" 
    
  2. eine interaktivenRebase Do

    git rebase --interactive ededeac // where "ededeac" is the commit to modify 
    

    Ein Editor wird kommen, mit einer Liste aller Commits seit der von Ihnen gab. Ändern zu edit für das Commit geändert werden musste.

    pick 8c27d78 fixed some bug 
    edit ededeac fixed another bug // here, we changed pick to edit 
    

    Speichern und Ausfahrt. Git wird dann die aufgelisteten Commits wiederholen.

    Für jeden Commit, den Sie bearbeiten möchten, lässt Git Sie in die Shell fallen. Dann können Sie das Commit beliebig ändern.

    // delete/update files 
    git commit --all --amend //here you can change the commit message too 
    // The new changes are added on to the old commit 
    // You can verify that with 'git log' and 'git diff HEAD^' 
    git rebase --continue 
    
  3. Force-Push- zu Herkunft.

    git push origin --force-with-lease 
    

    Sie müssen den Ursprung Push zwingen, da Sie Geschichte umzuschreiben sind.

+0

im zweiten Schritt: 'git Rebase --interactive" Hash der 2 commit "' im Editor habe ich nur einen commit (das entspricht dem ersten Commit, der zweite ist nicht vorhanden) 'Pick 8c27d78 blabla' –

+0

@JaouharMbarek das ist, weil Sie wahrscheinlich eine falsche Commit-ID ausgewählt haben. Versuchen Sie 'git log -10', um Ihre letzten 10 Commits zu sehen, und versuchen Sie es erneut mit der gewünschten Commit-ID. –

+0

danke, dein Vorschlag war hilfreich. –