我们可以说git revert在恢复的提交之上合并旧的先前提交吗?

时间:2015-03-02 10:25:18

标签: git merge clearcase git-revert

我正试图绕过git revert

我来自Clearcase背景撤消错误提交的地方,您可以:

  1. 检查错误提交文件之上的旧版本文件(仅对Clearcase提交文件级别)
  2. 删除提交的元素
  3. 在版本树中,将先前版本合并到当前版本中以创建与最新提交之前的版本相同的新版本。
  4. 现在在我看来,git revert自动等同于(3)中的手动工作。

    我的问题是:我们可以说git revert在恢复的提交之上合并旧的先前提交吗?

3 个答案:

答案 0 :(得分:1)

简而言之

git revert创建要撤消的提交的反转。然后,将新的更改集提交到存储库中。

请参阅 2.4 Git Basics - Undoing Things 中的取消修改已修改文件部分。

所以,不,你不能说:

  

我们可以说git revert合并了之前的旧提交   还原提交?

因为您可以恢复存储库历史记录中的任何提交。

示例

假设您有此历史记录:

C1 <-- C2 <-- C3 (HEAD)

这意味着,如果你想恢复提交C2,你就不会提交旧的先前提交&#34;这将是C1。因为那样你最终会

C1 <-- C2 <-- C3 <-- C1 (HEAD)

你不是。你最终得到了

C1 <-- C2 <-- C3 <-- C2' (HEAD)

C2'C2相反,C3仍然是您历史的一部分。

<强>插图

以上说明为taken from here

enter image description here

答案 1 :(得分:0)

不完全是。 git revert将为您选择还原的每个提交创建一个新的提交对象,每个提交对象将与您选择分别还原的每个提交完全相反。

意思是,如果你git revert C1,那么git会创建C1R,它会完全反转C1所做的所有更改。

答案 2 :(得分:0)

不要忘记那些ClearCase选项是逐个文件。

git revert通过commit工作(这有点像UCM活动),这意味着它将还原该提交中引用的所有文件。

要仅还原特定文件,“Reset or revert a specific file to a specific revision using Git?”中还有其他选项。