如何在本地和远程上撤消git提交而不会丢失更改

时间:2016-01-25 14:04:35

标签: git git-push git-commit

我们在远程存储库中有一个项目。最近我创建了一个新分支" Feature7"并做了很大的改变,并做了两次,也推了两次。幸运的是,没有人从那个分支中撤出。之后,有很多提交和推送主分支,但没有人在Feature7分支上工作。

现在我要撤消两个提交并推送,如果可能的话,从本地和远程推送Feature7分支。但我希望这些变化也能保持在本地。我不想放弃我的改变。

简而言之,我只想撤消提交和推送,而不会丢失我在本地的更改。

我这样做的原因是因为在新分支中存在整个项目的行结尾的问题。所以我搞砸了整个项目的历史。无法识别我在新分支中所做的更改。

1 个答案:

答案 0 :(得分:1)

我首先将您的feature7分支拉到本地备份分支:

git checkout -b feature7-backup origin/Feature7

然后转到原来的feature7分支,重置之前的两个提交,然后强行推送到你的遥控器:

git checkout feature7
git reset HEAD~2
git push -f origin HEAD:Feature7

所有这一切都假设你的遥控器是origin

现在,遥控器不再具有这两个提交,但是在#34; feature7-backup"中有一个本地副本。分支(以及在重置后当前分支上未提交)。