【问题标题】:How to remove a specific range of changes in git?如何删除 git 中特定范围的更改?
【发布时间】:2017-10-27 15:31:52
【问题描述】:

所以我遇到了这样一种情况,在几个 sprint 之前,我们从另一个团队收到了一组糟糕的签到。为什么他们可以访问我们的代码,这是我将要研究的另一件事,但我现在要做的是删除他们的更改。至少他们的名字很好,所以我知道他们是谁。我正在考虑的方法是倒退到之前,然后合并除这些更改之外的所有内容。有更好的方法吗?有没有办法可以指定一系列更改,或者有没有办法排除?

【问题讨论】:

  • 不确定您是否正在寻找 stackoverflow.com/questions/6294355/… 以排除方式添加以忽略 git 文件,以免下次暂存或合并。
  • 对我来说听起来是个不错的解决方案。虽然我会建议 git rebase 而不是 git merge 在你倒带之后。 git rebase 的变体可能也可以完成您想要的所有操作,而无需进行初始倒带,但只是增加了额外的复杂性而没有真正的好处。

标签: git merge


【解决方案1】:

我正在考虑的方法是倒退到之前,然后合并除这些更改之外的所有内容。

除非我真的不明白你打算做什么,否则 git 不可能进行部分合并。

有没有更好的方法?有没有办法可以指定更改范围,或者有办法排除?

使用 git,通常有多种可能性:

  1. 直接在包含错误提交的分支上,对从最近的提交开始的每个提交使用命令git revert(每次创建一个恢复提交或为所有已恢复的提交创建一个)。

1 之二。更好的是,您可以还原一系列提交:

https://stackoverflow.com/a/4992711/717372

如果您没有冲突,它可能会很好地工作,因为从那时起更改的文件没有更改。

如果你有冲突,你可以尝试:

2.

  • 在最后一次错误提交时创建一个名为“revert-bad-commits”之类的分支。
  • 创建一个或多个还原提交,如解决方案 1 中所述。(在这种情况下您不会有冲突!)
  • 将这个新分支合并到您的分支中(您肯定会遇到冲突,但它们很可能会更容易解决,并且在一次内)

【讨论】:

  • 我仍然没有被授权进行修复。 :-(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多