我可以用更简单的方式执行以下操作吗?
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
并丢弃工作目录中的任何修改。