我试图让我的 GitLab 管道自动标记分支,master但没有成功。
由于该项目是一个composer包,所以我想要做的是从文件中获取版本号composer.json,将其存储在一个变量中,然后使用这个变量与git来标记分支。
这是我的管道工作部分.gitlab-ci.yml:
tagging:
stage: publish
image: alpine
only:
- master
script:
- version=$(cat composer.json | grep version | grep -Eo "[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+")
- git tag "$(version)"
- git push --tags
Run Code Online (Sandbox Code Playgroud)
我实际上无法判断问题是什么,因为 GitLab 作业输出中没有显示任何输出,如下图所示

我在Git中有一些用于创建紧急版本的维护分支(即修复生产中的关键错误).这些分支通常不会合并回master,因为它们要么包含一次性修复,要么具有从master中挑选出来的更改.
作为一种惯例,如果这些维护分支被标记(在构建时),是否应该在Git中删除它们?删除它们会导致这些提交丢失吗?
我可以进入一个tag中git并进行修改和repush该标签和新的变化?
我试过了:
git tags
0.2.0
0.2.1
git checkout 0.2.0
Run Code Online (Sandbox Code Playgroud)
然后,我做了一些更改,并做了:
git add .
git commit -a -m "Cleanup."
git push --tags
Run Code Online (Sandbox Code Playgroud)
但它说没有改变要推动。
让我们假设你在git中有以下结构
A <-- refs/heads/somebranch
|
B
| \
C D <-- refs/tags/TAG1
| |
E F
| | \
G H I <-- refs/heads/branch1
|
J <-- refs/heads/master
Run Code Online (Sandbox Code Playgroud)
现在我想B在历史记录中找到包含提交的所有引用.
如果我能这样做会很好
$ git refs --contains B
refs/tags/TAG1
refs/heads/branch1
refs/heads/master
Run Code Online (Sandbox Code Playgroud)
我看了一下git decumentation,发现git branch -a --contains <commit_id>哪个列出了包含a的所有分支commit_id.
$ git branch -a --contains 4af9822
master
remotes/origin/someBranch
...
Run Code Online (Sandbox Code Playgroud)
然后我找到了命令 git tag --contains 9338f2d
$ git tag --contains 9338f2d
someTag
anotherTag
...
Run Code Online (Sandbox Code Playgroud)
我当然可以这样做,
$ git branch -a --contains 4af9822 && …Run Code Online (Sandbox Code Playgroud) git中似乎有一些方法可以显示带注释的标记的消息以及提交详细信息和其他内容git show the_tag,或名称和详细信息git tag -l -n100 the_tag。
但是,什么命令显示消息/正文,而没有其他内容呢?
我有一个大型项目的脚本,十个存储库,用于检出分支(本地,远程或标记)并最终显示每个存储库中每个存储库的当前分支.
我git branch用来显示当前存储库中签出的分支或标记.这在大多数情况下都可以正常工作,除非在同一个提交中有多个标记,导致在该提交中打印一个随机标记.
我怎样才能解决这个问题?我应该以不同的方式实现它吗?
例
for repo in ...
do
cd repo
git checkout $1 || git checkout $2 || git checkout $3 ....
git branch ##(to verify what happened)
done
Run Code Online (Sandbox Code Playgroud)
所以,让我说我运行./checkoutAll feat1 origin/feat1 tags/ALL7
但是ALL7标签与同一个提交ALL6,
git branch显示ALL6而不是ALL7我特别要求结帐.
编辑:下面的图片是为了帮助那些试图帮助我的人,
所以,让我说我运行git checkout tags/V9.00.00.ALL.04
然后git branch显示一个随机标签(* detached from ..)的存在,在这个例子中7.有没有办法显示最新的?或至少显示我要求结账的那个(即使ALL7与ALL9相同)?
我可以在子树中使用标签吗?根据具体问题:
我有一个git存储库,其中包含一个外部存储库作为子树.我可以添加此外部存储库并从此存储库中签出特定分支.随着git subtree pull --prefix=<dir> --squash <remote> <branch>所选分支的更新运行良好.
现在可以签出特定的标签吗?我无法在子树中找到有关标签的一些信息......
我是Git hub的新手,我对标签和分支的概念感到困惑(这里解释)我想从git hub获得一个稳定版的PhantomJS(版本2.1.0).但我不明白我是否应该这样做:
git checkout master
git remote add upstream https://github.com/ariya/phantomjs.git
git fetch upstream
git rebase --onto tags/2.1.0 upstream/master master
Run Code Online (Sandbox Code Playgroud)
要么
git init
git remote add -t 2.1 -f origin https://github.com/ariya/phantomjs.git
git checkout 2.1
Run Code Online (Sandbox Code Playgroud)
你能解释一下,为什么?
我想找出提交时间和标记提交时间之间的时间差.
这是我到目前为止,但我认为这是正确的字段的committerdate是null.
git for-each-ref --format='%(taggerdate) : %(committerdate) : %(refname)' --sort=-taggerdate --count=10 refs/tags
Run Code Online (Sandbox Code Playgroud)
我猜我只看标签,但我无法做到.在一个理想的世界中,它会显示时间之间的差异,但如果不可能,我可以在之后做到这一点.
最后能够在TFS 2017 Update 2之后直接从TFS门户使用标记功能,我开始添加Git标签.
注意到某些标签缺失说明(在Git中标记消息),我试图编辑标签; 我似乎无法找到编辑/删除标签的选项.
从如何在git中编辑现有标记消息中提示?,我试图通过创建具有相同名称的标签来覆盖标签.TFS引发了A Git ref with the name <tagName> already exists.错误.
我或许可以按照如何删除git远程标记?从我的Windows机器上使用Git Bash.我试图在TFS门户中找到一种方法来实现这一点.
如何在TFS 2017 Update 2 Portal中编辑/删除Git标签?
git-tag ×10
git ×9
git-branch ×2
branch ×1
git-subtree ×1
github ×1
gitlab-ci ×1
tfs ×1
tfs2017 ×1