我在存储库中两次推送了代码并将其拉到服务器上,它遇到了一些问题,因此我不得不返回并硬重置为先前的提交。我只能从上一次提交中获得更改吗?
我曾经回过头来提交'C'的命令
git reset --hard C
视觉表示:
承诺回购:
A-B-C-D-E-F
服务器端的git:
A-B-C'
在本地我只想推送提交'F'中的一些更改。现在我只想从提交'F'中提取更改,并跳过'D,E'。在服务器上,它告诉我我落后三个提交,并且在我拉时它会从所有提交中获取文件。我只希望在“ F”提交或任何其他最新提交中更新文件。
(对不起,英语不好)
答案 0 :(得分:2)
要从F git cherry-pick origin/F
中提取更改,则需要推出新更改。 git push -f origin
。这将从服务器端的分支中删除D和E。
答案 1 :(得分:1)
git reset --hard HEAD~1
git push -f
(Example push: git push -f origin bugfix/bug123)
This will undo the last commit and push the updated history to the remote. You need to pass the -f because you're replacing upstream history in the remote.
And if you want revert or undo a no of commits let's say 3 then the command will change like
git reset --hard HEAD~3
git push -f