如何将“master”重置为“origin/master”?

如何将“master”重置为“origin/master”?

我可以用更简单的方式执行以下操作吗?

git checkout origin/master
git branch -D master
git branch master
git checkout master

答案1

Git 支持这个命令:

git checkout -B master origin/master

检查origin/master分支然后master在那里重置分支。

更新:
或者您可以使用新的切换命令来实现

git switch -C master origin/master

答案2

作为善良的龙回答提及,您可以master直接在origin/master以下位置重新创建:

git checkout -B master origin/master

git checkout手册页 提及:

如果-B给定,<new_branch>则如果不存在则创建;否则,它将被重置. 这相当于

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

自 Git 2.23+(2019 年 8 月)以来git checkout太混乱了,新的(仍处于实验阶段)命令是git switch

git switch -C master origin/master

那是:

-C <new-branch>
--force-create <new-branch>

类似于,--create但如果<new-branch>已经存在,它将被重置为<start-point>
这是一个方便的快捷方式:

$ git branch -f <new-branch>
$ git switch <new-branch>

最初的建议:

就像是:

$ git checkout master

# remember where the master was referencing to
$ git branch previous_master

# Reset master back to origin/master
$ git reset --hard origin/master

第 2 步是可选的。

答案3

我认为与此选项相比,VonC 的答案也具有复杂性:

git update-ref refs/heads/master origin/master
git reset --hard master

git 会自动记录 ref 的每个值(通过 reflog)。因此,运行该命令后,将master@{1}引用 master 的上一个值。

VonC 的答案是正确的,但是它浪费时间将 master 的旧值检出到文件系统中。

如果你关心仓库中的孤立对象,那么你可以运行git gc

答案4

如果您已经在线,master您可以执行以下操作:

git reset --hard origin/master

它会将本地master分支指向远程origin/master并丢弃工作目录中的任何修改。

相关内容