gpt4 book ai didi

git - 为什么我的 git 分支没有指向最新的提交?

转载 作者:行者123 更新时间:2023-12-05 08:39:47 25 4
gpt4 key购买 nike

我在 SourceTree 中看到了下图。我已 checkout “dev”分支,但我不明白为什么我要指向以蓝色突出显示的提交,而不是列表顶部的提交。

enter image description here

该图表明列表顶部的提交已在开发分支上提交(尽管我总是觉得 SourceTree 图令人困惑,但我不确定这是否真的是该图告诉我的)。如果我这样做:

git checkout dev
git reset --hard head

然后我仍然在以蓝色突出显示的同一个提交上。我也不清楚为什么 master 分支显示“origin/HEAD”标记。列表顶部的提交不应该标记为“origin/HEAD”。这是怎么回事,我需要做些什么来解决这个问题吗?

最佳答案

这都是一个侧边栏,但有时它很重要。有时,它不太重要或根本不重要,但值得了解:

  • HEAD , 全部大写,对 Git 有特殊的意义。这也可以拼写为 @ .

  • head , 小写,没有特殊含义。

如果您使用的是不区分大小写的文件系统(例如,默认的 Windows 和 MacOS),全小写的名称 head 最终会匹配 Git 存储的文件 @中的数据,无论如何对于主要工作树来说,它被命名为 .git/HEAD .所以它在 Windows 和 MacOS 上都可以正常工作。默认情况下,它在 Linux 上不起作用,并且在添加的工作树中无法正常工作。1 始终使用 @HEAD拼写以确保它在所有情况下都适合您。

Also I'm unclear on why the master branch is showing a marker of 'origin/HEAD'. Shouldn't the commit at the top of the list be marked 'origin/HEAD'. What's going on here ...?

在什么基础上构建一点Code-Apprentice said :你自己的 Git 副本,到你自己的 Git 存储库中,它在其他 Git 上看到的分支名称在 origin .它在这些复制的名称前加上 origin/ 前缀这样您就可以将它们与您的 名称区分开来。这就是为什么你最终得到 origin/master 的原因, origin/dev ,等等:他们的 Git 有一个 master , 一个 dev , 等等。

就像你自己的仓库,有一个特殊的名字HEAD为了记住您 checkout 的分支名称,他们的 Git 有一个当前分支名称。在早期的某个时候,您运行了 git clone <em>url</em> (或与此命令等效的某些 GUI)创建您的 Git 存储库。你的 Git 调用了他们的 Git,不仅得到了他们的分支名称列表,还得到了他们的 @ 的内容。/HEAD当前分支信息。那个——在本例中是 master —根据 origin/master 选择您的 Git 在新克隆中创建的分支你的 Git 基于他们的 master 创建. (哇!)

在你的 Git 完成所有这些读取他们的 HEAD 的过程之后(并看到 master )以便阅读他们的 master (你的 origin/master )来创建你的 master ,您的 Git 在您自己的存储库中创建了一个符号引用,以提醒您他们的 HEAD包含他们的名字master你调用谁origin/master .该提醒几乎永远保留在您的存储库中。这不是很有用。事实上,它似乎完全没用——我自己从未发现它有任何用处。但它就在那里!


1在它可以正常工作的那些系统上,发生的是 head , 小写,匹配 .git/HEAD (大写)文件,因此您得到 main 工作树在/中使用的提交,而不是当前添加的工作树在/中使用的提交。

关于git - 为什么我的 git 分支没有指向最新的提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58985695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com