如何在不创建新分支的情况下还原远程存储库中的更改

时间:2019-05-10 10:32:06

标签: git

我正在参与开发Python 3项目。假设我的分支名为“ my_branch”。我必须对代码进行快速而小的更改,由于懒惰,我在GitLab webui中进行了更改。然后,我在本地存储库中进行了一些更改,而没有拉我的分支。现在,我无法推送更改,因为my_branch与本地存储库不同。如何在不创建新分支的情况下还原远程分支my_branch中的更改。 我基本上只是想退后一步。

git push给出一个错误: 更新被拒绝,因为远程包含您本地没有的工作

2 个答案:

答案 0 :(得分:1)

总结一下您的情况,您要在分支顶部删除一次提交。

有两种情况:

  1. 您想在顶部提交中保留所做的更改
  2. 您不再关心顶部提交的更改

如果您想保留更改,但仍要删除提交并从远程获取最新信息:

git reset --soft HEAD~1
git stash
git pull

使用HEAD〜1进行的软重置将更改从您的最高提交中移出,并将这些更改移入暂存区域,并从分支中删除该提交。现在,您的更改可以在暂存区中使用。您可以轻松地隐藏它们,并且都可以从远程拉动。

从远程拉出后,您可以再次弹出存储,并且上一次提交中的更改将返回。

如果您不再关心自己的提交,那么:

git reset --hard HEAD~1

硬重置只会从分支中删除您的提交。

希望有帮助。

答案 1 :(得分:0)

如果您有...

Local: A->B->C->E
Remote: A->B->C->D

您所要做的就是强行推动。 git push -f origin my_branch 远程上的D提交应该消失。