出于某种原因,每当我git pull更新我的代码库时,而不是调用从origin / master到master的通常类型的pull,我被提示指定提交历史记录,其中包含预先填充的所有常用合并细节。无论多么平凡,每次更新都会这样做,当然我不会对需要合并的本地代码库进行任何更改。
知道可能导致这种情况的原因吗?
答案 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”来跟踪远程主分支。在这个分支上工作!
希望你不会在这个新分支上遇到任何问题。