如何从(非签出)远程仓库中获取最后一个标签?
在我的本地副本上我使用 describe
git describe --abbrev=0 --tags
Run Code Online (Sandbox Code Playgroud)
但我无法使用describe远程存储
我有一个简单的问题,用git标记我的项目的不同版本.如果我刚刚完成我的1.1分支并计划将其合并到master中,我应该在合并之前将此分支标记为1.1,还是应该将其合并为master,然后将其标记为1.1?它会有所不同吗?也许有一种方式可取?谢谢.
说我做以下事情:
Xt(分支X)X标签会发生什么t?它刚刚漂浮在那里吗?它被认为是垃圾吗?
在删除分支本身之前,是否应该删除指向分支的所有标记?
Git使用两种主要类型的标签:轻量级和注释.轻量级标记非常类似于不会更改的分支 - 它只是指向特定提交的指针.
我使用轻量级标记标记了一个提交,并将该标记推送到远程仓库,与其他开发人员共享.我现在意识到我应该注释它以便它出现在git describe.
有没有办法转换它/重新标记提交而不破坏事情?
当我知道我不再使用分支时,是否可以关闭或锁定它?其实我想关闭一个分支,但我认为不可能用GIT关闭一个分支.删除怎么样?删除分支时,我的历史会发生什么?
我想标记某个提交.当我推动标签时,GitHub认为它是一个版本,我不希望这样.
有没有办法只是推动标签而不释放?
如何列出所有标签的标签名称,标签日期和标签消息?
似乎git将提交git log和标记通过的显示逻辑分离,git tag很难列出标记名称,标记的日期和标记消息.
我可以显示标签日期,名称和提交信息使用git log --tags --show-notes --simplify-by-decoration --pretty="format:%ai %d %s"
我检查了http://opensource.apple.com/source/Git/Git-26/src/git-htmldocs/pretty-formats.txt,但没有看到任何显示标记消息的选项.
我可以显示标签名和5号线的标记信息使用git tag -n5.
但要获得所有三个信息似乎需要超出我的能力的粗略脚本.
到目前为止,我有:
git rev-parse <tagname> | xargs git cat-file -p
Run Code Online (Sandbox Code Playgroud)
但这不是解析最容易的事情.我希望有类似git-log的--pretty选项,所以我可以抓住我需要的信息.
有任何想法吗?谢谢
我即将完成将"哑快照"转换为git的繁琐过程.这个过程一直很顺利(感谢这个重命名过程),但现在我意识到我创建的一些分支不值得branch,而是一个tag.
由于一切都仍然是本地的(从未被推送到存储库),我发现这个问题(和相关的答案)比我更喜欢有点麻烦,所以我想知道我是否可以通过一些简单的"转换为分支"来获取快捷方式-tag"命令?
是否有这么简单的命令将分支转换为标签?
(我知道我可以保留它原样,但我真的很喜欢gitk突出标签的方式,帮助我轻松识别它们).
更新:感谢@ Andy在下面的回答,我设法提出了一个shell脚本,可以方便,轻松地完成所有操作.为了所有人的利益,我正在分享这个脚本,特别感谢这个伟大的社区,他为我提供了CVS to git的可能性:
#!/bin/sh
BRANCHNAME=$1
TAGNAME=$2
echo "Request to convert the branch ${BRANCHNAME} to a tag with the same name accepted."
echo "Processing..."
echo " "
git show-ref --verify --quiet refs/heads/${BRANCHNAME}
# $? == 0 means local branch with <branch-name> exists.
if [ $? == 0 ]; then
git checkout ${BRANCHNAME}
git tag ${BRANCHNAME}
git checkout master
git branch ${BRANCHNAME} -d
echo " " …Run Code Online (Sandbox Code Playgroud) 我已将标签推入遥控器,当另一个用户创建相同的标签并尝试推送时,推送将失败,因为标签已存在于遥控器上.
但我想如果我做 - 强制标签推送,它应该是工作.但这不是我所看到的.
我想我必须这样做.
Create tag
Push tag -> If push fails -> Delete tag on remote
-> push tag again.
Run Code Online (Sandbox Code Playgroud)
它是否正确?Isnt force push标签应该照顾这个吗?
我正在使用带注释的标签
git -a v1.0 -f -m "message"
Run Code Online (Sandbox Code Playgroud)
谢谢你的期待.