远程和本地 Git 仓库

3

我有一个叫做masterdev的分支。

我在那个分支上做了一些提交,所以它可能比服务器上的masterdev领先大约10个提交。但事实上这些提交已经不好了,所以我不想推送它们。

我可以通过还原或变基来得到与这些提交相反的结果,但我认为这样做并不清晰。

所以我想要做的是,如果masterdev落后,获取与git pull origin masterdev相同的行为。

我想要清除本地的masterdev,使其与服务器上的相同。


1
你可以简单地执行 git reset。 - ShellZero
4个回答

4
我认为你想要的是 - 这将重置您本地的masterdev版本,删除您的提交记录。然后您需要拉取以确保您的版本是最新的。
git reset --hard origin/masterdev

git pull origin masterdev

1
这个答案也是正确的,O/P应该对它感到相当满意。 - torek
我刚做了一个测试,那正是我所要寻找的。谢谢你的帮助。但是似乎在此之后使用 git pull 是无用的,当然如果没有更多需要拉取的内容的话。 - user8238012
如果没有更多需要拉取的内容,当然可以。当然,这行代码并不是解决问题所必需的,但养成这个习惯可能是一个好主意,因为它有助于防止合并冲突。 - katniss.everbean

3

如果在索引和工作树中没有值得保存的内容,使用简单的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”之前或之后运行,尽管提交次数可能会因此而改变。我建议一般情况下避免使用“git pull”,而对于这个情况,你也不需要它。)

1

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


1
HEAD^ 假设只有一个提交要丢弃。 (而仅使用 HEAD 不会丢弃任何提交 - 如果那是正确数量的提交,则需要 HEAD~10,但更简单的方法是运行 git fetch 以获取更新的 origin/masterdev,然后直接使用它。) - torek
好的,我的错。谢谢。已更新 :) - ShellZero

0

很简单,只需执行git checkout --track origin/master命令。它会在本地为您创建分支,并与远程版本完全一致。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接