删除并再次添加远程存储库后 "git branch" 输出的差异
Differences in "git branch" output after removing and adding again remote repository
当我从远程仓库克隆一些项目,然后制作 git branch -a
.
我得到了:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
然后,如果我删除远程存储库并再次添加它:
$ git remote remove origin
$ git remote add origin username@server:/path/to/repository.git
$ git branch -u origin/master master
我期待类似的结果,但得到不同的输出:
$ git branch -a
* master
remotes/origin/master
这种差异从何而来,意味着什么?手动远程添加后如何实现相同的输出?
我希望在 cat .git/config
中看到一些差异,但两种情况下的输出相同。
remotes/origin/HEAD
与符号 link 非常相似(过去它确实是一个 symlink,但他们必须对其进行更改)。当您 git clone
存储库时,分支 link 也 HEAD
将被签出。
Github 和其他此类服务通常会提供一个管理员 UI 来修改此 HEAD link 以便您可以将 master 以外的分支设置为默认结帐分支。但您也可以使用此命令通过命令行执行此操作。
git remote set-head origin master
这会将您的 git branch -a
输出恢复到克隆时的状态。
还可以设置其他符号引用如foo
git symbolic-ref refs/remotes/origin/foo refs/remotes/origin/master
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/foo -> origin/master
remotes/origin/master
除了 HEAD
之外,我从未见过使用 sym-refs,但我可以想象在很多情况下这可能很方便(即,如果您有一个自动部署到设备测试实验室,如果您的开发团队四处走动,只需要一个参考就好了)
当我从远程仓库克隆一些项目,然后制作 git branch -a
.
我得到了:
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
然后,如果我删除远程存储库并再次添加它:
$ git remote remove origin
$ git remote add origin username@server:/path/to/repository.git
$ git branch -u origin/master master
我期待类似的结果,但得到不同的输出:
$ git branch -a
* master
remotes/origin/master
这种差异从何而来,意味着什么?手动远程添加后如何实现相同的输出?
我希望在 cat .git/config
中看到一些差异,但两种情况下的输出相同。
remotes/origin/HEAD
与符号 link 非常相似(过去它确实是一个 symlink,但他们必须对其进行更改)。当您 git clone
存储库时,分支 link 也 HEAD
将被签出。
Github 和其他此类服务通常会提供一个管理员 UI 来修改此 HEAD link 以便您可以将 master 以外的分支设置为默认结帐分支。但您也可以使用此命令通过命令行执行此操作。
git remote set-head origin master
这会将您的 git branch -a
输出恢复到克隆时的状态。
还可以设置其他符号引用如foo
git symbolic-ref refs/remotes/origin/foo refs/remotes/origin/master
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/foo -> origin/master
remotes/origin/master
除了 HEAD
之外,我从未见过使用 sym-refs,但我可以想象在很多情况下这可能很方便(即,如果您有一个自动部署到设备测试实验室,如果您的开发团队四处走动,只需要一个参考就好了)