让我知道我在git log中有以下提交:
previous commits --> bug fix --> pep8 the whole file (head)
-----------------------------------------------------
commit abcdefg2
pep8 the whole file
commit abcdefg1
bug fix
现在我想通过运行来恢复pep8更改:
git revert abcdefg1
然后我遇到很多冲突......我想知道我做了什么?我不确定在revert,abcdefg1或abcdefg2中使用哪个提交?
答案 0 :(得分:1)
以下是显示应用恢复提交后分支状态的图表:
branch: ... I -- A -- B -- C
此处提交A
为pep8 the whole file
,B
是错误修复,C
是提交A
的还原。但是,从功能上讲,还原提交A
会使您的分支处于与以下相同的状态:
branch: ... I -- B
换句话说,在应用了还原提交之后,就好像你刚刚在早期的一些提交中放置了bug修复。最有可能的是,这导致了一些必须解决的冲突。您可以自己测试这个理论,或者只是接受在进行恢复时发生冲突是完全正常的。
答案 1 :(得分:1)
git revert
和git cherry-pick
是合并操作。
对于樱桃挑选,樱桃挑选的承诺的父母是基础,樱桃挑选的承诺是“他们的”小费,你的结账是“我们的”小费。
...B---C git cherry-pick C
...H with H the HEAD
是以B
为基础的合并,它将从B到C的变化合并为从B到H的变化。这可能需要一些安静的时间来欣赏,值得花钱。
Revert恰恰相反:
...T---R git revert R
...H with H the HEAD
将R到T的变化与从R到H的变化合并。