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.
归档时间: |
|
查看次数: |
16700 次 |
最近记录: |