GIT 显示不属于分支的提交 ID 信息



我已经在 GIT 上工作了一段时间,我有一个基本的疑问

a( 我在分支"master"上创建了三个文本文件"a.txt、b.txt 和 c.txt",添加并提交了文件

b( 我从"master"创建了一个新的分支"temp"(提交# 666a663(

c( 我从"master"修改了文件"c.txt",添加并提交了它(提交# 5cbbf09(

ca18:TEST_GIT sathishkumark$ git branch
* master
temp
ca18:TEST_GIT sathishkumark$ git log --pretty=oneline
5cbbf09cf619fa5462240b8afe3af4274e0d7dcf File revised
666a6634e938e7aa5e042e1b443ef817a98b8232 Initial version

现在,我使用"git checkout temp"切换到分支"temp">

当我从分支"临时"输入"git show 5cbbf09"时,git 显示有关提交 id# 5cbbf09 的信息

问题

这里的问题是为什么当我在分支"temp"上时,"git 显示有关"5cbbf09"的信息。

提交 ID# 5cbbf09 属于分支"主",而不是分支"临时"。

我希望 git 不会显示提交的信息,因为提交不属于分支"临时">

请澄清

GIT 提交没有标记到分支吗? (或( 换句话说,"分支和提交"之间的关系是什么。

这里没有太多要澄清的,你问的是特定的提交,所以 GIT 显示了有关它的信息。您在哪个分支上有什么关系?在这种情况下,您的期望是错误的。

如果您只想在当前分支上进行提交,则默认情况下没有参数的简单git log将仅提供从时间开始到分支尖端的提交,而没有其他分支。

然后,您可以使用其他标志进行过滤,但根据您的直接请求,提供特定的提交(或分支(将强制 GIT 显示它们。如果您不想查看有关提交的信息,为什么要引用它?基本上你想要一个忽略你的程序......

回答你的最后一个问题:不。逻辑颠倒了。事实上,分支只是指向提交的"指针",仅此而已 - 其他版本控制工具具有不同的分支概念,因此这是早期注意的好点。您可以移动此指针,但这不会影响一般情况下的提交。请注意,虽然末尾没有分支的提交链有点像"泄漏的内存",但如果您遇到这种情况,git 会清理它。

但是,日志的行为会有所不同:如果您git log <branch>,您将看到一个日志,直到分支指向的提交,无论您当前的分支如何,而不仅仅是指向的提交。

除了 ID 之外,唯一可以与特定提交相关联(身份明智(的是标签(它不是一个分支!而是提交的命名,或者如果你愿意的话,是一个别名(,但仅此而已。

最新更新