2010-09-12 12 views

Odpowiedz

10

Możesz po prostu wykonać dokładnie ten sam proces w pytaniu, z którym się łączyłeś, ale po wyewidencjonowaniu polecenia root możesz użyć git commit --amend, aby zmodyfikować oryginalny commit, a następnie git commit, aby dokonać dodatkowego zatwierdzenia, zanim przejdziesz dalej. Polecenie rebase.

W zależności od tego, jak chcesz podzielić zatwierdzeń można użyć git rm --cached usunąć pliki, które chcesz dodać co drugi popełnić przed pierwszym git commit --amend i edytować wszystkie pliki, które chcesz wyglądać inaczej przed wywołaniem git add na tych plikach, ponownie, zanim zadzwonisz pod numer git commit --amend.

Po wywołaniu git commit --amend, aby upewnić się, że popełniają dokładnie stanu pierwotnego korzenia popełnić można nazwać:

git checkout <sha1-of-original-root> -- . 

przed wywołaniem git commit aby drugi popełnić korzenia podzielonym popełnił.

+1

(przepisany) Nie chcesz tutaj "git reset --hard". Możesz użyć 'git reset - .', ale to nie" przywróci "działającego drzewa, tylko indeks. Prawdopodobnie najlepszym pomysłem jest 'git checkout - .' który zaktualizuje indeks i drzewo robocze, ale nie HEAD (pozostawiając cię gotowym do zatwierdzenia drugiej części zatwierdzenia split (original root)) . Główną ideą jest to, że oba * reset * i * checkout * zmienią HEAD, chyba że podasz im argument ścieżki. –

+0

@ Chris Johnsen: Masz absolutną rację. Miałem na myśli dwustopniowy reset, ścieżkę, a następnie "--hard", ale potem tak naprawdę tego nie napisałem. Rozwiązanie do kasy jest lepsze. –

2

Można użyć opcji --root powiedzieć rebase które chcą przepisać root/pierwszy popełnić:

$ git rebase --interactive --root 

Następnie korzeń popełnić pojawi się na liście rebase TODO, można wybrać, aby edytować to:

edit <root commit sha> <original message> 
pick <other commit sha> <message> 
... 

to wyjaśnienie --root z the Git rebase docs:

Rebase wszystkie zatwierdzenia dostępne od <branch>, zamiast ograniczania ich za pomocą <upstream>. To pozwala na ponowne umieszczenie root commitów w oddziale.

Powiązane problemy