Visual Studio Code, jak rozwiązywać konflikty scalania z git?

112

Próbowałem połączyć moją gałąź z inną gałęzią i wystąpił konflikt scalania. W Visual Studio Code (wersja 1.2.1) rozwiązałem wszystkie problemy, jednak kiedy próbuję zatwierdzić, wyświetla mi się następujący komunikat:

Przed zatwierdzeniem należy najpierw rozwiązać niescalone zmiany.

Próbowałem google, ale nie mogę się dowiedzieć, dlaczego nie pozwala mi to wprowadzić zmian, wszystkie konflikty zniknęły.

annedroiid
źródło
1
Chociaż to, co powiedziałeś, jest poprawne, nie rozwiązuje to problemu w pytaniu. Wyraźnie stwierdziłem, że rozwiązałem już wszystkie konflikty dotyczące scalania w tym pytaniu.
annedroiid

Odpowiedzi:

115

Dzięki VSCode możesz łatwo znaleźć konflikty scalania za pomocą następującego interfejsu użytkownika. wprowadź opis obrazu tutaj

(jeśli nie masz górnego paska, ustaw go "editor.codeLens": truew Preferencjach użytkownika)

Wskazuje bieżącą zmianę, którą masz i zmianę przychodzącą z serwera. Ułatwia to rozwiązywanie konfliktów - wystarczy nacisnąć przyciski powyżej <<<< HEAD.

Jeśli masz wiele zmian i chcesz zastosować je wszystkie naraz - otwórz paletę poleceń (Widok -> Paleta poleceń) i zacznij pisać scal - pojawi się wiele opcji, w tym Merge Conflict: Accept Incomingitp.

Sajeetharan
źródło
1
czy otrzymałeś najnowszą aktualizację! pokażę w każdej linii
Sajeetharan
1
Jak uzyskać te scalenia, rozwiąż konflikty w kodzie programu Visual Studio.
user630209
1
jak to włączyć, dowolny skrót? Nie widzę tej opcji w moim pliku konfliktu.
user630209
1
@RyeGuy Te opcje są wyświetlane przez CodeLens, więc musisz włączyć CodeLens (patrz code.visualstudio.com/Docs/editor/ ... ).
Geri Borbás
80

Po próbach i błędach odkryłem, że musisz przygotować plik, w którym występuje konflikt scalania, a następnie możesz zatwierdzić scalanie.

annedroiid
źródło
1
Tak, poprawnie. Każde zatwierdzenie, niezależnie od tego, czy jest to konflikt scalania, czy też lokalne zatwierdzenie, które próbujesz wypchnąć, musi zostać ustawione w fazie, zanim będziesz mógł wypchnąć to zatwierdzenie.
surendrapanday
1
Dla tych, którzy są zdezorientowani, jeśli git add .nie przygotują wszystkich plików, sprawdź, czy jesteś w katalogu głównym projektu. Zajęło mi trochę czasu, zanim to rozgryzłem. Potem git add .git merge --continue
wystawiłem
Po rozwiązaniu konfliktu scalania należy najpierw ZAPISZ plik będący w konflikcie przed umieszczeniem scalonych zmian.
nclark
22

Dla tych, którzy mają trudności ze znalezieniem „przycisków scalania”.

Mała ikona światła z opcjami scalania pojawia się tylko wtedy, gdy klikniesz precyzyjnie na „znacznik konfliktu scalania”

<<<<<<<

Kroki (w VS Code 1.29.x):

B12Toaster
źródło
21
  1. Kliknij przycisk „Kontrola źródła” po lewej stronie.
  2. Zobacz ZMIANY ŁĄCZENIA na pasku bocznym.
  3. Te pliki mają konflikty scalania.

VS Code> Source Control> Merge Changes (przykład)

Geoffrey Hale
źródło
1
Kiedyś miałem opcje „Zaakceptuj bieżącą zmianę | Zaakceptuj nadchodzącą zmianę…”, ale teraz te opcje po prostu zniknęły z wiersza, czy masz jakiś pomysł, jak ponownie wyświetlić te opcje?
jet_choong
15

Komunikat o błędzie, który otrzymujesz, jest wynikiem tego, że Git nadal myśli, że nie rozwiązałeś konfliktów scalania. W rzeczywistości już to zrobiłeś, ale musisz powiedzieć Gitowi, że zrobiłeś to, dodając rozwiązane pliki do indeksu.

Ma to taki efekt uboczny, że w rzeczywistości możesz po prostu dodać pliki bez rozwiązywania konfliktów, a Git nadal pomyśli, że tak. Dlatego należy pilnie upewnić się, że konflikty zostały naprawdę rozwiązane. Możesz nawet uruchomić kompilację i przetestować kod przed zatwierdzeniem.

Tim Biegeleisen
źródło
4

Dla VS Code 1.38 lub jeśli nie możesz znaleźć żadnego przycisku "żarówka". Zwróć szczególną uwagę na wyszarzony tekst nad konfliktami; jest lista działań, które możesz podjąć.

Qiang Li
źródło