Jestem ciekawy, jak usunąć pierwsze zatwierdzenie w git.Jak usunąć pierwsze zatwierdzenie w git?
Co to jest zmiana przed popełnieniem czegokolwiek? Czy ta wersja ma nazwę lub tag?
Jestem ciekawy, jak usunąć pierwsze zatwierdzenie w git.Jak usunąć pierwsze zatwierdzenie w git?
Co to jest zmiana przed popełnieniem czegokolwiek? Czy ta wersja ma nazwę lub tag?
Dla mnie najbardziej bezpiecznym sposobem jest użycie polecenia update-ref
:
git update-ref -d HEAD
usunie podany odniesienie HEAD
, więc to będzie resetu (cicho, nie będzie tracić swoją pracę) Wszyscy twoi zatwierdzenia obecnego oddziału.
Jeśli to, co chcesz, aby połączyć pierwszą popełnić z drugiej, można użyć polecenia rebase
:
git rebase -i --root
Ostatnim sposobem mogłoby być utworzenie oddziału sierocy, oddział o tej samej treści ale bez popełnienia historii, i zobowiązać się nowe treści na niej:
git checkout --orphan <new-branch-name>
Szkoda, że nie jest to zaakceptowana odpowiedź. Jest również zbyt złe, że większość trafień w google mówi mniej więcej "nie można cofnąć pierwszego zatwierdzenia". To mi się udało. Dzięki! – danielpops
Dzięki @danielpops za wsparcie! Dobrze jest zauważyć, że odpowiedziałem na to pytanie 3 lata później. Git ewoluował w międzyczasie. – tzi
Oddział Sierocińscy załatwił sprawę. Dziękuję Ci! – fanaugen
Nie ma nic przed pierwszym zatwierdzeniem, ponieważ każde zatwierdzenie odnosi się do zatwierdzenia przez rodzica. To sprawia, że pierwsze zatwierdzenie jest specjalne (sierocym zatwierdzeniem), więc nie ma możliwości odwołania się do poprzedniego "stanu".
Jeśli więc chcesz naprawić zatwierdzenie, możesz po prostu git commit --amend
: zmodyfikuje to zatwierdzenie bez tworzenia kolejnego.
Jeśli chcesz po prostu zacząć wszystko od nowa, należy usunąć repozytorium .git
, i uczynić jeszcze jeden z git init
Ta odpowiedź jest niepoprawna: istnieje sposób, aby powrócić do stanu sprzed pierwszy commit. Zobacz poniżej odpowiedź [tzi's] (http://stackoverflow.com/a/32765827/46783). –
Jeśli chcesz zachować inne branże, ale na przykład sprawić, że oddział mistrz zacząć od nowa bez wspólnej historii do drugiej oddziały, jeden bezpieczny sposób na osiągnięcie tego celu jest stworzenie nowego repozytorium i popchnąć zawartość że w stary:
cd ..
git init newrepo
cd newrepo
# make some initial commits
git push ../oldrepo master:newmaster
stwarza „newmaster” oddział w starym repozytorium, z historii, że nie ma wspólnego z dowolne inne gałęzie. Oczywiście, możesz również nadpisać samego mistrza, używając `git push -f '.
Jeśli chcesz zniszczyć wszystkie gałęzie i całą istniejącą zawartość, po prostu uruchom rm -rf .git/
.
Możesz po prostu chcieć edytować swoje pierwsze zatwierdzenie (ponieważ zawsze istnieje pierwsze zatwierdzenie w repozytorium git). Rozważ użycie git commit --amend --reset-author
zamiast zwykłego git commit --amend
.
Innym sposobem można zrobić to:
git checkout dev
git branch -D master
git checkout --orphan master
Oczywiście, wszystko to zależy od Twojego przypadku użycia, ale jeśli masz więcej niż jeden oddział, usunięcie t he .git
katalog nie ma sensu.
Po wykonaniu tej czynności należy usunąć gałąź w pilocie przed jej naciśnięciem. W przeciwnym razie, gdy spróbujesz nacisnąć, otrzymasz ten błąd:! [odrzucone] master -> master (non-fast-forward) - błąd: nie udało się przesłać niektórych odwołań do "[email protected]: r1/r2.git" - wskazówka: aktualizacje zostały odrzucone, ponieważ wskazówka w bieżącym oddziale jest behind - podpowiedź: jego zdalny odpowiednik. Zintegruj zdalne zmiany (np. Podpowiedź: "git pull ...") przed ponownym naciśnięciem ... - Jeśli wykonasz polecenie git, wszystkie zatwierdzenia wrócą. – dxvargas
git checkout --orphan TEMP_BRANCH
git dodać -A
git commit -am "Initial popełnić"
git branch -D master
git branch -m mistrz
git naciśnięciem -f mistrza pochodzenia
Na początek z git, to powinien wiedzieć, że zmiany jest bez znaczenia. Możesz mówić o zatwierdzeniach lub ich względnych SHA. Ponadto, dlaczego chcesz to zrobić? Pierwsze zatwierdzenie jest tym, na czym wszystko jest zbudowane. Możesz zmiażdżyć kilka zatwierdzeń razem, w tym pierwsze zatwierdzenie, które staje się nowym pierwszym zatwierdzeniem, ale co to znaczy nawet usunąć pierwsze zatwierdzenie (lub usunąć ostatnie, ale ostatnie zatwierdzenie)? – Shahbaz
@Shahbaz tak, to jest najlepszy sposób, spójrz na przykład: http://ariejan.net/2011/07/05/git-squash-your-latests-commits-into-one – timaschew
Możesz użyć 'git rebase - i --root'. Aby uzyskać szczegółowe informacje, patrz następująca odpowiedź: http://stackoverflow.com/questions/2246208/change-first-commit-of-project-with-git – MKroehnert