Làm thế nào để kiểm tra của chúng tôi / của họ trên một tập tin trong magit?


16

Hãy nói rằng tôi có một cuộc xung đột hợp nhất. Tôi thấy một tập tin xung đột như thế này:

Unstaged changes:
    Unmerged   Foo/bar/wibble/plop/elbow.txt

Tôi có thể nhấn tab ở đây để mở các thay đổi và có thể chuyển đến một điểm bên trong tệp để khắc phục bằng tay, nhưng nếu đó là một tệp lớn có nhiều xung đột có thể gây tốn thời gian.

Làm thế nào tôi có thể yêu cầu git, thông qua magit, kiểm tra phiên bản của chúng tôi hoặc của họ để giải quyết xung đột? Tôi có thể sao chép đường dẫn, sau đó sử dụng Shift-:để nhập lệnh git tùy chỉnh, nhưng có vẻ như phải có một phím tắt cho việc này. Tôi không thể thấy bất cứ điều gì rõ ràng trong menu magit hoặc ?cửa sổ bật lên.


3
Mặc dù điều này không trực tiếp trả lời câu hỏi của bạn, nhưng nó có thể hữu ích. Di chuyển điểm trên tệp xung đột vào magit-statusvà nhấn eđể bắt đầu hợp nhất 3 chiều ediff. Một cách khác là trong bộ đệm xung đột, bạn có thể bật smerge-modeđể làm nổi bật xung đột và thực hiện hợp nhất tương tác ngay trong bộ đệm của bạn (không phải ediff). Ràng buộc khóa tiền tố cho smerge-modecác lệnh liên quan là C-c ^; bạn có thể nhấn C-c ^ C-hđể xem tất cả các ràng buộc chính.
Từ Đô

Tôi cũng không tìm thấy "của chúng ta" hay "của họ" trong tài liệu. magit.github.io/master/magit.html#Pushing-and-Pulling
Ehvince

1
Có vẻ như một câu hỏi hay để mở một yêu cầu tính năng?
Ehvince

1
ý tưởng hay @Ehvince, thực hiện: github.com/magit/magit/issues/1643
tenpn

1
Oooh: trong phiên bản tiếp theo của pháp sư, bạn có thể kvào một tòa án và chọn phiên bản nào sẽ giữ. Nghe tuyệt đó! github.com/magit/magit/issues/1643
tenpn

Câu trả lời:


16

Tôi không chắc chắn khi tính năng này được thêm vào, nhưng nó thực hiện điều này một cách hoàn hảo:

  1. Hợp nhất một nhánh thành một nhánh khác và gặp phải một cuộc xung đột
  2. Trong bộ đệm Magit, sẽ có các phần cho Merging master, và Unstaged changes, Staged changes. Các tập tin bị xung đột là trongUnstaged changes
  3. Trên dòng có tệp bị xung đột, nhấn kđể loại bỏ các thay đổi (nghĩa là các thay đổi bị xung đột)
  4. Trong xe buýt nhỏ, bạn sẽ thấy câu trả lời:

For <conflicted file> checkout: [o]ur stage, [t]heir stage, [c]onflict, or [C-g] to abort


5

Có một số giải pháp:

  • sử dụng smerge-ediff. Trong tập tin có xung đột, bạn chạy M-x smerge-ediff. Nó sẽ đưa bạn vào chế độ phân giải ediff, với bốn bộ đệm mở: của bạn, của chúng, hợp nhất và bộ đệm lệnh. Trong bộ đệm lệnh, bạn sử dụng npchuyển đến hunk tiếp theo hoặc trước đó, "a" hoặc "b" để chấp nhận thay đổi từ bộ đệm thứ nhất hoặc thứ hai hoặc bạn có thể chuyển đến bộ đệm hợp nhất và chỉnh sửa nó theo ý thích.
  • sử dụng ediff từ magit, với ephiên bản ổn định của magit, hoặc M-ehoặc M-m( magit-ediff-resolve) trong nhánh pháp sư tiếp theo, và sau đó bạn sẽ thấy mình giống như trong trường hợp đầu tiên
  • Ngoài ra còn có chế độ smerge C-c ^ nC-c ^ psẽ giúp bạn đi từ hunk sang trước hoặc sau, bạn có thể chỉnh sửa chúng hoặc sử dụng C-c ^ ođể giữ phiên bản 'khác', C-c ^ mđể giữ phiên bản 'của tôi', C-c ^ bđể giữ phiên bản cũ phiên bản và C-c ^ ađể giữ tất cả chúng.
  • bạn có thể sử dụng magit-find-file để mở tệp như trong một số cam kết.

Tôi chưa thấy Tu Do đã có hầu hết câu trả lời tôi đăng ở đây. Sory
Rémi

Cảm ơn về danh sách toàn diện, nhưng tôi đoán câu trả lời cho "có cách nào ngắn gọn để có được phiên bản của chúng tôi hay Thiers" không. :(
tenpn
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.