Zacząłem współpracować z kilkoma przyjaciółmi nad projektem i używają repozytorium git heroku.
Sklonowałem repozytorium kilka dni temu i od tego czasu wprowadzili pewne zmiany, więc próbuję uzyskać najnowsze aktualizacje
Uruchomiłem git pull --rebase
polecenie zgodnie z opisem tutaj (Czy to właściwy sposób?): Https://devcenter.heroku.com/articles/sharing#merging-code-changes
Otrzymuję następujący błąd:
$ git pull --rebase
Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.
Domyślam się, że majstrowałem przy kodzie i teraz chce, żebym albo zatwierdził, albo odrzucił (czy to oznacza stash?) Zmiany. Czy to się właśnie dzieje? Jeśli tak jest, chciałbym odrzucić wszelkie zmiany, które mogłem wprowadzić i po prostu pobrać zaktualizowany kod z repozytorium git.
Masz pojęcie, co mogę zrobić?
git push -f
Jeśli chcesz zachować zmiany robocze podczas wykonywania ponownego bazowania, możesz użyć
--autostash
. Z dokumentacji :Na przykład:
źródło
git config --global rebase.autoStash true
Nie musisz przechodzić przełącznika.rebase.autostash
jest dostępna od wersji 2.6).git rebase --interactive
!Przeciąganie z rebase jest ogólnie dobrą praktyką.
Jednak nie możesz tego zrobić, jeśli twój indeks nie jest czysty, tj. Wprowadziłeś zmiany, które nie zostały zatwierdzone.
Możesz to zrobić, aby obejść ten problem, zakładając, że chcesz zachować zmiany:
git stash
git stash apply stash@{0}
lub prostszejgit stash pop
źródło
git stash pop
zastosować ostatnio zapisane zmiany i uniknąć zapamiętywania dłuższychapply stash@{0}
..bashrc
(lub jakimkolwiek innym miejscu ):alias stashpull='git stash; git pull; git stash pop'
Najpierw zacznij od
git status
Sprawdź, czy masz jakieś oczekujące zmiany. Aby je odrzucić, biegnij
źródło
To działa dla mnie:
źródło
Zawsze możesz to zrobić
i albo (a) nie dostaniesz żadnych zmian, jeśli masz niezatwierdzone zmiany, które kolidują z wcześniejszymi zmianami lub (b) ten sam efekt, co stash / pull / apply: rebase, aby wprowadzić najnowsze zmiany z HEAD i pozostały niezatwierdzone jak jest.
źródło
Kiedy zmiana niestopowa jest spowodowana tym, że git próbuje naprawić konwencje eol w pliku (jak zawsze w moim przypadku), żadna ilość ukrywania, wyewidencjonowywania lub resetowania nie sprawi, że zniknie.
Jednakże, jeśli zamiarem jest naprawdę do rebase i ignorować Unstaged zmieniło, to co mogę zrobić, to usunąć gałąź lokalnie następnie sprawdź to ponownie.
Voila! Jeszcze mnie to nie zawiodło.
źródło
Jeśli chcesz automatycznie przechowywać swoje zmiany i usuwać je przy każdej ponownej bazie, możesz to zrobić:
źródło
--autostash
skoro może to być po prostu ... automatyczne?Wykonaj poniższe kroki
Z elementu / gałęzi (wprowadź poniższe polecenie)
git checkout master
git pull
funkcja git checkout / nazwa gałęzi
git merge master
źródło