2009-09-30 30 views
5

Tôi xóa tệp trong thư mục làm việc của mình. Và sau đó tôi làm một 'git pull'. Một người khác trong nhóm của tôi sửa đổi cùng một tệp và 'git push' thành HEAD.Cách xem thay đổi trong 'xung đột hợp nhất' trong git rebase

Vì vậy, khi tôi làm một 'git rebase', tôi nhận được một cái gì đó mâu thuẫn merge như 'git XUNG ĐỘT (xóa)'

Câu hỏi của tôi là làm thế nào tôi có thể tìm hiểu những thay đổi đã làm cho người khác trong đội làm vào tệp tôi 'xóa'?

Cảm ơn bạn.

Trả lời

7

Khi có mâu thuẫn trong quá trình hợp nhất hoặc rebase, các phiên bản khác nhau của một tập tin có sẵn từ:

  • ngành:

    $ git show HEAD:path/to/file 
    $ git show branch:path/to/file 
    
  • như giai đoạn 1, 2, 3 trong chỉ số:

    $ git ls-files --unmerged 
    # ... 
    $ git show :1:path/to/file 
    $ git show :2:path/to/file 
    

Ngoài ra còn có các công cụ như "git diff --cc" và "git log --merge".

Xem tài liệu để biết chi tiết.

+0

Cảm ơn bạn. Có cam kết cho phép tôi nhận toàn bộ tệp trong HEAD của chi nhánh theo dõi không? Tôi đã suy nghĩ về làm 'git show: 2: path/to/file> myFile' nhưng điều đó có thể thay đổi định dạng hoặc nguồn cấp dữ liệu dòng. Có cách nào tốt hơn? – n179911

+0

Bạn có thể sử dụng "git cat-file -p: 2: đường dẫn/đến/tệp> myFile' cấp thấp", tôi nghĩ vậy. –

4

Git giữ một bản sao trạng thái của các nhánh ngược dòng trong kho của bạn dưới dạng các nhánh "theo dõi từ xa". Nếu bạn thực hiện git branch -r, bạn sẽ thấy danh sách tất cả các nhánh từ xa. Chọn một trong đó tương ứng với chi nhánh bạn đang làm việc trên, và làm điều gì đó như:

git diff HEAD^..origin/master 

này sẽ cho bạn thấy thay đổi giữa cha mẹ HEAD (giả định xóa của bạn đã cam kết cuối cùng, sửa đổi nếu cần thiết) và trạng thái hiện tại của nhánh thượng lưu.

0

Tạo một chi nhánh khác từ lần kéo tốt được biết cuối cùng của bạn. Sau đó thực hiện Pull trong nhánh mới từ bạn của bạn. Sau đó, bạn sẽ có thể xâm nhập vào nhật ký của chi nhánh mới và sau đó biết cách hợp nhất hai nhánh lại với nhau thành một nhánh, sau đó bạn có thể đẩy nó vào.

Thiết lập phát triển bình thường của chúng tôi là có một kho lưu trữ GIT mà mọi người đều từ đó. Tôi khuyên bạn nên rebasing thay vì kéo từ một kho trung tâm. Điều này là bởi vì nếu bạn kéo từ kho lưu trữ sau đó rebase vào cùng một kho lưu trữ các cam kết của bạn mà bạn đã gửi đến kho sẽ xung đột với nhánh hiện tại của bạn. Chúng tôi thường thấy dễ dàng hơn nếu bạn phải sử dụng kéo hoặc đẩy, để sử dụng các bản vá thay thế.

Ví dụ: Không bao giờ bị xóa khỏi kho lưu trữ mà bạn đã kéo.

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