在我们的企业中,作为DevOps团队的一部分,我们没有特权在本地笔记本电脑上安装git
并获取GitLab代码存储库。 Jenkins工具可以通过SSH访问GitLab存储库,但我们没有SSH可以访问jenkins(已安装Git)。我们可以通过诸如this之类的GitLab门户查看仓库,然后将Jenkins配置为从GitLab获取代码。
因此,我无法在笔记本电脑上运行诸如git log --all --decorate --oneline --graph
之类的命令来了解合并方面。
在我们企业中的Gitlab门户的tags部分下,我看到一个条目,如下所示:
我知道标记是git commit
哈希键(40个字符)的别名,但我需要澄清上面为标记名称(sprint12-tag
)指定的条目分支(feature-branch-x
)与分支(develop
)的合并。
如here所述,标签表示某个时间特定分支的版本。分支代表一个单独的开发线程,可以与其他开发工作在同一代码库上同时运行。
因此,我的理解是,已将标签sprint12-tag
分配给feature-branch-x
上的特定提交(不能是最新的提交),如下所示:
到目前为止,当我单击左上方的图标时,我会在GitLab主页中看到以下选项
问题:
0)如何在GitLab门户上查看此类图表(上方)?除非我们在本地笔记本电脑上运行git log --all --decorate --oneline --graph
...
1)
在任何分支(在本例中为sprint12-tag
)上使用上述标记(feature-branch-x
),可以说开发人员已经在命令下运行了吗?
$ git checkout develop
$ git merge sprint12-tag # ignoring the latest commit c5 on 'feature-branch-x'
$ # or it can be `git merge e324567`
2) 我如何理解下面的条目? 如here所示...
答案 0 :(得分:1)
在GitLab上,选择左侧边栏中的Repository > Graph
以查看存储库的提交树。这将显示所有提交和合并,并带有分支名称和标记。
[2.2]
是一个标签。
我要说的是,通常,开发人员标记在合并某些工作后 手动提交。您从dev
到master
进行最终合并或PR,并得到合并提交。然后,将此合并提交标记为release2.0
,并且永远不会从该提交中移出。我确信在某些组织中这也是自动化的。
我如何理解以下条目?
该图像显示了一个名为v11.7.5
的标签。此标记已在GitLab上标记为 (不在git本身中)为“版本v11.7.5”。标签指向的提交为c5b5b18b
。该提交的提交消息为Update VERSION to 11.7.5
示例:
https://code.sealedabstract.com/drewcrawford/CaveJohnson2/network/master
答案 1 :(得分:1)
标记表示特定分支在某个时刻的版本。
此报价具有误导性。标签和分支是两个独立的事物。您应该将标记视为特定提交时的静态标记。另一方面,分支是动态的,并且在您向分支添加提交时移动。有关分支和标签之间的区别的更多讨论,请访问我们的this Q&A姐妹网站上的Software Engineering。