我有一个叫做masterdev的分支。
我在那个分支上做了一些提交,所以它可能比服务器上的masterdev领先大约10个提交。但事实上这些提交已经不好了,所以我不想推送它们。
我可以通过还原或变基来得到与这些提交相反的结果,但我认为这样做并不清晰。
所以我想要做的是,如果masterdev落后,获取与git pull origin masterdev相同的行为。
我想要清除本地的masterdev,使其与服务器上的相同。
我有一个叫做masterdev的分支。
我在那个分支上做了一些提交,所以它可能比服务器上的masterdev领先大约10个提交。但事实上这些提交已经不好了,所以我不想推送它们。
我可以通过还原或变基来得到与这些提交相反的结果,但我认为这样做并不清晰。
所以我想要做的是,如果masterdev落后,获取与git pull origin masterdev相同的行为。
我想要清除本地的masterdev,使其与服务器上的相同。
git reset --hard origin/masterdev
git pull origin masterdev
如果在索引和工作树中没有值得保存的内容,使用简单的git reset --hard
命令即可:
$ git status
On branch masterdev
Your branch is ahead of 'origin/masterdev' by 10 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
$ git fetch origin
... [snip]
$ git reset --hard origin/masterdev
git reset --hard origin/masterdev
应该可以解决问题。然后你可以简单地执行 git pull origin masterdev
HEAD^
假设只有一个提交要丢弃。 (而仅使用 HEAD
不会丢弃任何提交 - 如果那是正确数量的提交,则需要 HEAD~10
,但更简单的方法是运行 git fetch
以获取更新的 origin/masterdev
,然后直接使用它。) - torek很简单,只需执行git checkout --track origin/master
命令。它会在本地为您创建分支,并与远程版本完全一致。