【问题标题】:Why do I run into git merge conflicts when I do a revert?为什么在执行还原时会遇到 git 合并冲突?
【发布时间】:2016-04-30 21:08:55
【问题描述】:

所以我一直在尝试恢复到我的项目的先前版本。但是当我执行 git revert 时,我不断遇到合并冲突。为什么这有道理?我说“我想恢复到以前的版本,就像当时一样”,现在它说我需要保留一些当前代码。不,我什么都不想要,我以某种方式搞砸了我的项目,并认为这个早期版本并没有搞砸。我知道我应该能够解决这些问题,但我以前从未做过大规模的合并冲突,而且我对这些 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'

【问题讨论】:

标签: git github


【解决方案1】:

我是说“我想恢复到以前的版本,就像当时一样”

其实you're not:

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

鉴于这个简单的历史

D [master]
|
C
|
B
|
A

git revert BD 之上生成一个新的提交,以逆转B 中引入的更改(参见下面的示例)。如果C 中引入的更改与这个新的提交冲突,你就会遇到冲突。

如果我恢复提交,我是在提交之前还是之后去

两者都不是。你最终会得到类似的东西

E [master]
|
D
|
C
|
B
|
A

E 的更改与 C 的更改相反。

如果你想“回到过去”到B,你可以使用git checkout B(这将导致detached head,如果你想从那时起进行新的更改,这通常没有帮助) ,您可以使用git resetmaster 移回B,使CD 符合垃圾收集条件,或者您可以使用git branch 创建一个 分支在B

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

【讨论】:

    猜你喜欢
    • 2018-02-26
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多