Nie sądzę, aby istniał sposób na symulowanie tego, co się stanie, dopóki nie spróbujesz scalenia. Jeśli jednak upewnisz się, że dane wyjściowe programu git statussą puste przed scaleniem, możesz po prostu go wypróbować. Jeśli wystąpią konflikty, możesz natychmiast wrócić do stanu, w którym byłeś wcześniej:
git reset --merge
Od wersji Git 1.7.4 możesz również przerwać scalanie, wykonując:
@samirahmed: @Amber odpowiedział na pytanie bardziej dosłownie, oczywiście, chociaż --no-commitnadal zmieniasz indeks i drzewo robocze, co nie jest dokładnie „bez wprowadzania żadnych zmian” :) Chodzi mi o to, że kiedy ludzie pytają tego rodzaju pytanie, to generalnie dlatego, że nie są świadomi, że najlepszym sposobem, aby zobaczyć, jak przebiegnie scalanie, jest po prostu spróbować scalenia , często dlatego, że nie są świadomi tego, jak łatwo jest wrócić do stanu, w którym byli wcześniej gdyby okazały się problemy.
Nie wiem, czy to zostało dodane w nowszej wersji gita, ale w dokumentacji (1.8.4) jest napisane " git merge --abortjest równoważne z git reset --mergekiedy MERGE_HEADjest obecne", więc cokolwiek jest łatwiejsze do zapamiętania :)
Możesz użyć git merge --no-commit aby zapobiec faktycznemu zatwierdzeniu scalania, a jeśli nie podoba ci się, jak działa scalanie, po prostu zresetuj do pierwotnej głowy.
Jeśli zdecydowanie nie chcesz sfinalizować scalania, nawet jeśli jest to szybkie przewijanie do przodu (a zatem z definicji nie ma konfliktów), możesz również dodać --no-ff.
Możesz także robić git checkout --detachi testować, co chcesz. Później, jeśli chcesz zachować zmiany, zrób to git checkout -b new_branch. A jeśli chcesz odrzucić swoje zmiany, wyewidencjonuj dowolną gałąź ( git checkout master).
Jeśli topic_branchjest duży (jak to prawdopodobnie ma miejsce w przypadku tego pytania w pierwszej kolejności), diff masterwynik jest prawdopodobnie zbyt duży, abyś mógł się przyjrzeć, jeśli scalanie ma powodować konflikty.
Odmawiaj scalenia i wyjdź ze statusem niezerowym, chyba że bieżący HEAD jest już aktualny lub scalenie można rozwiązać jako szybkie do przodu.
To naprawdę nie jest symulacja, ponieważ nastąpi szybkie połączenie w przypadku braku konfliktów między dwiema gałęziami. Ale w przypadku konfliktów zostaniesz poinformowany i nic się nie stanie.
Mogłem ostatnio używać git merge --abort. Można tego jednak użyć tylko w przypadku konfliktu scalania. Jeśli jesteś pewien, że nie chcesz zatwierdzać, użyj innych wymienionych powyżej metod.
Jakie inne metody wymienione powyżej? Wszyscy wspominają git merge --abort. Powinieneś w przyszłości potwierdzić swoją odpowiedź, określając, kto napisał odpowiedź, do której się odnosisz.
Nie wiem dokładnie, czy to jest twój przypadek , ale twoje pytanie pamiętaj, że czasami uruchamiam funkcję, zobowiązuję się w ciągu dni i wiele razy scalam na nim development.
W tym momencie tracę kontrolę nad dokładnymi plikami, które zmieniłem i dowiem się o tym dopiero, gdy moja funkcja zostanie zamknięta, a mój kod zacznie się rozwijać.
W tym przypadku dobrym sposobem, aby dowiedzieć się, jakie modyfikacje zostały wprowadzone (nie inne od scalenia), jest użycie Sourcetree.
Musisz kliknąć prawym przyciskiem na gałęzi podstawowej i wybrać Diff Against Current:
Następnie sourcetree pokaże ci wszystkie modyfikacje, które zostaną scalone, jeśli scalisz swoją gałąź z gałęzią podstawową.
Oczywiście nie pokaże konfliktów, ale jest użytecznym narzędziem przy fuzjach.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.