我不小心在一个我不应该有一段时间的分支上工作,所以我把它分支出来,给它一个合适的名字。现在我想将我不应该使用的分支覆盖到来自 origin (github) 的版本。是否有捷径可寻?我尝试删除分支,然后重新设置跟踪分支,但它只是给了我正在处理的版本。
如果您还没有推送到原点,您可以使用以下命令将分支重置为上游分支:
git checkout mybranch git reset --hard origin/mybranch
(确保您在单独的分支中引用您的最新提交,就像您在问题中提到的那样)
请注意,刚刚重置之后,mybranch@{1}是指重置之前的旧提交。
mybranch@{1}
但如果您已经推送,请参阅“创建 git分支,并将原始状态恢复为上游状态”以获取其他选项。
使用 Git 2.23 (August 2019) ,这将是一个命令: git switch. 即:git switch -C mybranch origin/mybranch
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会一样。
git reset --hard
areset --hard将 删除任何新文件或将修改后的文件重置为 HEAD 。
reset --hard
实际上,为了确保您从“干净的石板”开始,git clean -f -d重置后的 a 将确保工作树与您刚刚重置的分支 完全相同。
git clean -f -d
此博客文章建议使用这些别名(master仅适用于分支,但您可以调整/扩展这些别名):
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
[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