Git:设置 merge.ff 会永远中断快进合并



我在Git(版本2.10.1(Apple Git-78((中遇到了一个非常奇怪的问题。

似乎如果我曾经在本地存储库配置中将merge.ff设置为false,那么这个存储库就没有退路了。我只是无法取消设置它。

以下是重现的步骤:

git init
# Set merge.ff
git config --add merge.ff false
# Add some content and commit.
echo '.' >> file.txt
git add file.txt
git commit -am "commit"
# Create a new branch.
git branch feature
git checkout feature
echo '.' >> file.txt
git commit -am "commit"
git checkout master
git merge feature

此合并会创建一个带有消息的提交 - 正如预期的那样。

现在我取消设置,我希望将来的快进提交不会创建额外的提交。但令人惊讶的是,这行不通。

git config --unset-all merge.ff
git checkout feature
echo '.' >> file.txt
git commit -am "commit"
git checkout master
git merge feature

我认为此合并不应创建提交,因为没有merge.ff设置,因此应应用默认值。但是提交被创建。

我想要什么:在我的存储库中再次进行快进提交。有没有办法得到这个?

我认为此合并不应创建提交,因为没有merge.ff设置,因此应应用默认值。但是提交被创建。

如果可能,默认值是快进否则进行合并提交。

现在需要合并提交,因为图形如下所示:

* 4667bf7 (feature) commit
| *   6663675 (HEAD -> master) Merge branch 'feature'
| |  
| |/  
|/|   
* | c12b7b3 commit
|/  
* 3c62604 commit

masterfeature的合并基础是提交c12b7b3...

$ git merge-base master feature
c12b7b3f68caf419c3088fae293c57cfed147f34

feature尖是4667bf7的,master的尖端是6663675的。 这两个提示都不等于合并基础,因此需要进行合并。

您的配置正常:

$ git config --get merge.ff
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[merge]

(这是相当令人讨厌的,但无害,git config在那里留下一个虚假的空[merge]部分;每增加一个git config merge.<whatever>就会添加一个空的。

相关内容

  • 没有找到相关文章

最新更新