gpt4 book ai didi

git - 如何撤消 git merge squash?

转载 作者:IT王子 更新时间:2023-10-29 01:25:51 25 4
gpt4 key购买 nike

我刚刚做了一个

git merge --squash feature-branch

进入我的 develop 分支。

问题是上面的命令在没有创建新提交的情况下更新了头部。我的意图是创建一个单独的提交以应用于 develop 的负责人。

所以简而言之, merge 前后develop分支的日志是完全一样的。

有没有办法将 develop 恢复到 git merge 之前的状态?

谢谢。

解决方案

根据 Dan D. 的评论和下面接受的答案,我能够解决我的问题。看看下面我做了什么,以防你在同一条船上:

1 - 我运行了 git reflog,它列出了我对我的 develop 分支所做的所有提交和 checkout 。

2 - 我没有按照建议执行 git reset HEAD@{1},而是在我最后一次提交 develop 时找到了我想保留的数字。在我的例子中是 HEAD@{188}。所以我输入了 git reset HEAD@{188}

3 - 我运行了一个 git log,它有一个干净的日志,只显示我在进行错误 merge 之前的提交。

4 - 我运行了 git add -A . 来暂存我在功能开发期间创建的所有新文件。

5 - 我运行了 git commit -m "install feature-x"

6 - 结果现在我有了包含正确文件的分支 develop 并且日志是干净的 - 只显示了我在开发 feature-x 期间所做的所有更改的一次提交

我仍然需要找出为什么我原来的 git merge --squash feature-branch 没有按预期工作。

解决方案 2

Mark Longair 的回答是我问题的最终解决方案。我刚刚测试过它并且它有效。请参阅下面我正在使用的过程,该过程压缩了 feature-branch 中的所有内部提交,并且仅包括对 develop 分支的一次提交:

git checkout develop
git merge --squash feature-branch
git commit -m "install of feature-branch"

上面的序列就像一个魅力。

最佳答案

如果你运行 git merge --squash <other-branch>工作树和索引会根据 merge 的结果进行更新,但不会创建提交。您需要做的就是运行:

git commit

但是,如果您在提交之前改变主意并且只想中止 merge ,您可以简单地运行:

git reset --merge

您不需要使用 reflog。

关于git - 如何撤消 git merge squash?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7457942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com