请问怎么取得git 打好的tag所对应的代码呢?

shinenon 发布于 2013/04/11 15:21
阅读 90K+
收藏 6
Git
各位大侠  小弟在此有一个问题请问一下
git tag 打完tag之后 怎么取得打的tag呢?
repo init -u url.... -b xxx

其中xxx是branch名字吧  

那怎么取得tag所对应的代码呢?

请大家指导一下,谢谢!

加载中
6
tsl0922
tsl0922

先 git clone 整个仓库,然后 git checkout tag_name 就可以取得 tag 对应的代码了。

但是这时候 git 可能会提示你当前处于一个“detached HEAD" 状态,因为 tag 相当于是一个快照,是不能更改它的代码的,如果要在 tag 代码的基础上做修改,你需要一个分支:

git checkout -b branch_name tag_name

这样会从 tag 创建一个分支,然后就和普通的 git 操作一样了。

s
sunstevensun
对的!
鲁小鹿
鲁小鹿
刚刚实践过,正解!万分感谢,鞠躬!!!
0
shinenon
shinenon
没有人知道吗?
0
shinenon
shinenon

引用来自“tsl0922”的答案

先 git clone 整个仓库,然后 git checkout tag_name 就可以取得 tag 对应的代码了。

但是这时候 git 可能会提示你当前处于一个“detached HEAD" 状态,因为 tag 相当于是一个快照,是不能更改它的代码的,如果要在 tag 代码的基础上做修改,你需要一个分支:

git checkout -b branch_name tag_name

这样会从 tag 创建一个分支,然后就和普通的 git 操作一样了。

Hi,首先非常感谢您了~

如果我要是需要通过repo来管理多个模块的话,该怎么操作呢?

我知道,如果是用repo取branch的代码的时候,会用到.repo/manifests/default.xml,先repo init -u url(仓库地址) -b branch_name ,然后再通过repo sync 就会取得相应branch所对应的代码的(貌似default.xml 中“revision”就是指定相应的branch)。那么,如果我在某个branch上打了tag,该怎么取tag所对应的代码呢?

   是先repo init ,repo sync 取得branch代码之后,再 通过repo forall -v -c git checkout tag_name 取得tag对应的代码吗?

    或者,能否像取得branch代码一样,将.repo/manifests/default.xml中的“revision”指定成tag,直接通过repo init和repo sync取得?我试过直接把“revision”改成tag_name,貌似是不行的。。。  不知道您有什么好的方法或者是好的建议吗?

0
perzect
perzect
正好是我需要的。
0
perzect
perzect

引用来自“shinenon”的答案

引用来自“tsl0922”的答案

先 git clone 整个仓库,然后 git checkout tag_name 就可以取得 tag 对应的代码了。

但是这时候 git 可能会提示你当前处于一个“detached HEAD" 状态,因为 tag 相当于是一个快照,是不能更改它的代码的,如果要在 tag 代码的基础上做修改,你需要一个分支:

git checkout -b branch_name tag_name

这样会从 tag 创建一个分支,然后就和普通的 git 操作一样了。

Hi,首先非常感谢您了~

如果我要是需要通过repo来管理多个模块的话,该怎么操作呢?

我知道,如果是用repo取branch的代码的时候,会用到.repo/manifests/default.xml,先repo init -u url(仓库地址) -b branch_name ,然后再通过repo sync 就会取得相应branch所对应的代码的(貌似default.xml 中“revision”就是指定相应的branch)。那么,如果我在某个branch上打了tag,该怎么取tag所对应的代码呢?

   是先repo init ,repo sync 取得branch代码之后,再 通过repo forall -v -c git checkout tag_name 取得tag对应的代码吗?

    或者,能否像取得branch代码一样,将.repo/manifests/default.xml中的“revision”指定成tag,直接通过repo init和repo sync取得?我试过直接把“revision”改成tag_name,貌似是不行的。。。  不知道您有什么好的方法或者是好的建议吗?

其实要取得不同的branch的tag,只需要在相应的分支上打tag就行了。这样的tag就唯一对应了不同的分支。例如,你在master上打了tag为v1,在某个branch上打了tag为v2,则你取出v2代码的时候,自然就是对应的branch分支了。


shinenon
shinenon
恩,是这样的,这个问题已经搞定了~
0
luhaitao_2008
luhaitao_2008
同求,我在linux源码库,git tag 里有v2.6.11,,但是git checkout v2.6.11时,提示Cannot switch branch to a non-commit,求解!!!
0
durban126
durban126
此问题不错,我已整理到http://www.gowhich.com/blog/656这里了,还有问题的同学可以到这里试试
0
j
junyidcf

我也是之前比较幸运碰到了:

首先保证URL是一致的, 即同一个库, 然后直接:

repo init -b refs/tags/xxx_TAG -m versioned.xml

再同步代码:

repo sync -c -d -j8

其中-m versioned.xml就是想要切换的版本必须指定的参数.

0
兵戈天下
兵戈天下

引用来自“tsl0922”的评论

先 git clone 整个仓库,然后 git checkout tag_name 就可以取得 tag 对应的代码了。

但是这时候 git 可能会提示你当前处于一个“detached HEAD" 状态,因为 tag 相当于是一个快照,是不能更改它的代码的,如果要在 tag 代码的基础上做修改,你需要一个分支:

git checkout -b branch_name tag_name

这样会从 tag 创建一个分支,然后就和普通的 git 操作一样了。

此为正解!点个赞
0
taotoxht
taotoxht
如果本地已经有分支 远程的tag  可以用 git fetch 拉下来
返回顶部
顶部