Git合并master至空development分支时提示“Already up to date”的解决办法
问题描述
我有master和development两个分支(development是从master检出的),已经清空了development分支的本地和远程内容,现在想把master的所有文件合并到development,执行了以下命令:
git checkout master git fetch git pull git checkout development git fetch git pull git merge master
但得到提示:
Already up to date.
尝试对两个分支执行git reset --hard也没用。git log --oneline --graph --decorate master development的输出如下:
* 56e4fdb (HEAD -> development, origin/development) purge * eb6a6f7 Merge branch 'development' of <url> into development |\ | * bd3960e Edited config file | * 8293db6 Edited config file | * f1d6ac8 merging master | * 2e41d5a merging master | * 8ad654e merging master | * c1a298b merging master * | a8b761f Edited config file * | 4426459 Edited config file * | afb50cc merging master * | de63abb merging master * | a62a3ef merging master * | c4cc98c merging master * | e34c8f5 (origin/master, master) master * | b3be19d Merge branch 'master' of <url> |\| | * 158c847 Creating config | * 7ad8a6c Creating config | * ca61c69 Init config | * e84261a Initial commit with default config * b1f686d master * 1f31dd8 master
解决方法
从git log输出能看出,development分支的提交历史已经包含了master的所有提交(master的最新提交e34c8f5在development的历史线中),所以合并时会提示“Already up to date”。你之前清空分支是新增了一个purge提交,但这只是在development的历史上添加了清空内容的操作,并没有改变分支间的历史包含关系。
要让development的内容完全和master一致,按以下步骤操作:
- 切换到
development分支:
git checkout development
- 将本地
development分支重置到master的最新提交,这样本地分支内容就会和master完全一致:
git reset --hard master
- 由于远程
development分支的历史和本地现在的历史不一致,需要强制推送到远程(注意:此操作会覆盖远程development的历史,确认没有其他团队成员在该分支上工作再执行):
git push --force origin development
执行完这些步骤后,development分支的本地和远程内容就会与master完全同步。
内容的提问来源于stack exchange,提问作者Johnyb
相关产品推荐
相关产品推荐

