我想在 Windows 上签出最新的 git 标签。
我在 Linux 上使用以下命令:
git checkout `git describe --tags --abbrev=0 origin/master`
这个命令在 Windows 上的等价物是什么?
我尝试使用for&set将反引号命令扩展为一个变量,以便在git checkout.
我开始于:
for /f %a in ('git describe') do (echo %a).
它返回v1.0.18-131-g792d5a2。这有效,但包含的信息有点多。我只需要v1.0.18. 这就是为什么我试图用来--abbrev=<n>抑制长格式并只显示最接近的标签。
当我添加参数时:
for /f %a in ('git describe --tags --abbrev=0 origin/master') do (echo %a)
它失败:fatal: Not a valid object name 0。不知道为什么...
这是我到目前为止所得到的:
checkout-latest-tag.bat
@echo off
for /f "usebackq delims=" %%a in ('git describe --tags …Run Code Online (Sandbox Code Playgroud) 我想查看所有本地和远程标签。
要查看所有本地和远程分支,我使用:
git branch -a
Run Code Online (Sandbox Code Playgroud)
它以白色显示我的本地分支,以绿色显示当前分支,以红色显示远程(原始)分支。
但是-aforgit tag用于创建带有注释或消息的标签。
git branch -a显示所有本地标签和原始标签相当于什么标签?
如何限制运行返回的标签
git tag
Run Code Online (Sandbox Code Playgroud)
成特定数量的标签?我有很长的标签列表,我只需要查看我的存储库中最新的十个标签是什么
在成功构建项目源之后,我想在git中设置一个标签并推送它.以下是我的管道定义的相关部分:
pipeline {
agent {
docker {
label 'docker'
image 'somerepo/maven:3.5.2-jdk-8-alpine'
args '-v /root/.m2:/root/.m2'
}
}
stages {
stage('Prepare') {
environment {
BITBUCKET = credentials('jenkins-creds')
}
steps {
sh 'git clean -ffdx'
sh("git config user.name 'jenkins'")
sh("git config user.email 'x@y.z'")
// Use .netrc for Git credentials
sh '''
cat >~/.netrc <<.
machine bitbucket.server
login $BITBUCKET_USR
password $BITBUCKET_PSW
.
'''.stripIndent()
}
}
stage('Validate pom') {
steps {
sh 'mvn -B validate'
}
}
stage('Tag the version') {
steps {
sh 'printf …Run Code Online (Sandbox Code Playgroud) 我有开发、暂存和生产存储库。
周期:开发-->分期-->生产
开发远程:起源
远程分期:发展与起源
制作远程:分期和起源
是否可以使用单个 git 命令从所有这 3 个存储库中删除 git 标签?如果是的话,怎么样?
我正在从分支 A 创建一个 git 分支 B。
$git checkout A
$git checkout -b B
Run Code Online (Sandbox Code Playgroud)
我更改了分支 B 中的一些文件,然后
$git add <files>
$git commit -m "a message"
Run Code Online (Sandbox Code Playgroud)
然后我在分支 B 处于活动状态时创建一个标签
$git tag -a <tag_name>
Run Code Online (Sandbox Code Playgroud)
我还在本地。
然后我结帐分支 A
$git checkout A
Run Code Online (Sandbox Code Playgroud)
将分支 B 合并到 A
$git merge B
Run Code Online (Sandbox Code Playgroud)
我推分支A
$git push origin A
Run Code Online (Sandbox Code Playgroud)
然后我推送标签,而我还在分支 A
$git push origin tag <tag_name>
Run Code Online (Sandbox Code Playgroud)
现在,如果我在遥控器上列出标签,我会通过以下方式看到两个标签:
$git ls-remote --tags
<tag_name>
<tag_name>^{}
Run Code Online (Sandbox Code Playgroud)
与^{}附加到一个第二条目
有人可以解释这里的原因是什么吗?
为什么我在遥控器上看到两个标签?
在本地,只有一个
$git tag -l
<tag_name>
Run Code Online (Sandbox Code Playgroud)
我这样做的顺序是常见的吗?或者建议使用不同的顺序?我真的只想在分支 B(以及那里的所有文件)上添加一个标签。
我有三个分支:dev、staging和master。当我这样做时,git describe结果是v0.1无论哪个分支被签出。
接下来我将描述进行更改以dev添加版本标签并合并staging到此master新版本的工作流程。
git checkout devgit add --all&&git commit -m 'just some testing'git tag -a v0.19.0git push && git push --tagsgit checkout staginggit merge devgit pushgit checkout mastergit merge staginggit push现在我describe在每个分支上运行:
- git checkout dev && git describe && git describe --abbrev=0
结果:
v0.19.0-1-ge147b2d
v0.19.0
Run Code Online (Sandbox Code Playgroud)
我所期望的:
v0.19.0-1-ge147b2d
v0.19.0
Run Code Online (Sandbox Code Playgroud)
git …我有一个分支策略,其中我有一个代表我的每个组织的分支。现在,当在分支上工作时,我们可以提交版本或修补程序修正等...我希望能够将一个提交标记/标记为“修补程序”,另一个标记为“R3.x”等...区分它们,以便我知道何时需要将它们移动到另一个分支,以准确选择这些标签作为“R3.x”或修补程序。
对于几个版本,我们在名称中使用了前缀,例如“R3.x - 描述”。但是,当提交未被批准成为发布的一部分时,我们无法再更新消息(我不想用 git rebase i 重写我的历史记录)。这就是为什么我想要一种更简单的方法来按提交进行标记或对我的提交进行分类以便之后更好地搜索。
我需要一种 git 标签,但它可以应用于多个提交,而不仅仅是一个唯一的提交。这将允许我随后通过 git log 过滤它们。
我们实际上是这样做的,但使用了名称的一部分。但我想知道是否有更好的选择。
如何使用新标签标记所有提交?
我知道如何标记单个提交,但我如何在批量上执行,并将标记推送到GitHub?
到目前为止,我知道我可以git tag -a tag_name -m "tag message"用来制作带注释的标签.
然后使用git show tag_name查看特定标签的更改信息.
实际上,这个标签绑定了一个提交.所以我真正看到的是那个提交的变化.
那么,git tag主要是作为别名还是提醒,所以我们不需要记住那些不人道的HEADS?
或者到目前为止我还不知道标签的一些神奇功能?
git ×10
git-tag ×10
alias ×1
batch-file ×1
git-bash ×1
git-branch ×1
git-describe ×1
git-repo ×1
git-workflow ×1
jenkins ×1
windows ×1