2015-02-20 19 views

Trả lời

3

Hai configs mà có thể giúp đỡ là:

merge.ff 

(Từ git merge man page): Khi thiết lập để false, biến này cho Git để tạo ra một kết hợp thêm cam kết trong trường hợp này (tương đương với việc lựa chọn --no-ff từ dòng lệnh).

pull.ff 

(từ git config man page)

Thiết pull.ff để true sẽ tiếp tục hành vi mặc định nơi Git không tạo ra một kết hợp thêm cam kết khi sáp nhập một cam kết đó là một hậu duệ của dòng cam kết.

Để được kiểm tra: không pull.ff được ưu tiên hơn merge.ff?

git config pull.ff only 
git config merge.ff false 

Như đã đề cập bởi Kelvin 's answer và xác nhận bởi git-pull.sh,' only 'là giá trị sử dụng, không phải là' true'.

+0

Cảm ơn mẹo, nhưng có vẻ như 'merge.ff' được ưu tiên. – oyvind

+0

@oyvind đó là những gì tôi lo sợ ... – VonC

+0

@oyvind Bạn có thể giải quyết vấn đề bằng cách sử dụng một bí danh thay vì "trần" git pull' trỏ đến 'git pull --ff'. Nhưng xin đừng gọi nó là 'git puff'. –

3

Đây là luồng công việc dự kiến ​​của tôi (Lưu ý rằng tùy chọn cấu hình pull.ff chỉ hoạt động trên git 2.x.).

Sử dụng cấu hình này:

  • Đặt merge.ff-false. Điều này mặc định hành vi merge đến --no-ff.
  • Đặt pull.ff đến only. Điều này mặc định hành vi pull thành --ff-only.

Điều đó có nghĩa nếu bạn cố gắng pull một chi nhánh nơi địa phương của bạn là cả hai đằng sau & trước điều khiển từ xa, các pull sẽ thất bại. Trong trường hợp đó, hãy thực hiện một số rebase để bạn không bị bỏ sót nữa.

Lưu ý:

tôi đã cố gắng thiết lập pull.ff để true nhưng git dường như đối xử với nó như thể lựa chọn là hoàn toàn unset. Lưu ý rằng trang người đàn ông không đề cập đến rằng true là giá trị được công nhận.

+0

Được phát hiện rõ. +1. Tôi đã sửa đổi câu trả lời của riêng mình cho phù hợp. – VonC

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