我有一个master
和一个prod
分支,它们跟踪同名的遥控器,并且根据git log
都是相同的提交
但是,当我键入git log prod..master
时,我从上一个〜week似乎在两个分支中都得到了一堆提交。
如果我git branch -vv
可以看到prod
跟踪origin/prod
,并且如果我git branch -a | grep prod
可以
* prod
remotes/origin/prod
另外,当我git checkout prod
时,我得到warning: refname 'prod' is ambiguous.
我对发生的事情完全感到困惑-有人可以给我...指针(对不起)。
答案 0 :(得分:2)
由于您提到了git log标记,表明本地prod和远程prod分支是相同的,因此存在很多差异,因此看起来好像您有一个名为prod
的标签
如果您不熟悉标签,请阅读以下答案:
What is git tag, How to create tags & How to checkout git remote tag(s)
简而言之,使用此命令来检查您的标签:
git tag --list
答案 1 :(得分:2)
如果不是标签,则必须是其他引用,其优先级在搜索顺序中“胜过”而不是分支名称。 The gitrevisions documentation提供了将符号名解析为哈希ID的六步过程:
如果存在
$GIT_DIR/<refname>
,这就是您的意思(这通常仅对HEAD
,FETCH_HEAD
,ORIG_HEAD
,MERGE_HEAD
和CHERRY_PICK_HEAD
);否则,如果存在
refs/<refname>
,则为refs/tags/<refname>
否则,如果存在
refs/heads/<refname>
,则为refs/remotes/<refname>
否则,如果存在
refs/remotes/<refname>/HEAD
,则为git log prod..master
否则,如果存在
prod
,则为master
否则,如果存在
$GIT_DIR
。
当您写prod
时,名称refs/prod
和prod
分别经过六个步骤。如果prod
中有一个名为git log --oneline
的文件,其中包含哈希ID,则第1步将找到该文件并使用其值。如果不是,Git将继续执行步骤2,以查看refs/heads/prod
是否命名哈希ID。如果不是,则Git将继续执行步骤3(尝试将9e0ae5792f3c80e76a2b41ed325fa1a20d599a4f
解析为标签名称),如果失败,请继续执行步骤4(将尝试将prod
解析为分支名称)。
鉴于git tag --list
图片显示git checkout
存在,步骤4肯定会成功,并产生值git checkout
(如果我正确地转录了它) 。因此,git checkout prod
可以解析为不同哈希ID的唯一方法是前面步骤之一是否成功。
标签名称是最可能的罪魁祸首,但是your comment暗示没有标签名称:它们将显示在refs/heads/prod
输出中。剩下的步骤可能是步骤1或步骤2。
请注意,当您使用git for-each-ref
时,Git 不会按该顺序应用六步过程:首先,Git尝试使用该名称作为分支名称。只有失败了,Git才会退回到六步过程。如果成功,$GIT_DIR/prod
将分离您的HEAD,并通过其哈希ID检出提交。因此,即使参考名称不明确(除了.git
之外,还有其他含义),您仍可以prod
进入分支。
命令.asBitmap()
将打印出每个引用(第2步到第6步可以匹配的所有内容)。它不会检查 Glide.with(this)
.asBitmap()
.load(imageAsBytes)
.into(image)
(第1步将匹配),但是您可以自己查看.valueChanges()
目录中的内容以查看是否存在名为viewTemplate.ts
的文件。>