关于git:如何“重置”更改到“从父分支合并”?

How to “reset” the changes up to “merge from parent branch”?

我对Git术语不太熟悉,请使用更常见的术语进行解释。我正在使用Github桌面,我已经将其提交到我的分支中。现在我想打开对master的pull请求,但在此之前,我首先使用"从master更新"选项从master获取所有更改,这样当我执行pull和merge时,就不会在master上发生任何冲突。

当我从master更新时,我遇到了一些冲突。像往常一样,我去解决冲突。但后来我意识到我解决冲突的方式不正确,我想"重置"文件的状态,比如冲突的开始,这样我就可以重新开始。我现在不知道该怎么办。

  • 我已经尝试过git stash所有的更改,这样我可以再次从master"更新",但是git stash失败了。我以前从来没有失败过。(fatal: git-write-tree: error building trees
    Cannot save the current index state
    号)。
  • 我已经试过了,但似乎没有什么改变。我所知道的是,git reset实际上正在撤消我最近的提交,所以我担心我的提交现在会弄乱来自master的更新和未提交的代码。

我应该做些什么来"重置"文件的状态,比如冲突的开始,这样我就可以解决冲突了?谢谢。


如果合并错误,可以执行以下步骤:

  • Git复位头1
  • Git添加。
  • Git重置--硬

这将删除最新的提交。现在您可以重新进行合并。

但我也建议另一种解决合并冲突的方法:重新平衡。使用REBASE,您需要移入您的功能分支并运行一个类似于git rebase -i master的命令。如果没有冲突,就好像您的分支是从最新的主服务器开始的:就像您的主服务器是最新的一样。一个REBASE MOVE ALL提交,因此当一个REBASE遇到冲突时,该REBASE将被"暂停",并邀请您解决每个冲突。如果您遵循REBASE指令,对于每个有冲突的提交,您需要手工修复提交,分别是git addgit rebase --continue(但只需遵循命令指令)。