Visual Studio Code làm thế nào để giải quyết xung đột hợp nhất với git?


107

Tôi đã cố gắng hợp nhất chi nhánh của mình với một chi nhánh khác và xảy ra xung đột khi hợp nhất. Trong Visual Studio Code (phiên bản 1.2.1), tôi đã giải quyết tất cả các vấn đề, tuy nhiên khi tôi cố gắng cam kết, nó vẫn đưa ra cho tôi thông báo sau:

Trước tiên, bạn nên giải quyết các thay đổi chưa được hợp nhất trước khi thực hiện các thay đổi của mình.

Tôi đã thử googling nó nhưng tôi không thể tìm ra lý do tại sao nó không cho phép tôi thực hiện các thay đổi của mình, tất cả các xung đột đã biến mất.


1
Mặc dù những gì bạn đã nói là đúng, nhưng nó không giải quyết được vấn đề trong câu hỏi. Tôi đã tuyên bố rõ ràng rằng tôi đã giải quyết tất cả các xung đột hợp nhất trong câu hỏi.
annedroiid

Câu trả lời:


111

Với VSCode, bạn có thể dễ dàng tìm thấy các xung đột hợp nhất với giao diện người dùng sau. nhập mô tả hình ảnh ở đây

(nếu bạn không có thanh trên cùng, hãy đặt "editor.codeLens": truetrong Tùy chọn người dùng)

Nó cho biết thay đổi hiện tại mà bạn có và thay đổi sắp tới từ máy chủ. Điều này giúp bạn dễ dàng giải quyết xung đột - chỉ cần nhấn các nút ở trên <<<< HEAD.

Nếu bạn có nhiều thay đổi và muốn áp dụng tất cả chúng cùng một lúc - hãy mở bảng lệnh (View -> Command Palette) và bắt đầu nhập kết hợp - nhiều tùy chọn sẽ xuất hiện bao gồm Merge Conflict: Accept Incoming, v.v.


1
bạn đã nhận được bản cập nhật mới nhất! i sẽ hiển thị trong mỗi dòng
Sajeetharan


1
Làm thế nào để có được các hợp nhất này, giải quyết các tùy chọn xung đột trong mã studio trực quan.
user630209

1
làm thế nào để kích hoạt điều đó, bất kỳ phím tắt nào ?. Tôi không thấy tùy chọn đó trong tệp xung đột của mình.
user630209

1
@RyeGuy Các tùy chọn này được hiển thị thông qua CodeLens, vì vậy bạn có CodeLens được bật (xem code.visualstudio.com/Docs/editor/… ).
Geri Borbás

73

Sau khi thử và sai, tôi phát hiện ra rằng bạn cần phân loại tệp có xung đột hợp nhất, sau đó bạn có thể cam kết hợp nhất.


1
Vâng chính xác. Bất kỳ cam kết nào, cho dù đó là xung đột hợp nhất hay cam kết cục bộ của bạn mà bạn đang cố gắng thúc đẩy cần phải được tổ chức trước khi bạn có thể đẩy cam kết đó.
surendrapanday

1
Đối với những người bối rối nếu git add .không phân loại tất cả các tệp, hãy kiểm tra xem bạn có đang ở trong thư mục gốc của dự án hay không. Đã đến lúc nào đó tôi mới hiểu ra. Sau đó, git add .sắp xếp tất cả các tệp và sau đó nó cho phép tôigit merge --continue
bensadiku

Và sau khi giải quyết xung đột hợp nhất, trước tiên bạn phải LƯU tệp bị xung đột trước khi thực hiện các thay đổi đã hợp nhất.
nclark

22

Đối với những người đang gặp khó khăn trong việc tìm kiếm các "nút hợp nhất".

Biểu tượng bóng đèn nhỏ với các tùy chọn hợp nhất chỉ hiển thị nếu bạn nhấp chính xác vào "điểm đánh dấu xung đột hợp nhất"

<<<<<<<

Các bước (trong VS Code 1.29.x):


19
  1. Nhấp vào nút "Kiểm soát Nguồn" ở bên trái.
  2. Xem THAY ĐỔI MERGE trong thanh bên.
  3. Các tệp đó có xung đột hợp nhất.

Mã VS> Kiểm soát nguồn> Thay đổi hợp nhất (Ví dụ)


1
Tôi đã từng có các tùy chọn "Chấp nhận thay đổi hiện tại | Chấp nhận thay đổi sắp tới ..." nhưng bây giờ các tùy chọn này vừa biến mất khỏi dòng, bất kỳ ý tưởng nào làm thế nào để hiển thị lại các tùy chọn này?
jet_choong

15

Thông báo lỗi bạn nhận được là do Git vẫn nghĩ rằng bạn chưa giải quyết được xung đột hợp nhất. Trên thực tế, bạn đã có, nhưng bạn cần nói với Git rằng bạn đã làm điều này bằng cách thêm các tệp đã giải quyết vào chỉ mục.

Điều này có tác dụng phụ là bạn thực sự có thể chỉ thêm tệp mà không giải quyết xung đột và Git sẽ vẫn nghĩ rằng bạn có. Vì vậy, bạn nên siêng năng đảm bảo rằng bạn đã thực sự giải quyết được các xung đột. Bạn thậm chí có thể chạy bản dựng và kiểm tra mã trước khi bạn cam kết.


3

Đối với Mã VS 1.38 hoặc nếu bạn không thể tìm thấy bất kỳ nút "bóng đèn" nào. Hãy chú ý đến văn bản màu xám ở trên các xung đột; có một danh sách các hành động bạn có thể thực hiện.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.