jdi*_*ias 18 git version-control git-merge
我刚做了一个
git merge --squash feature-branch
Run Code Online (Sandbox Code Playgroud)
进入我的develop分店.
问题是上面的命令更新了头部而没有创建新的提交.我的目的是创建一个单一的提交申请到负责人develop.
简而言之,develop合并前后分支的日志完全相同.
有没有办法恢复develop到之前的状态git merge?
谢谢.
解
根据Dan D.的评论和下面接受的答案,我能够解决我的问题.如果你在同一条船上,请看下面我做了什么:
1 - 我跑了git reflog,它列出了我对我的develop分支所做的所有提交和检查.
2 - git reset HEAD@{1}我没有按照建议进行操作,而是在最后一次提交开发时找到了我希望保留的数字.就我而言HEAD@{188}.所以我打字了git reset HEAD@{188}.
3 - 我跑了一个git log,它有一个干净的日志,只显示我做错了合并之前的提交.
4 - 我跑完git add -A .了功能开发期间创建的所有新文件.
5 - 我跑了 git commit -m "install feature-x"
6 - 结果现在我有了develop正确文件的分支,并且日志是干净的 - 只显示了我在开发过程中所做的所有更改的一次提交feature-x.
我仍然需要找出为什么我的原件git merge --squash feature-branch没有按预期工作.
解决方案2
Mark Longair的答案是解决我的问题的最终解决方案.我刚刚测试了它,它的工作原理.请参阅下面我正在使用的流程来压缩a中的所有内部提交,feature-branch并且只包含一个提交到develop分支:
git checkout develop
git merge --squash feature-branch
git commit -m "install of feature-branch"
Run Code Online (Sandbox Code Playgroud)
上面的序列就像一个魅力.
Mar*_*air 20
如果运行git merge --squash <other-branch>工作树并使用合并结果更新索引,但它不会创建提交.您需要做的就是运行:
git commit
Run Code Online (Sandbox Code Playgroud)
但是,如果您在提交之前改变主意并且只想中止合并,则只需运行:
git reset --merge
Run Code Online (Sandbox Code Playgroud)
您不需要使用reflog.