我正试图绕过git revert
。
我来自Clearcase背景撤消错误提交的地方,您可以:
现在在我看来,git revert自动等同于(3)中的手动工作。
我的问题是:我们可以说git revert在恢复的提交之上合并旧的先前提交吗?
答案 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。
答案 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?”中还有其他选项。