git revert会覆盖其他人所做的任何其他更改吗



假设我在存储库中进行了一些更改,后来发现我必须恢复到以前的提交状态,但与此同时,其他一些人也在我提交后对存储库进行了更改。

我想还原我自己在这段时间内所做的更改,但不想还原在同一存储库中工作的其他人。这可能是吉特吗?

更具体地说,如果在过去的3天里,我进行了3次提交:

c1
c2
c3

在同一时间段内,另一个工作人员也进行了2次提交:

c4
c5

我有两个问题:

  1. 如果我想回到c1之前的状态,是否足以将其恢复到c1?c2和c3呢
  2. 当我恢复到c1时,c4&c5也受到影响

单词rever在git中有特定的含义。它意味着创建一个与另一个提交相反的提交。

返回历史上的上一次提交称为重置

关于还原,如果你现在有序列:

c1
c2
c3
c4
c5

如果您恢复前三次提交(使用git revert(,最好按照相反的顺序,您最终会得到:

c1
c2
c3
c4
c5
-c3
-c2
-c1

这应该或多或少相当于c4c5的工作,但保留了整个故事。

如果您想真正删除提交,则必须重写分支。rebasepush --force的常见注意事项适用(即,如果共享,则不推荐使用(。有几种方法可以做到这一点。最简单的方法可能是执行git rebase --interactive c1^并删除有问题的提交。然后是push -f,并确保团队中的每个人都正确同步。

git revert只需反转指定提交中的修补程序。如果反向补丁不能干净地应用,git将为您提供解决冲突的机会,类似于mergerebase产生冲突的情况。

从你的问题中不清楚你想要实现什么,因为你使用了术语";恢复";同时描述称为";分支复位";在Git中。

如果您通过说git revert C1来恢复一个提交(例如,C1(,则其他提交(C2、C3…(将不会受到影响,因为只有该更改才会被"恢复";未应用";。Git将创建一个";"反提交";给你(我们称之为C6(。但是,如果要将分支重置为C1(git reset C1(,则会有效地丢弃C2..C5。然而,它们仍然存在,直到Git稍后垃圾收集它们(并且您可以通过使用git reflog查找分支指向的以前的提交来在完成之前恢复它们(。

相关内容

最新更新