【发布时间】:2011-07-28 00:02:24
【问题描述】:
公司政策是使用--no-ff 进行合并提交。我个人喜欢调整合并日志消息,所以我使用--no-commit。另外,我喜欢在提交之前进行实际编译和测试。
我如何将--no-ff 和--no-commit 设为所有分支的默认设置?
(自从提出这个问题以来,多年来我已经了解到,我几乎总是对提交感到满意,因此允许它默认提交更简单,只要我在执行之前修改或以其他方式解决问题推送的东西都很好……)
【问题讨论】:
公司政策是使用--no-ff 进行合并提交。我个人喜欢调整合并日志消息,所以我使用--no-commit。另外,我喜欢在提交之前进行实际编译和测试。
我如何将--no-ff 和--no-commit 设为所有分支的默认设置?
(自从提出这个问题以来,多年来我已经了解到,我几乎总是对提交感到满意,因此允许它默认提交更简单,只要我在执行之前修改或以其他方式解决问题推送的东西都很好……)
【问题讨论】:
要将--no-ff --no-commit 设为默认合并行为,请将选项设置为no,使用:
git config --global merge.ff no
git config --global merge.commit no
但是,问题在于git pull = git fetch + git merge。因此,每当您从远程服务器拉取数据时,当需要进行简单的快进时,您将创建一个丑陋的合并提交。要解决这个问题,请将pull.ff 设置为yes:
git config --global pull.ff yes
【讨论】:
merge.ff,则它不会这样做 - 它只会影响显式合并,而 pull 仍然会执行所需的操作快进。
merge.ff = no,git pull 创建合并提交。
git pull --rebase (git-scm.com/docs/git-pull) 或配置branch.autosetuprebase (git-scm.com/docs/git-config.html)
pull.ff = yes
把这个放在 $HOME/.gitconfig:
[merge]
ff = no
commit = no
您可以使用 git-config 来执行此操作:
git config --global merge.commit no
git config --global merge.ff no
【讨论】:
branch.master.mergeoptions="--no-ff" 或 merge.ff="no"(请参阅下面的答案)
根据manual,你应该使用
$ git config [--global] merge.ff false
使用 git-config 实用程序默认为所有分支设置 no-fast-forward 选项。
【讨论】:
从 1.7.6 版的 git 开始,您应该使用
git config [--global] merge.ff no
在每次合并中“强制”使用--no-ff。
默认行为是
git config [--global] merge.ff yes
还有
git config [--global] merge.ff only
它将拒绝非快进合并
【讨论】: