当我进行恢复时,为什么会遇到git合并冲突?

时间:2016-01-24 15:37:45

标签: git github

所以我一直试图恢复到我项目的先前版本。但是当我做一个git revert时,我一直遇到合并冲突。为什么这有意义呢?我正在说"我想恢复到这个先前的版本,就像当时的那样#34;现在它说我需要保留一些当前的代码。不,我不想要它,我以某种方式搞砸了我的项目,并认为这个早期的版本并没有搞砸。我知道我应该能够解决这些问题,但我之前从未做过大规模的合并冲突,而且我也不了解很多这些Xcode代码。

另外,如果我还原提交,我是在提交之前还是之后去?例如......

提交A,提交B,提交C,提交D。

我还原承诺B.我该去哪儿? A之后,还是B之后?

$ git revert 8873550de2b6c4bec42cfec4e98600736f01ffb9
error: could not revert 8873550... Grid view
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

1 个答案:

答案 0 :(得分:4)

  

我说&#34;我想恢复到之前的版本,就像当时&#34;

实际上,you're not

  

给定一个或多个现有提交,还原相关修补程序引入的更改,并记录一些记录它们的新提交。

鉴于这个简单的历史

D [master]
|
C
|
B
|
A

git revert BD之上生成一个新提交,用于撤消B中引入的更改(请参阅下面的示例)。如果C中引入的更改与此新提交冲突,则会发生冲突。

  

如果我还原提交,我是在提交之前还是之后

都不是。你最终会得到像

这样的东西
E [master]
|
D
|
C
|
B
|
A

其中E更改了C的更改。

如果你想&#34;回到过去&#34;到B你可以使用git checkout B(这将产生detached head,如果你想从那一点做出新的更改通常没有帮助,你可以使用{ {1}}将git reset移回master,使BC有资格进行垃圾回收,或者您可以使用D创建 {/ 1>}的新分支。

根据您问题中的信息,我无法说明您想要的哪些信息。