如何回滚GIT中某个分支的所有提交?

时间:2018-08-10 18:23:44

标签: git github gitlab

我在08/01年“ 12345-Fix”上创建了新的分支机构

  • 08/01在本地提交1
  • 08/02在本地提交2次
  • 08/03在本地提交3次

我在08/04“ 56789-Fix”上从master创建了新分支

  • 08/04在本地提交4次
  • 08/05在本地提交5次

在08/05,我将“ 56789-Fix”分支代码推送到了远程主分支,因此这同时在主分支中推送了提交4和提交5。

从08/06开始重新制作“ 12345-Fix”

  • 08/06在本地提交6
  • 08/07在本地提交7

在08/07,我将“ 12345-Fix”分支代码推送到了远程主服务器,因此这将所有5个提交(1,2,3,6,7)都推送到了master分支。

现在,当我在Github中查询时,提交列表显示为

  • 提交7 08/07
  • 提交6 08/06
  • 提交5 08/05
  • 提交4 08/04
  • 提交3 08/03
  • 提交2 08/02
  • 提交1 08/01

我的问题是,如果我只想回滚master分支中的“ 12345-Fix”分支代码,该怎么做?我知道我可以回滚到某些提交“ Commit 1”,但是它会回滚Commit 4和Commit 5的“ 56789-Fix”,我不想回滚。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

最初休息到HEAD-2

删除6、7

  1. git reset HEAD~2
  2. git checkout .

使用git stash记录4,5

  1. git reset HEAD~1
  2. git stash
  3. git reset HEAD~1
  4. git stash

使用git reset HEAD〜3重置为1之前的提交(删除1,2,3 )

  1. git reset HEAD~3
  2. git checkout .

使用git stash pop弹出记录的commit(4,5)

  1. git stash pop
  2. git commit -am "commit 4"
  3. git stash pop
  4. git commit -am "commit 5"

git push origin master -f

答案 1 :(得分:0)

自从提交提交以来,您将需要创建一个或多个新提交来撤消提交1,2,3,6和7的影响。此命令为VT_RECORD

我想做类似的事情

git revert

然后检查git revert --no-commit 1 2 3 6 7所做的更改是否是您想要的,然后使用常规的git revert提交这些撤消操作。

您将需要在命令中正确标识每个提交,并且不能使用如图所示的数字。我建议使用每个提交ID的前几个字符代替我上面显示的每个小整数,或者,如果您有信心的话,可以使用修订范围。