如何用git fetch覆盖本地标签?我想用远程标签替换本地标签。
bqucvtff1#
标签不会被覆盖,因为它们应该是不可改变的。如果你想让一个对象(实际上)是可改变的,那么就用分支指针或引用来代替。这就给你留下了:git tag -d tagname...,然后再次读取它。
2w3rbyxf2#
首先,与分支不同,git不会跟踪与本地标签不同的远程标签。一旦完成提取,它们就无法区分。
git fetch --tags
git fetch
git fetch --prune
git fetch --prune --force
标记更新/覆盖如下所示:
From git:path/name - [tag update] my_tag -> my_tag
这适用于轻量级和带注解的标记,甚至是混合标记。带注解的标签可能会被轻量级标签覆盖,反之亦然。我使用的是git 2.7.4版
hpxqektj3#
从Git 2.20开始,你需要显式地指定force标志:git fetch origin --tags --force在Git 2.20版本之前,与使用git-push[1]推送不同的是,任何对refs/tags/* 的更新都将被接受,而不需要在refspec中使用+(或--force)。在取标签时,我们不规则地将所有来自远程的标签更新都视为强制取标签。从Git 2.20版本开始,获取更新refs/tags/* 的方式与推送时的方式相同。2也就是说,如果在refspec中没有+(或--force),任何更新都将被拒绝。https://git-scm.com/docs/git-fetch
git fetch origin --tags --force
4bbkushb4#
git fetch --tags --all --prune这会明确地告诉git去获取,同时移除远程数据库中已经不存在的标签。
git fetch --tags --all --prune
nnvyjq4y5#
git fetch --tags就可以。从docs(--tags参数的说明):大多数标记在下载分支头时会自动提取,但此机制不会提取未指向可从正在跟踪的分支头访问的对象的标记。此标志允许下载所有标记及其关联的对象。可以使用remote. .tagopt设置来指定remote的默认行为。根据gerrard00的answer,在git Ver2.20或更高版本中,需要使用参数--force来覆盖本地标签。(完整的命令是git fetch --tags --force)
--tags
--force
git fetch --tags --force
5条答案
按热度按时间bqucvtff1#
标签不会被覆盖,因为它们应该是不可改变的。如果你想让一个对象(实际上)是可改变的,那么就用分支指针或引用来代替。这就给你留下了:git tag -d tagname...,然后再次读取它。
2w3rbyxf2#
首先,与分支不同,git不会跟踪与本地标签不同的远程标签。一旦完成提取,它们就无法区分。
git fetch --tags
git fetch
git fetch --prune
git fetch --prune --force
标记更新/覆盖如下所示:
这适用于轻量级和带注解的标记,甚至是混合标记。带注解的标签可能会被轻量级标签覆盖,反之亦然。
我使用的是git 2.7.4版
hpxqektj3#
从Git 2.20开始,你需要显式地指定force标志:
git fetch origin --tags --force
在Git 2.20版本之前,与使用git-push[1]推送不同的是,任何对refs/tags/* 的更新都将被接受,而不需要在refspec中使用+(或--force)。在取标签时,我们不规则地将所有来自远程的标签更新都视为强制取标签。从Git 2.20版本开始,获取更新refs/tags/* 的方式与推送时的方式相同。2也就是说,如果在refspec中没有+(或--force),任何更新都将被拒绝。
https://git-scm.com/docs/git-fetch
4bbkushb4#
git fetch --tags --all --prune
这会明确地告诉git去获取,同时移除远程数据库中已经不存在的标签。
nnvyjq4y5#
git fetch --tags
就可以。从docs(
--tags
参数的说明):大多数标记在下载分支头时会自动提取,但此机制不会提取未指向可从正在跟踪的分支头访问的对象的标记。此标志允许下载所有标记及其关联的对象。可以使用remote. .tagopt设置来指定remote的默认行为。
根据gerrard00的answer,在git Ver2.20或更高版本中,需要使用参数
--force
来覆盖本地标签。(完整的命令是git fetch --tags --force
)