Git 还原或硬重置
Git revert or hard reset
情况是这样的
我已经对 public 回购做出了自己的承诺,客户认为干涉是个好主意。
所以他更改了一些文件,添加了他自己的文件并删除了我的一些文件。
明确地说,我想将所有内容推送到 public 回购,就像我上次提交时一样,我自己做了一些小改动,并丢弃他所做的一切。
当我这样做时 git reset --hard <commit_id>
我无法推送到 public 回购。
我也试过git pull origin master --rebase
,但这没有影响。
我仍然看到他添加的文件和目录,而我的仍然被删除。
如何解决此问题以完全恢复并向上游推送?
为了将您的本地副本完全重置为服务器上的内容,您需要首先获取最近的提交:
git fetch
然后将您的分支硬重置到远程分支的顶部。假设有问题的分支名为 master
,您应该首先检查它,然后硬重置为 origin/master
:
git checkout master
git reset --hard origin/master
另一方面,如果您想将 origin 的 master 分支设置为您本地的任何分支(不推荐),您可以强制推送:
git push --force
情况是这样的
我已经对 public 回购做出了自己的承诺,客户认为干涉是个好主意。
所以他更改了一些文件,添加了他自己的文件并删除了我的一些文件。
明确地说,我想将所有内容推送到 public 回购,就像我上次提交时一样,我自己做了一些小改动,并丢弃他所做的一切。
当我这样做时 git reset --hard <commit_id>
我无法推送到 public 回购。
我也试过git pull origin master --rebase
,但这没有影响。
我仍然看到他添加的文件和目录,而我的仍然被删除。
如何解决此问题以完全恢复并向上游推送?
为了将您的本地副本完全重置为服务器上的内容,您需要首先获取最近的提交:
git fetch
然后将您的分支硬重置到远程分支的顶部。假设有问题的分支名为 master
,您应该首先检查它,然后硬重置为 origin/master
:
git checkout master
git reset --hard origin/master
另一方面,如果您想将 origin 的 master 分支设置为您本地的任何分支(不推荐),您可以强制推送:
git push --force