Jestem bardzo nowy w git i zastanawiałem się, jak powinienem zająć się scalaniem, w którym w lokalnym repozytorium usunąłem kilka plików z gałęzi głównej, ale te pliki istnieją w gałęzi zdalnej.
Po wykonaniu git-merge pokazuje konflikty, które wystąpiły.
Używając git gui, pokazuje, że plik lokalny został usunięty, podczas gdy zdalny plik gałęzi ma zawartość.
Jak zapobiec konfliktom tych plików? Czy istnieje prosty sposób korzystania z git gui?
Wielkie dzięki
Odpowiedzi:
Powinieneś rozwiązać konflikty według własnego uznania. Jeśli plik naprawdę ma zostać usunięty i zamierzasz opublikować tę zmianę w miejscu pochodzenia, usuń ją ponownie:
Jeśli plik ma być nadal śledzony, dodaj go (wersja w drzewie roboczym będzie wersją z pochodzenia):
Po wykonaniu jednej z tych czynności w celu rozwiązania konfliktu zatwierdź połączenie.
źródło
cd
do katalogu igit rm *.ext
. Twoja powłoka (nie Git) rozszerza się*.ext
na wszystkie pasujące nazwy plików.git rm
nie ma-i
flagi.git rm *-suffix.ext
? Ta sama różnica. Jeśli masz problem ze zrozumieniem, jak używać symboli wieloznacznych powłoki, zapytaj na unix.stackexchange.com. Jeśli wiesz na pewno, że to, czego chcesz, nie może być zrobione z globbingiem, użyjrm -i
i podążaj za nimi,git add -u
aby odebrać skreślenia.-s recursive -X ours
dlaczego nadal konieczne jestgit rm
igit add
?Jako dodatkowa wskazówka oprócz zaakceptowanej odpowiedzi, w „usuniętym przez nas” , jeśli chcesz zobaczyć zmiany wprowadzone w usuniętym pliku, abyś mógł zastosować te zmiany w innym miejscu, z którego możesz skorzystać:
Jeśli jest to scenariusz „usunięty przez nich” i chciałbyś zobaczyć zmiany, aby móc je zastosować w innym miejscu, możesz użyć:
źródło
git diff mybranch@{1}...origin/master -- path/to/file
git diff --base
(zobacz moją drugą odpowiedź).W graficznym interfejsie użytkownika Git wybierz plik będący w konflikcie, a następnie kliknij prawym przyciskiem myszy główny obszar tekstowy, w którym wyświetlany jest tekst będący w konflikcie.
W wyświetlonym menu kontekstowym możesz wybrać opcję „Zdalny” lub „Lokalny”. Jeśli więc plik został usunięty zdalnie, możesz wybrać opcję „Zdalnie”, aby propagować usuwanie lokalnie i odwrotnie.
Zajęło mi to miesiąc, zanim to rozgryzłem ... byłoby miło, gdyby graficzny interfejs użytkownika Git rzeczywiście miał dokumentację ...
źródło
Najlepiej oceniana odpowiedź skupia się na sposobie rozwiązania konfliktu.
Wcześniej prawdopodobnie chciałbyś wiedzieć, co zmienił pilot w lokalnie usuniętych plikach.
Aby to zrobić, możesz zobaczyć zmiany za pomocą:
Z https://git-scm.com/docs/git-diff#Documentation/git-diff.txt--1--base
źródło
git diff --base
stackoverflow.com/a/60484874/470749W EGit też znalazłem problemy. Moje rozwiązanie brzmiało:
źródło
Jak podano w tej przydatnej odpowiedzi na powiązane pytanie , możesz użyć,
git mergetool
aby otworzyć okno dialogowe, w którym możesz wybrać, czy chcesz pobrać zmodyfikowaną, czy usuniętą wersję pliku (ów).źródło