gpt4 book ai didi

git - 有没有简单的命令可以将分支转换为标签?

转载 作者:IT王子 更新时间:2023-10-29 01:07:28 27 4
gpt4 key购买 nike

我即将完成将“哑快照”转换为 git 的繁琐过程。这个过程进行得非常顺利(感谢 this rename process ),但现在我意识到我创建的一些分支不值得一个 branch 而是一个 tag.

由于所有内容仍然是本地的(从未推送到存储库),我找到了 this question (和相关的答案)比我喜欢的要麻烦一些,所以我想知道我是否可以通过一些简单的“convert-from-branch-to-tag”命令来走捷径?

有没有这么简单的命令把分支转为标签?

(我知道我可以保持原样,但我真的很喜欢 gitk 突出显示标签的方式,帮助我轻松识别它们)。

更新:感谢@Andy 在下面的回答,我设法想出了一个 shell 脚本,它可以方便而轻松地完成这一切。我分享这个脚本是为了所有人的利益,特别感谢这个伟大的社区,是他们让我从 CVS 迁移到 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 " "
echo "Updated list branches, sorted chronologically: "
echo "---------------------------------------------- "
git log --no-walk --date-order --oneline --decorate $(git rev-list --branches --no-walk) | cut -d "(" -f 2 | cut -d ")" -f 1
else
echo "Sorry. The branch ${BRANCHNAME} does NOT seem to exist. Exiting."
fi

最佳答案

给出的答案基本正确。

由于标签和分支只是对象的名称,所以有一种不触及当前工作区的更简单的方法:

git tag <name_for_tag> refs/heads/<branch_name> # or just git tag <name_for_tag> <branch_name>
git branch -d <branch_name>

或者甚至在不接触本地存储库的情况下对远程服务器执行此操作:

git push origin origin/<branch_name>:refs/tags/<tag_name>
git push origin :refs/heads/<branch_name>

关于git - 有没有简单的命令可以将分支转换为标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6666489/

27 4 0