【问题标题】:Git - mark files as unmergedGit - 将文件标记为未合并
【发布时间】:2018-11-22 09:44:24
【问题描述】:

我有以下情况:

我的项目中有类似主分支的东西(图中为绿色)。

我的同事创建了自己的分支(红色)并推送了他的提交。

不幸的是,在其中一次推送之前,他合并他的红色分支与绿色分支丢弃了我同时推送的所有更改(图片上的 R2)。之后,他又进行了一些推动(R3 和 R4)。

目前,我在 G2 中,我想将我的绿色分支与红色分支合并,但不幸的是,当我合并这两个分支时,所有 G1 和 G2 之间的更改都被跳过,因为 git 将这些更改视为合并。

所以我的问题是如何将 G1 和 G2 之间的更改标记为未与红色分支合并,或者至少如何查看这两个分支之间的 所有差异 以便能够手动合并?很高兴看到其他提案。

【问题讨论】:

  • 也许恢复错误提交?
  • 它会“取消合并”文件还是只删除在 R1 和 R2 之间添加的更改?
  • 不清楚你想要什么。你不能取消合并。这不是一回事。所以忘记这一点,专注于你可以做什么来实现你想要的结果。我认为,虽然问题真的不清楚,但您将不得不将 G1 和 G2 挑选到红色分支的末端。究竟什么是“错误合并”?
  • 什么是“错误合并”? (解释)我的同事在 R1 -> 他与我的绿色分支合并,丢弃了我所有的更改 -> 他添加了自己的更改 -> 他提交并推送了
  • 你告诉他我希望他的行为有多愚蠢?!所以合并没有什么不好的。就 GIT 而言,它只是一个合并。要撤消它需要重写历史,这不是一件容易的事。如果我们是我,我会在 R1(或 G1 甚至 G2)创建一个新分支,然后愉快地再次选择每个提交并在你看到它时合并。然后丢弃红色和绿色的分支

标签: git git-branch git-merge


【解决方案1】:

“标记为未合并”?那,你将无法继续前进。如果您愿意采取最好的方式(正确的历史记录),我会说您签出 R1 并 正确地合并 G2 (或者相反,它将是相同的输出)。然后你可以挑选 R2..R4,然后你有一个很好的新历史和正确的合并。如果您不想覆盖历史记录,您可以查看 G2 和 git merge --no-commit R4,以便在提交之前有机会取回您的资料。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 2022-01-01
    • 2012-05-26
    • 1970-01-01
    相关资源
    最近更新 更多