我可以以更简单的方式执行以下操作吗?
git checkout origin/master
git branch -D master
git branch master
git checkout master
Run Code Online (Sandbox Code Playgroud)
Von*_*onC 383
正如KindDragon的回答所提到的,您可以master
直接重新创建origin/master
:
git checkout -B master origin/master
Run Code Online (Sandbox Code Playgroud)
该git checkout
手册页 提到:
如果-B
给定,<new_branch>
如果不存在则创建;否则,它被重置。这是交易等价物
$ git branch -f <branch> [<start point>]
$ git checkout <branch>
Run Code Online (Sandbox Code Playgroud)
自 Git 2.23+(2019 年 8 月)以来,由于git checkout
太混乱,新的(仍处于实验阶段)命令是git switch
:
git switch -C master origin/master
Run Code Online (Sandbox Code Playgroud)
那是:
Run Code Online (Sandbox Code Playgroud)-C <new-branch> --force-create <new-branch>
类似,
--create
除了如果<new-branch>
已经存在,它将被重置为<start-point>
。
这是一个方便的快捷方式:Run Code Online (Sandbox Code Playgroud)$ 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
Run Code Online (Sandbox Code Playgroud)
第 2 步是可选的。
小智 154
Git 支持这个命令:
git checkout -B master origin/master
Run Code Online (Sandbox Code Playgroud)
检查origin/master
分支,然后master
在那里重置分支。
Ale*_*ird 31
我认为与此选项相比,即使是 VonC 的答案也具有复杂性:
git update-ref refs/heads/master origin/master
git reset --hard master
Run Code Online (Sandbox Code Playgroud)
git 自动记录 ref 的每个值(通过 reflog)。因此,在您运行该命令后,请master@{1}
参考 master 的先前值。
VonC 的答案是正确的,但它浪费时间将 master 的旧值签出到文件系统中。
如果您关心 repo 中的孤立对象,那么您可以运行 git gc
小智 29
如果您已经在,master
您可以执行以下操作:
git reset --hard origin/master
它将本地master
分支指向远程分支origin/master
并丢弃工作目录中的任何修改。
归档时间: |
|
查看次数: |
464691 次 |
最近记录: |