我对我在GIT中所做的操作有疑问。我有一个存储库,里面有两个java项目,目前位于某个标签上。
Project 1 - MyTag 1.0.0
Project 2 - MyTag 1.0.0
到目前为止一切顺利。
昨天我检查了一些代码并再次标记了代码。项目1有一些变化,但项目2没有。
在我检查更改后,我再次在MyTag 2.0.0上标记了存储库。这是我期待看到的......
Project 1 - MyTag 2.0.0
Project 2 - MyTag 2.0.0
但我得到了......
Project 1 - MyTag 2.0.0
Project 2 - MyTag 1.0.0
有谁可以告诉我为什么Project 2没有获得新的TAG?
我使用TortoiseGit作为我的Windows GIT客户端。
感谢
答案 0 :(得分:2)
Project 1
和Project 2
。 (顺便说一句,我建议将它们分成不同的回购。)项目2包含在标签中。您所看到的是git报告,Project 2
的最后一次提交是MyTag 1.0.0
指向的提交。
MyTag 2.0.0
仍然包含 Project 2
..... Project 2
自MyTag 1.0.0
以来一直没有变化。如果您结帐MyTag 2.0.0
,那么您将获得整个仓库的快照。
标签是提交的指针。他们指向任何一个
a)直接(轻量级标签)或
b)通过标记对象,然后指向提交(带注释的标记)。
MyTag 2.0.0
指向包含C2
中的更改集的提交(让我们说Project 1
)。我假设Project 2
中的文件没有被更改和提交,因此标签不会将直接与Project 2的文件相关联。 MyTag 1.0.0
也指向提交(让我们说C1
)。
由于MyTag 2.0.0
指向C2
指向C1
,所有这些更改都由MyTag 2.0.0
有效指出,并在签出时包含在内。< / p>
MyTag 1.0.0
可能指向 Project 1/
和Project 2
目录中的文件更改提交。
视觉上提交看起来像这样:
* C3 ---> C2 ---> C1 ---> init
/ /
/ /
MyTag 2.0.0 /
/
MyTag 1.0.0
请记住,我没有使用TortoiseGit,因此我无法准确看到您所看到的内容。然而,我上面已经解释过git标签如何指向提交的概念解释了为什么任何 git客户端会为你所描述的内容显示类似的结果。我在测试仓库中执行了您描述的提交和标记,并在SourceTree中获得了类似(正确)的结果。