git应用的问题--提交到错误的分支

git应用的问题--提交到错误的分支

在使用git的过程中,我们会接触到数个分支,因此也容易出现将内容提交到错误的分支的情况。因此我们需要将这次提交移动回到正确的分支,这里我们使用git中的命令对问题进行修正(当然你也可以通过回忆和对比将内容重新还原出来)。这里我们分成两种情况:

  1. 未提交到远端
  2. 已经提交到远端

未提交到远端

假设我们的git目前是这个情况,feature-1, feature-2已经合并到develop上。

接着我们将原本应该提交到feature-1上的内容提交了feature-2分支上,因此会形成下图的情况。

由于我们的还未将代码提交到远程,因此只要使用git cherry-pick以及git reset便可将代码移动到正确的分支上,同时将develop分支进行还原。

  1. git checkout feature-1切换分支到feature-1上。
  2. git cherry-pick fa4d006将错误的提交通过cherry-pick命令单独拉取到feature-1上,其中fa4d006就是那一次错误的提交的编码。
  3. git checkout feature-2切换到feature-2分支。
  4. git reset --hard 548e65cfeature-2分支完全重置到提交前的状态。

经过以上的步骤,我们得到的节点树就如下图,已经回到了正确的情况。注意在操作的时候,要先进行cherry-pickreset重置。

已经提交到远端

接着我们来讲讲当在下图已经提交到远程时怎么办。

由于我们本地的修改已经同步到远端,那么再通过之前的git reset是不会改变远端的git版本,除非我们使用git push -f来强制重置远端的feature-2分支情况。

但是!但是!但是!

git push -f可以说是非常危险🚨🚨🚨的操作,因为你的强制推送可能会导致所有使用当前git项目的人都出现版本混乱问题,非常不建议在团队中使用该操作。

因此我们将换成git revert来重置feature-2分支的情况。下面我们来看看操作步骤:

  1. 先是git checkout feature-1git cherry-pick fa4d006将错误的提交拉取到feature-1上。
  2. git checkout feature-2切换到feature-2分支。
  3. git revert fa4d006将错误的提交进行回滚。
  4. git push最后将feature-2同步到远端。

经过上面的步骤我们就可以将分支回到正确的情况了,cherry-pickrevert之间就没有先后顺序了。

posted @ 2021-05-05 21:35  Leney  阅读(482)  评论(0编辑  收藏  举报