2013-05-09 17 views
19

Từ git book:Làm thế nào để thiết lập không "tua nhanh" như mặc định khi sử dụng git merge

Bạn sẽ nhận thấy cụm từ "Nhanh chóng chuyển tiếp" trong hợp nhất đó. Vì cam kết được chỉ định bởi nhánh bạn đã hợp nhất là trực tiếp ngược dòng của cam kết mà bạn đang truy cập, Git di chuyển con trỏ về phía trước. Theo cách khác, khi bạn cố gắng kết hợp một commit với commit có thể đạt được bằng cách làm theo lịch sử commit đầu tiên, Git đơn giản hoá mọi thứ bằng cách di chuyển con trỏ về phía trước vì không có công việc khác nhau để hợp nhất với nhau - điều này được gọi là " nhanh về phía trước".

Tuy nhiên, tác dụng phụ của "chuyển tiếp nhanh" này là nếu bạn có chi nhánh tính năng có nhiều lần commit, bạn sẽ mất bối cảnh lịch sử của đối tượng địa lý khi bạn hợp nhất trở lại chính. Nói cách khác, các cam kết sẽ không được nhóm lại với nhau như là một phần của tính năng này.

with fast forward:  x---x---x---x---x---x---x 

without fast forward: x---x---x   x---x---x---x 
           \x--x--x/ 

Cách thủ công là để git merge --no-ff

Có ai biết làm thế nào để thiết lập này như một mặc định?

Trả lời

35

Đặt biến cấu hình merge.ff-false:

git config --global merge.ff false 

(Without --global để hạn chế ảnh hưởng đến dự án hiện tại)

+0

Liên kết đến các tài liệu có liên quan Git: http://git-scm.com/docs/git-config. –

+4

nhưng lưu ý rằng 'git pull' (không có --rebase) đang thực hiện hợp nhất và do đó sẽ tạo một cam kết hợp nhất (thường không mong muốn). – michas

+0

Rất kỳ quặc, khi tôi "git merge mybranch" nó không tiến nhanh, mặc dù có thể. Khi tôi sử dụng tùy chọn --ff, nó tiến nhanh về phía trước. Có gì lạ là merge.ff không xuất hiện để được tắt ở mọi cấp độ, vì vậy --no-ff có vẻ là hành vi mặc định cho tôi. Nhưng --ff được cho là mặc định: https://git-scm.com/docs/git-merge#git-merge---ff. Có ai có manh mối nào không? – Sean

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