Git zmiana brancha

0

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 ?

0

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?

1

Masz niezacommitowane zmiany.

0

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ć.

0
Trzeźwy Ogórek napisał(a):

Masz niezacommitowane zmiany.

Czyli -f daje tylko tyle, że zmienia brancha ignorując niezacomittowane zmiany ?

2

Ja obstawiam, że -f to force i straciłeś te zmiany. Trzeba było je zacommitować albo zestashować.

3
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)

  1. przechować zmiany na później - czyli zrobić git stash i wtedy zmienić brancha
  2. Zrobić commit Twoich zmian i dopiero zmienić (zmiany będą jedynie w opuszczanym branchu)
  3. -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)
0

Polecam komenðe git stash :)

0

miales zmiany w plikach, ktore roznily sie miedzy branczami dlateog byl konflikt, A forcowac jako silver bullet nie polecam :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1