2014-04-10 7 views
17

Użyłem git init do utworzenia nowego repozytorium, a następnie wykonałem trzy zatwierdzenia. Teraz chcę dokonać ponownego wyboru, aby wrócić i zmienić moje pierwsze zatwierdzenie, ale jeśli wykonam git rebase -i HEAD~3, to narzeka! Jeśli spróbuję tego samego z HEAD~2, to działa, ale pozwala mi tylko zmienić ostatnie dwa zatwierdzenia.W jaki sposób mogę dokonać ponownego przypisania do pierwszego zatwierdzenia?

Jak mam się odwołać do "zatwierdzenia przed wprowadzeniem jakichkolwiek zatwierdzeń" lub wrócić i wstawić pusty commit?

+0

Darnit, dup z http://stackoverflow.com/questions/11987914/how-do-i-reword-the-very-first-git-commit-message – lxs

Odpowiedz

28

Prosty sposób, z niedawnym-wystarczająco git (to było się przez długi czas, więc trzeba mieć to):

git rebase -i --root 

drugi prosty sposób, jak twalberg noted in a comment, jest użycie git checkout --orphan skonfigurować, aby nowy korzeń popełnienia, który można skopiować stare zobowiązuje się na górze. (W każdym razie tak się dzieje. rebase -i --root ostatecznie robi to wewnętrznie.)

0

O ile wiem, nie można odwołać się do "zatwierdzenia przed wprowadzeniem jakichkolwiek zatwierdzeń". Nie jest też łatwo dodać commit bez rodzica. Jednak można zmienić początkowe popełnić następnie wybrać oryginalny powrotem:

$ git log --pretty=oneline 
333333 commit three 
222222 commit two 
111111 commit one 
$ git reset --hard 111111 
$ rm -fr * 
$ git commit -a --amend --allow-empty -m "Initial commit" 
$ git cherry-pick 111111 222222 333333 
$ git log --pretty=oneline 
333333 commit three 
222222 commit two 
111111 commit one 
2c5e01 Initial commit 
+0

Właściwie, z nowymi wersjami 'git', możesz' git checkout - orphan newbranch' stworzyć nowy oddział, którego pierwszy commit nie będzie miał rodziców ... Od tego momentu 'git rebase --onto' lub seria 'git cherry-pick' (NB: Nie sądzę, że' git pick' jest rzeczą ...) może być używana do kopiowania innych uprawnień użytkownika innego niż root ... – twalberg