如果合并或重新定位,则主删除分支文件中的 Git `revert`
Posted
技术标签:
【中文标题】如果合并或重新定位,则主删除分支文件中的 Git `revert`【英文标题】:Git `revert` in master deleting branch files if merged or rebased 【发布时间】:2014-09-14 14:37:49 【问题描述】:我使用 revert 做了一些非常愚蠢的事情,我不知道如何正确修复它。 我会尽量解释清楚。
我想在项目存储库中添加foo
、bar
和baz
。
由于某些原因(因为我是白痴),我做了以下混乱
(其中“-xxx_commit”是“+xxx-commit”的 git-revert):
foo_branch
+foo_commit 1
bar_branch
+foo_commit 1
+bar_commit 2
-foo_commit 3
baz_branch
+foo_commit 1
+bar_commit 2
-foo_commit 3
-bar_commit 4
+baz_commit 5
然后,foo_branch
和 baz_branch
已经合并到上游仓库中...
因此:
upstream/master
+foo_commit 1
+foo_commit 1
+bar_commit 2
-foo_commit 3
-bar_commit 4
+baz_commit 5
所以现在,foo
已被添加,然后被删除,我无法将 upstream/master
从 bar_branch
合并或变基,因为它会自行恢复...
你有什么办法来清理那个烂摊子吗?
有git-idiot
命令之类的吗?
【问题讨论】:
【参考方案1】:在主节点 -foo_commit 3 和 -bar_commit 4(foo 和 bar 的还原)中恢复 foo 和 bar 怎么样?你应该在你的 repo 中以 foo、baz 和 bar 结尾。 这里是情况的一个例子(如果我没记错的话):
ghislain@debian: /tmp/git-test (master) > 混帐历史 * a3ca029 (HEAD, master) - 合并分支 'baz_branch' (2 秒前) |\ | * db33181 (baz_branch) - baz_commit (17 秒前) | * 618b704 - 恢复“bar_commit”(32 秒前) | * 672b77c (bar_branch) - 恢复“foo commit”(51 秒前) | * 06230db - bar_commit(62 秒前) * | 90ba017 - 合并分支“foo_branch”(7 秒前) |\ \ | |/ | * 60ea014 (foo_branch) - foo 提交 (79 秒前) |/ * 0b863fe - 初始(4 分钟前) ghislain@debian: /tmp/git-test (master) > git 合并 --no-ff bar_branch 已经是最新的了。 ghislain@debian: /tmp/git-test (master) > ll 共 0 -rw-r--r-- 1 ghislain 保险丝 0 Jul 23 15:18 baz -rw-r--r-- 1 ghislain fuse 0 Jul 23 15:14 自述文件 ghislain@debian: /tmp/git-test (master) > 混帐还原 672b77c 618b704 [master 88af7cd] 还原“还原“foo commit”” 1 个文件已更改,0 次插入 (+),0 次删除 (-) 创建模式 100644 foo :[master d2cf0a3] Revert "Revert "bar_commit"" 1 个文件已更改,0 次插入 (+),0 次删除 (-) 创建模式 100644 bar ghislain@debian: /tmp/git-test (master) > ll 共 0 -rw-r--r-- 1 ghislain 保险丝 0 Jul 23 16:37 bar -rw-r--r-- 1 ghislain 保险丝 0 Jul 23 15:18 baz -rw-r--r-- 1 ghislain fuse 0 Jul 23 16:37 foo -rw-r--r-- 1 ghislain fuse 0 Jul 23 15:14 自述文件【讨论】:
这大概是我最终所做的。我想知道是否有比“revert of revert”更干净的东西。感谢您抽出宝贵时间制作这个出色的示例。以上是关于如果合并或重新定位,则主删除分支文件中的 Git `revert`的主要内容,如果未能解决你的问题,请参考以下文章