Chcę podzielić pierwsze zatwierdzenie w repozytorium git, ale nie mogę użyć rebase, aby to zrobić, ponieważ wymagany jest węzeł nadrzędny. Znalazłem Edit the root commit in Git? przydatne do modyfikowania pierwszego zatwierdzenia, ale nie dzielenia go. Jak mogę to podzielić?Dzielenie pierwszego zatwierdzenia w git
Odpowiedz
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ł.
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.
- 1. Zmiana pierwszego zatwierdzenia projektu za pomocą Git?
- 2. Jak cofnąć ditmę git rm -rf bez pierwszego zatwierdzenia?
- 3. Drukuj komunikat zatwierdzenia danego zatwierdzenia w git
- 4. W jaki sposób mogę dokonać ponownego przypisania do pierwszego zatwierdzenia?
- 5. Pchanie bez zatwierdzenia w Mercurial lub Git
- 6. Usuń puste zatwierdzenia w git
- 7. Git: pobranie określonego zatwierdzenia
- 8. Git usuń historię zatwierdzenia
- 9. Git - Co to jest identyfikator zatwierdzenia git?
- 10. zmiana komentarza git zatwierdzenia pushed
- 11. git wróć do pewnego zatwierdzenia
- 12. Otrzymuj rodziców zatwierdzenia scalenia w git
- 13. Numer wydania Jira w komunikacie zatwierdzenia git
- 14. pobierz wiadomość zatwierdzenia w git hook
- 15. Dlaczego data zatwierdzenia w git jest nieaktualna?
- 16. Połącz lokalne zatwierdzenia Git w jedno zatwierdzenie dla git-svn
- 17. Jak wypisać log git tylko z pierwszego wiersza?
- 18. Uzyskaj wszystkie zatwierdzenia git od ostatniego tagu
- 19. git: Jak wyświetlić zatwierdzenia do pojedynczego oddziału
- 20. Zatwierdzenie zatwierdzenia kodu JIRA dla 'git'
- 21. Odgałęzienie Git do jednego nowego zatwierdzenia
- 22. Jak zapewnić przygotowaną wiadomość zatwierdzenia git?
- 23. Git zatwierdza komunikat zatwierdzenia i nic więcej?
- 24. Zmiana komunikatu zatwierdzenia Git przed scaleniem
- 25. Git dowiedz się ostatniego zatwierdzenia, pchnąłem
- 26. Git pull do pewnego zatwierdzenia (tag)
- 27. Jak edytować wiadomość zatwierdzenia git merge
- 28. Git: przenieś konkretne zatwierdzenia do innej gałęzi
- 29. git opisują dwa znaczniki tego samego zatwierdzenia
- 30. Zmiana starej wiadomości zatwierdzenia na Git
(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. –
@ 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. –