Git pull into wrong branch
Ja i jeden inny programista łączyliśmy i przenosiliśmy naszą pracę do innej gałęzi zwanej toolwork. W ten sposób nie wpłynęliśmy na resztę drużyny. Moja gałąź tematyczna nazywała się DPM-93, a mój przepływ pracy w git był taki.
# do some work
git checkout DPM-93
git commit -m "did some work"
# catch up
git checkout toolwork
git pull origin toolwork
# rebase my topic branch
git checkout DPM-93
git rebase toolwork
# merge and push my changes
git checkout toolwork
git merge --no-ff DPM-93
git push origin toolwork
To w większości działało dobrze, dopóki nie przypadkowo wydałem tych komend git
git checkout toolwork
git pull origin master
W tym momencie pojawiło się kilka nowych rzeczy w branch toolwork i nie jestem pewien, jak się ich pozbyć, usuwając Mój obszar roboczy i ponownie klonując z repo.
Czy jest jakiś sposób, aby to cofnąć do stanu przed pociągnięciem?5 answers
git reset --hard ORIG_HEAD
Z git reset
strona podręcznika (Jeśli po prostu wykonałeś pull):
Cofnij połączenie lub pociągnij
$ git pull (1)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset --hard (2)
$ git pull . topic/branch (3)
Updating from 41223... to 13134...
Fast-forward
$ git reset --hard ORIG_HEAD (4)
- próba aktualizacji z upstream spowodowała wiele konfliktów; nie byłeś gotowy poświęcić dużo czasu na scalanie w tej chwili, więc zdecydowałeś się zrobić to później.
- "
pull
" nie wykonał commita merge, więc "git reset --hard
", który jest synonimem "git reset --hard HEAD
" czyści bałagan z pliku indeksu i Drzewa roboczego.- Połącz gałąź tematyczną z bieżąca gałąź, co zaowocowało szybkim rozwojem.
- ale zdecydowałeś, że gałąź tematyczna nie jest jeszcze gotowa do użytku publicznego.
"pull" lub "merge" zawsze pozostawia oryginalną końcówkę bieżącej gałęzi wORIG_HEAD
, Resetowanie twardego powoduje powrót pliku indeksu i Drzewa roboczego do tego stanu i zresetowanie wierzchołka gałęzi do tego commita.
Zobacz HEAD
oraz ORIG_HEAD
Po Więcej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:16
Reset gałęzi master:
git reset --hard origin/master
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-15 03:16:05
Możesz użyć git log
, aby znaleźć SHA-1 rewizji, którą chcesz mieć na czele swojej gałęzi toolwork
, a następnie użyć git reset --hard <SHA1>
, aby przywrócić kopię roboczą do tej rewizji.
Cofnij wszystko! I przeczytaj ponownie stronę podręcznika dla git reset
, aby upewnić się, że robi to, co chcesz.
EDIT: o tak, ORIG_HEAD powinno zawierać właściwe SHA-1. Ale najpierw sprawdź.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-22 16:29:57
Zrobiłem ostatnio podobną rzecz i zastosowałem prostsze rozwiązanie oparte na tej odpowiedzi .
Zakładając, że stan gałęzi toolwork
, do której chcesz powrócić został przesunięty do origin
, możesz po prostu zrobić
git fetch origin
git reset --hard origin/toolwork
W moim przypadku wartość ORIG_HEAD
została nadpisana przez inne scalenie w innej gałęzi i nie musiałem się martwić o szukanie poprawnego commita w dzienniku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:19
To, co dla mnie zadziałało, to po prostu
git reset --hard
Zrobiłem to z lokalnego repozytorium z niefortunnym merge / pull:
Laptop@LAPTOP-xxxxxxxx /d/Google Drive/xxxxxxx/Github/xxxxx (staging_ec2|MERGING)
$ git reset --hard
HEAD is now at 2d5a511 [last commit comment]
Laptop@LAPTOP-xxxxxxxx /d/Google Drive/xxxxxxx/Github/xxxxx (staging_ec2)
$
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-16 14:04:07