Oczekuję, że git checkout <commit>
będzie migać zarówno działające drzewo, jak i indeks do wersji <commit>
. Jednak w niektórych przypadkach zachowa aktualne zmiany zarówno w drzewie roboczym, jak i indeksie. Na przykład:Git: git checkout ze zmodyfikowanym drzewem roboczym i indeksem
git branch br1
git branch br2
git checkout br1
<make change M1 to file foo>
git add foo
<make change M2 to file foo>
git checkout br2
Teraz wszystkie zmiany drzewo/index robocze wykonane w branży br1
są przechowywane w branży br2
, jak git status
na br2
nie daje czystą wiadomość. Domyślam się, że to dlatego, że głowa br1
i br2
ma oryginalnie tę samą wersję pliku foo
, a Git może to automatycznie wykryć.
Pytanie:
- Kiedy Git zdecydować nie migać drzewo pracy i indeks? Czy są jakieś inne narożne przypadki?
To nie jest przypadek narożny, chodzi o to, że przed podjęciem decyzji możesz zdecydować, czy chcesz podjąć zobowiązanie w nowym oddziale. Dopóki zmiana z jednej gałęzi na drugą nie zastąpi żadnych zmodyfikowanych plików/spowoduje problemy z git indeksu po prostu przejdzie do gałęzi. –
@ X-Istence Ale jak git decyduje ** nie spowoduje problemów **? – Cyker