2011-07-28 35 views
72

Tôi đang ở giữa quá trình hợp nhất lớn và tôi đã sử dụng git mergetool để giải quyết tất cả xung đột, nhưng tôi chưa cam kết, vì tôi muốn đảm bảo việc hợp nhất đã ổn Đầu tiên.Làm lại hợp nhất chỉ một tệp duy nhất

Hóa ra tôi đã phạm sai lầm trong khi giải quyết xung đột trong một tệp và tôi muốn làm lại độ phân giải xung đột với git mergetool trên tệp đó. Vì đây là một hợp nhất lớn tôi muốn tránh làm lại việc hợp nhất trên tất cả các tệp khác, như tôi hiểu tôi sẽ phải làm với git merge --abort.

Tôi biết tôi chỉ có thể chỉnh sửa tệp theo cách thủ công, nhưng điều này sẽ khá tẻ nhạt và sẽ dễ dàng hơn nhiều khi làm lại thao tác git mergetool. Điều này có thể không?

Trả lời

108

Có vẻ như tôi đang tìm kiếm địa điểm sai. Giải pháp hóa ra khá đơn giản.

git checkout -m <file> 

Điều này trả về tệp về trạng thái xung đột của nó. Sau đó, tôi có thể chạy git mergetool để làm lại quá trình hợp nhất.

+2

Loại công việc này dành cho tôi. Chỉ số đã kết thúc trong một trạng thái hợp nhất, nhưng mergetool đã không nghĩ rằng có bất kỳ sự hợp nhất nổi bật nào. Tôi đã làm việc hợp nhất bằng cách sử dụng vi, nhưng nó đã được kỳ lạ anyway. –

0

Bạn luôn có thể chỉnh sửa các tệp theo cách thủ công.

Nếu bạn đang sử dụng git merge --no-commit, sau đó bạn sẽ chỉ cần có một cam kết chuẩn bị (sau khi tự động và bán tự động) hợp nhất.

Bạn vẫn có thể chỉnh sửa tệp một cách an toàn và chỉ cam kết khi hoàn toàn hài lòng.

+0

Tôi đã hy vọng để tránh điều này, nhưng cảm ơn anyway. – hammar

Các vấn đề liên quan