【发布时间】:2022-01-18 19:24:24
【问题描述】:
假设我有 3 个分支:main、dev 和 release dev 分支是使用主分支创建的,并且在主分支之前。 dev 分支有一个新文件夹,里面有一些新文件。
在 GitHub 中,我错误地从 dev 分支直接合并到 release 分支,而 dev 必须先合并到 main 分支,只有 main 分支必须与 release 分支合并。此时,在 dev 分支中的新文件夹在 release 分支中创建。
我立即恢复了发布分支中的合并。由于还原,新文件夹在发布分支中被删除。
接下来我将 dev 分支与 main 分支合并(这是我首先应该做的),然后将 main 分支与 release 分支合并。
但是,dev 分支中的新文件夹现在仅存在于主分支中,并且该文件夹及其文件不会在 release 分支中重新创建,因为该文件夹由于还原而被删除第一次合并。
如果我尝试创建一个从 main 到 release 分支的新合并请求,GitHub 会显示 release 分支是最新的,包含来自 main 的所有提交,并且 release 领先于 main。
main 合并到 release 的解决方案是什么,以便从 dev 分支到 main 的新文件夹在 release 分支中重新创建?
编辑 1:
无论我从 dev 合并到 release 都是正确的代码,但我不应该直接从 dev 合并到 release 作为练习。
【问题讨论】:
-
git 不太关心文件;它更不关心文件夹。这里实际发生的是,您还原的 commits 没有被合并到发布分支,因为就 git 而言 您已经合并了它们。所以现在你需要“revert the revert”——见stackoverflow.com/questions/8728093/…和stackoverflow.com/questions/5354682/…,可能还有很多其他类似的问题。
-
在上面的帖子中,我并不清楚,还原还原如何启用从主分支到发布分支的全新合并,并创建文件夹/文件。引擎盖下发生了什么/是什么使它起作用?我不想在不了解的情况下在生产 repo 上尝试一些东西。
-
如果我们回滚revert,Git如何理解那些来自主分支的提交不再合并到发布分支中?
-
我的问题也与其他帖子略有不同,因为我从 dev 合并到 release 的任何内容都是正确的代码,但我不应该直接从 dev 合并到 release 作为策略。跨度>
-
至于政策方面,为什么你会陷入这种境地并不重要,事实是你在情况:你已经恢复了一些东西,现在你想要它回来。只有两种方法可以做到这一点:1)重写历史(做对很棘手,做错很危险); 2)创建一个新的提交重新引入恢复的更改。这就是 git 的工作原理。
标签: git github merge version-control