2011-03-24 30 views
5

Tôi mới trong Git. Hiện nay, tôi đang trải qua tình huống này:vấn đề với thông điệp cam kết sau khi xung đột được giải quyết khi hợp nhất

Bước 0. Tôi đang làm việc trên một tiểu -branch

Bước 1. Tôi đã thêm & cam file1, file2, file3 trên phụ -branch tôi với cam kết thông báo msg1, msg2, msg3 tương ứng.

Bước 2. Tôi checkout master để chuyển sang chủ chi nhánh

Bước 3. Tôi pull origin master để cập nhật chi nhánh tổng thể với mã phiên bản gốc mới nhất

Bước 4. Tôi merge sub-branch sáp nhập mã làm việc của tôi vào thạc sĩ hiện nay mã ngành

Sau đó, tôi nhận được cuộc xung đột trong file2,

Sau đó, tôi tự giải quyết các xung đột. Bây giờ, cần phải thêm tệp2 vì có thay đổi trong tệp này.

Bước 5. Tôi add file2 trong ngành thạc sĩ, bởi vì tôi đã giải quyết được mâu thuẫn trong hồ sơ này

Bước 6. gì cam kết thông báo tôi nên viết bây giờ? chỉ msg2? hoặc msg1, msg2, msg3 tất cả đều cần được viết lại ngay bây giờ? (Tôi không muốn để mất các cam kết thông điệp msg1, msg2, msg3 cho các tập tin tôi làm việc)

Trả lời

8

Bạn không viết thông báo cam kết mới cho những cam kết đã hợp nhất; bạn đang viết một thông điệp cam kết cho việc hợp nhất tự cam kết. Lịch sử của bạn sẽ trông giống như sau:

- x - o - o - o (origin/master) - X (master) 
    \       /
    1 - 2 - 3 (sub-branch) ------ 

Thông báo cam kết bạn đang viết là X.Cam kết 1, 23 là tổ tiên, vẫn còn trong lịch sử và họ vẫn có thông báo cam kết của họ. Không có cách nào để thay đổi những người có hợp nhất.

Thông báo cam kết cho X, nếu bạn không có xung đột, sẽ mặc định thành một cái gì đó như Merge branch 'sub-branch'. Nếu bạn có xung đột, nó vẫn sẽ có mà như dòng đầu tiên, mà còn là một danh sách các tập tin trong đó có mâu thuẫn:

Merge branch 'sub-branch' 

Conflicts: 
    file2 

Đây là một gợi ý nhẹ nhàng mà bạn đã làm điều gì đó ý nghĩa hơn chỉ là một hợp nhất đơn giản - bạn phải thực hiện một số công việc thủ công để giải quyết xung đột trong file2. Nếu muốn, bạn có thể thêm ghi chú nhanh về những gì gây ra những xung đột đó và cách chúng được giải quyết. Nếu không, chỉ cần sử dụng tin nhắn đó như là! Hãy nhớ rằng, đây chỉ là một mô tả về việc hợp nhất (và giải quyết xung đột). Các cam kết mà bạn đã hợp nhất có thông báo cam kết của riêng họ.

+0

Bây giờ, tôi nhận được toàn bộ quá trình, cảm ơn bạn :) – Mellon

+0

+1 Một câu trả lời rất hay :) –

3

Một khi bạn giải quyết mâu thuẫn và git add <conflicted file> khi bạn đi vào git commit nó sẽ cung cấp một dựng sẵn cam kết thông báo cho hợp nhất và mọi cam kết đã được giải quyết. Phải không? Các cam kết hợp nhất khác sẽ không bị mất, bạn không cần phải viết lại bất cứ điều gì.

  1. Cam kết BranchB
  2. git checkout master
  3. git pull origin master
  4. git merge BranchB
  5. Giải quyết mâu thuẫn trong file (s)
  6. git add <conflicted file(2)>
  7. git commit

Bước 7: nếu được gọi không có tham số nên mở trình soạn thảo thông báo cam kết mặc định bằng một thông điệp phong phú giải thích xung đột hợp nhất và giải quyết (tôi tin)

+0

Cảm ơn bạn, tôi nhận được nó :) – Mellon

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