Temat myślałem do teraz ze banalny. Ale sytuacja wygląda w ten sposób: jestem na jakimś tam branchu i w IntelliJ wybieram innego brancha i robię check out as. I nagle dostaje komunikat o merge conflict wtf. Pytanie pierwsze: dlaczego ? Ja chce tylko iść na inną gałąź a nie cokolwiek mergować. Pytanie drugie: w jaki sposób najnormalniej przejść na drugiego brancha żeby nic nie mergowac/modyfikować ? Przez konsole git checkout branch czy może git checkout -f branch ? I czy to drugie jest bezpieczne ?
Git zmiana brancha
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: UK
- Postów: 2235
Nie wiem jak się sprawa ma z użyciem GUI, próbowałeś przez konsolę? Przy zwykłym git checkout branchname nie powinno coś takiego wyskakiwac. Może nie masz konfliktu tylko na aktualnym branchu masz niezacommitowane zmiany?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 415
Tak, właśnie jak dawałem przez konsole git checkout branch to był komunikat o niezakomitowanych zmianach. Wtedy dodaję -f i idzie. Ale wciąż mnie zastanawia dlaczego zmiana brancha przez gui w IntelliJ skutkuje takim bagnem i muszę jakieś konflikty rozwiązywać.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 415
Trzeźwy Ogórek napisał(a):
Masz niezacommitowane zmiany.
Czyli -f daje tylko tyle, że zmienia brancha ignorując niezacomittowane zmiany ?
- Rejestracja: dni
- Ostatnio: dni
Ja obstawiam, że -f to force i straciłeś te zmiany. Trzeba było je zacommitować albo zestashować.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 607
slayer9 napisał(a):
Tak, właśnie jak dawałem przez konsole git checkout branch to był komunikat o niezakomitowanych zmianach. Wtedy dodaję -f i idzie. Ale wciąż mnie zastanawia dlaczego zmiana brancha przez gui w IntelliJ skutkuje takim bagnem i muszę jakieś konflikty rozwiązywać.
Podstawową kwestią jest integralność Twoich danych. W branchu, którym siedziałeś, dokonałeś jakichś zmian. Następnie chciałeś go zmienić na innego - skutkuje to zmianą working tree zwykle (można zmienić brancha bez dotykania working tree, ale to już wyższa szkoła jazdy w gicie). W nowym branchu, te pliki, które zmieniłeś w aktualnym, są inne, wobec tego zmiana working tree mogłaby je nadpisać (tym samym utraciłbyś swoje zmiany). Dlatego dostajesz ten komunikat, ponieważ git nie wie, co chcesz zrobić.
Można np (jak sugerował Trzeźwy Ogorek)
- przechować zmiany na później - czyli zrobić git stash i wtedy zmienić brancha
- Zrobić commit Twoich zmian i dopiero zmienić (zmiany będą jedynie w opuszczanym branchu)
- -f, które wybrałeś siłowo Ci nadpisało Twoje zmiany - w razie czego możesz je odzyskać za pomocą refloga jeszcze (chyba, że masz go wyłączonego, albo nastąpiły po miesiącu lub później)
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Warszawa
- Postów: 3573
Polecam komenðe git stash :)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 470
miales zmiany w plikach, ktore roznily sie miedzy branczami dlateog byl konflikt, A forcowac jako silver bullet nie polecam :)