Làm cách nào để đặt giá trị mặc định của git merge là --no-ff --no-commit?


84

Chính sách của công ty là sử dụng --no-ffcho các cam kết hợp nhất. Cá nhân tôi thích điều chỉnh thông báo nhật ký hợp nhất nên tôi sử dụng --no-commit. Thêm vào đó, tôi thực sự thích biên dịch và kiểm tra trước khi tôi thực hiện cam kết.

Làm cách nào để tạo --no-ff--no-commitđặt mặc định cho tôi cho tất cả các chi nhánh?

(và tôi đã học được trong nhiều năm kể từ khi hỏi điều này, tôi hầu như luôn hài lòng với cam kết, vì vậy sẽ đơn giản hơn nếu cho phép cam kết theo mặc định và miễn là tôi sửa đổi hoặc sửa chữa mọi thứ trước khi thực hiện thúc đẩy. tất cả tốt ...)


Câu trả lời:


112

Đặt cái này vào $ HOME / .gitconfig:

[merge]
    ff = no
    commit = no

Bạn có thể sử dụng git-config để thực hiện việc này:

  git config --global merge.commit no
  git config --global merge.ff no

1
Bạn có chắc điều này hoạt động? Nó không dành cho tôi, tôi phải sử dụng branch.master.mergeoptions="--no-ff"hoặc merge.ff="no"(xem câu trả lời bên dưới)
gaizka

@gaizka Thật vậy, trong 1.7.2 và 1.7.7.2 nó không hoạt động. Tôi sẽ cố gắng lấy một thời gian sau để kiểm tra các phiên bản cũ hơn.
William Pursell

@Stripes bằng lệnh git config, nó đặt nó trong [merge], không phải là [lõi]
Tisch

41

Để thực hiện --no-ff --no-commithành vi hợp nhất mặc định, hãy đặt các tùy chọn để nosử dụng:

git config --global merge.ff no
git config --global merge.commit no

Tuy nhiên, vấn đề với điều này là git pull= git fetch+ git merge. Vì vậy, bất cứ khi nào bạn kéo từ máy chủ từ xa, bạn sẽ tạo ra một cam kết hợp nhất xấu xí khi tiến trình tua nhanh đơn giản sẽ được đảm bảo. Để giải quyết vấn đề này, hãy đặt pull.ffthành yes:

git config --global pull.ff yes

17
Mặc dù điều này đúng khi sử dụng hợp nhất, nhưng cần lưu ý rằng nếu bạn đang sử dụng merge.ffthay thế thì nó không thực hiện điều này - nó chỉ ảnh hưởng đến hợp nhất rõ ràng, trong khi kéo vẫn thực hiện tua đi nhanh như mong muốn.
Nick

3
Khi tôi sử dụng merge.ff = no, git pulltạo các cam kết hợp nhất.
Matt McClure

3
để giải quyết điều này, bạn nên sử dụng git pull --rebase( git-scm.com/docs/git-pull ) hoặc cấu hình branch.autosetuprebase( git-scm.com/docs/git-config.html )
Cybot

8
hoặc sử dụngpull.ff = yes
gabeio

20

Kể từ phiên bản 1.7.6 của git, bạn nên sử dụng

git config [--global] merge.ff no

để "buộc" sử dụng --no-fftrong mọi hợp nhất.

Hành vi mặc định là

git config [--global] merge.ff yes

Và với

git config [--global] merge.ff only

nó sẽ từ chối các hợp nhất không chuyển tiếp nhanh


11

Theo hướng dẫn sử dụng , bạn nên sử dụng

$ git config [--global] merge.ff false

để đặt tùy chọn không tua đi nhanh theo mặc định cho tất cả các nhánh với tiện ích git-config.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.