小编典典

需要将 git 分支重置为原始版本

all

我不小心在一个我不应该有一段时间的分支上工作,所以我把它分支出来,给它一个合适的名字。现在我想将我不应该使用的分支覆盖到来自 origin (github)
的版本。是否有捷径可寻?我尝试删除分支,然后重新设置跟踪分支,但它只是给了我正在处理的版本。


阅读 117

收藏
2022-03-06

共1个答案

小编典典

如果您还没有推送到原点,您可以使用以下命令将分支重置为上游分支:

git checkout mybranch
git reset --hard origin/mybranch

(确保您在单独的分支中引用您的最新提交,就像您在问题中提到的那样)

请注意,刚刚重置之后,mybranch@{1}是指重置之前的旧提交。

但如果您已经推送,请参阅“创建 git分支,并将原始状态恢复为上游状态”以获取其他选项。


使用 Git 2.23 (August 2019) ,这将是一个命令: git switch. 即:git switch -C mybranch origin/mybranch

例子

C:\Users\vonc\git\git>git switch -C master origin/master
Reset branch 'master'
Branch 'master' set up to track remote branch 'master' from 'origin'.
Your branch is up to date with 'origin/master'.

这会恢复索引和工作树,就像git reset --hard会一样。


areset --hard删除任何新文件或将修改后的文件重置为 HEAD

实际上,为了确保您从“干净的石板”开始,git clean -f -d重置后的 a 将确保工作树与您刚刚重置的分支 完全相同。


此博客文章建议使用这些别名(master仅适用于分支,但您可以调整/扩展这些别名):

[alias]
   resetorigin = !git fetch origin && git reset --hard origin/master &&

git clean -f -d
resetupstream = !git fetch upstream && git reset –hard
upstream/master && git clean -f -d

然后你可以输入:

git resetupstream

要么

git resetorigin
2022-03-06