Git pull总是调用merge

时间:2014-02-05 07:42:09

标签: git git-merge

出于某种原因,每当我git pull更新我的代码库时,而不是调用从origin / master到master的通常类型的pull,我被提示指定提交历史记录,其中包含预先填充的所有常用合并细节。无论多么平凡,每次更新都会这样做,当然我不会对需要合并的本地代码库进行任何更改。

知道可能导致这种情况的原因吗?

2 个答案:

答案 0 :(得分:2)

如果您的本地git pull分支包含远程不存在的提交,

master将创建合并提交,然后提示您编辑该消息。如果您的本地主人是直接后代(不包含任何未在遥控器上的提交),那么git pull将只是快进分支而不是要求消息。当然,这可能还取决于您merge.ff的设置(有关详细信息,请查看git-config手册页)。如果merge.ff设置为false,则所有合并都将创建合并提交并提示您输入消息。

根据您的情况,我会检查merge.ff是否设置为false。您可以查看:

git config --get merge.ff

如果它返回空或true,则将其设置为true。如果您喜欢此设置,但希望在此存储库中启用快进合并,则可以执行以下操作:

git config --local merge.ff true

对我来说,我一般不喜欢git pull的合并行为,所以我选择这样做:

git fetch --all
git merge --ff --ff-only @{u}

除非我有更改,否则将始终尝试快速更新我的本地分支。当我这样做时,它抱怨,然后我选择我想要解决的路径(通常是rebase,但并非总是如此)。

编辑合并消息背后的一些历史

回到1.7.10 git开始在编辑器中显示合并提交的日志消息,而不是盲目地保留模板化消息。其原因来自Linus and the Linux Kernel tree,其中有太多人保留默认合并消息而没有提供更实质的内容。

答案 1 :(得分:0)

如果你想在一个干净的分支上工作(不是在已经有你的提交的分支上),那么你可以选择用不同的名称多次复制远程分支。

E.g。如果您想在master分支上工作,但遇到本地“master”分支的问题,那么创建一个新的分支来跟踪主分支使用

git branch --track localBranchName origin / master git checkout localBranchName

现在您拥有本地分支“localBranchName”来跟踪远程主分支。在这个分支上工作!

希望你不会在这个新分支上遇到任何问题。

相关问题