【发布时间】:2020-12-23 13:43:38
【问题描述】:
我把 Git 合并弄得一团糟,并试图撤消它。我想我已经成功了,现在我有以下几点:
master 分支 - 看起来就像在混乱发生之前一样。一切都承诺并推到原点。 dev 分支 - 看起来和混乱发生之前一样,并且有我需要合并的更改。所有内容都已提交并推送到原点。
所以,我想将 dev 分支合并到 master 分支。我可以看到(使用 git diff)几个文件存在差异。我正在使用 VS Code,所以我检查了 dev 分支并创建了一个合并到 master 的拉取请求。第一次执行此操作时,我收到一条消息说无法创建拉取请求,并出现错误“master and dev 之间没有提交”。
我做了一个虚拟更改并提交了它,并尝试了另一个拉取请求。这一个有效,但只将虚拟更改复制到主控。
所以,如果我检查 dev 分支并执行“git diff master”,我会得到一个跨多个文件的更改列表。但是,如果我尝试将更改合并到 master 中,我会收到有关“master and dev 之间没有提交”的错误。我做错了什么?
编辑:这是提交历史记录(为了清楚起见,我只是连续编号):
1(大师):提交并推送了一些更改,此时一切正常。
从这个提交创建了一个分支,我们称这个分支为“dev”
2(开发):进行更改、提交并推送到开发。
3(开发):进行更多更改,提交并推送到开发。
4(Merge):将 dev 合并到 master
意识到不需要为提交 3 完成的工作。还原提交 4,然后还原提交 3。
5(尝试合并):尝试将 dev 合并到 master,但收到错误消息“master and dev 之间没有提交”
从提交 3 创建新分支 (dev2)(以防它需要成为分支而不是提交)
6 (Attempted merge): 尝试将 Dev2 合并到 master,但再次收到错误“No commits between master and dev”
7 (Dev2):做了一个“虚拟更改”(只是更改了一些文本),提交并推送。
8(合并):将 dev2 合并到 master。这有效,但只更改了文本(虚拟更改),而不是其余文件。
【问题讨论】:
-
你必须更好地描述你做了什么来“撤消它”。你的消息看起来很混乱,试着写下事实:我运行 git revert,我运行 git merge 等等......
-
您确实需要更详细地描述问题,尤其是您做了什么,您看到了什么差异,以及您更改的文件是否被忽略。此外,“开发分支 - [...] 已提交并推送到主控。”完全没有意义。也许你的意思是它已经被推到上游/到原点?另外,如果您从 CLI 执行简单的 git merge 会发生什么? (而不是使用 VSCOde 进行 PR)
-
另外,你一开始搞了什么“烂摊子”。描述你是如何到达那里的,你做了什么来撤销它等等。
-
您能否根据
master和dev分支的当前历史记录更新您的问题?您可以复制/粘贴的第一行:git log --graph --oneline master dev origin/master origin/dev(如果您不想发布提交消息,可以编辑它们)