【问题标题】:Understanding git branch all全部理解 git 分支
【发布时间】:2014-04-17 07:07:57
【问题描述】:

这里的箭头(->)是什么意思:

* development
  master
  production
  remotes/origin/HEAD -> origin/production
  remotes/origin/development
  remotes/origin/master
  remotes/origin/production

我只是想真正了解 git,所以我深入挖掘并发现我越深入,我对 git 的了解就越少,哈哈。

【问题讨论】:

  • 想我明白了。这是否指向最新的提交?

标签: git git-branch


【解决方案1】:

remotes/origin/HEAD->origin/production

意思

remotes/origin/HEAD 指向origin/production


origin/HEAD 不是独立的分支。它只是一个指向“主”分支的指针,即克隆后得到的那个。

试试git symbolic-ref refs/heads/foo refs/heads/master。之后git branch 会显示:

foo -> master

那么foo 只是master 的另一个名称。

【讨论】:

  • 我不明白。 Head不是当前签出的分支吗?
  • 嗯,HEAD 是指向当前分支的指针(又名符号引用)。您可以通过cat .git/HEADgit symbolic-ref HEAD 看到它。在您的情况下,origin/HEAD 与远程存储库中的概念相同,git clone 使用它来确定克隆后直接签出的分支。
  • 嗯...很酷。奇怪的是,我 cd'd 到我的远程仓库并用 git checkout development 更改了 HEAD(这移动了 HEAD 对吗?),但是当我 cd'd 回到我的本地仓库时(我只是通过另一个模拟遥控器文件)并再次登录,HEAD 没有改变。
  • @Costa HEAD 在 git 中在不同的上下文中具有不同的含义,在这种情况下,您已经混淆了两个不同的上下文。非裸远程 repo 上的 HEAD 只是远程上当前签出的修订版,但它与该远程 repo 的克隆将具有的 HEAD 引用无关。更改本地仓库引用的唯一方法(据我所知)是使用@michas 提到的git symbolic-ref。您可以在documentation 中了解更多信息。
  • @Costa 对于它的价值,事实上,这些有些相关但不同的引用被命名为相同的东西起初令人困惑(它不是直观),直到您了解每个人在自己的上下文中实际代表什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 2017-10-01
  • 2017-09-05
  • 1970-01-01
  • 2012-05-13
  • 2012-06-24
相关资源
最近更新 更多