远程和本地 git 存储库

Remote and local git repository

我有一个名为 masterdev 的分支。

我对该分支做了一些提交,所以它可能比服务器上的 masterdev 提前 10 次提交。 但实际上那些commit已经不行了,所以我不想push了。

我可以恢复或变基可能是为了得到与我在那些提交中所做的相反的事情。但是我觉得这看起来一点都不清楚。

所以我想做的是获得与 git pull origin masterdev if masterdev 落后时相同的行为。

我想清除本地 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.

更复杂的事情

(中间 git fetch 步骤可以在 git status 之前或之后 运行,尽管前面的提交数量 and/or 可能会因此而改变。我建议一般避免 git pull,在这种情况下你不需要它。)

git reset --hard origin/masterdev 应该可以解决问题。然后你可以简单地做 git pull origin masterdev

简单,就git checkout --track origin/master。将在本地为您创建分支,并且与远程版本完全相同