我可以以更简单的方式执行以下操作吗?
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 次 |
| 最近记录: |