我使用Git将一个SVN仓库导入,然后在仓库中创建了自己的项目作为子文件夹。
我使用Git-SVN来使用SVN仓库,我的工作流程如下:
git commit -am "提交信息"
git svn rebase
git svn dcommit
现在我想使用git tag -a RC1 -m '发布候选版本1'
来给我的项目打标签,但我只想让我的项目获取该标签。
我该怎么做?
如果您知道树的SHA-1,可以标记特定的目录(也称为树),但这不经常发生,而且很难使用该标记做有用的事情。
Git中的每个对象都有一个唯一的SHA-1。最常见的是SHA-1表示提交,但它们也可以表示blob(文件内容)和tree(目录结构和文件名/文件权限映射)。您可以在Git对象文档中了解相关信息。
例如,假设我在存储库中的特定目录中。我可以运行 git ls-tree HEAD
来获取路径中文件/目录的列表以及它们的SHA-1:
$git ls-tree HEAD
100644 blob ed76d466f5025ce88575770b07a65c49b281ca59 app.css
100644 blob ed58ee4a9be6f5b58e25e5b025b25e6d04549767 app.js
100644 blob e2bed82bd9554fdd89d982b37a8e0659fe82390a controllers.js
040000 tree f888c44e16f7811ba69a245adf35c4303cb0d4e7 data
100644 blob d68aa862e4746fc9abd0132cc576a4df266b0a9d directives.js
100644 blob df0ae0e7288617552b373d21f7796adb8fb0d1b6 index.html
040000 tree fa9c05b1bb45fb85821c7b1c27925b2618d646ac partials
100644 blob 28e9eb6fe697cb5039d1cb093742e90b739ad6af services.js
我可以标记其中一个树形结构(比如说上面的data
目录):
$git tag data-1.0 f888c44e16f7811ba69a245adf35c4303cb0d4e7
$git ls-tree -rt data-1.0
100644 blob 6ab0a52a17d14cbc8e30c4bf8d060c4ff58ff971 file1.json
100644 blob e097e393fa72007b0c328d67b70ba1c571854db0 file2.json
040000 tree 39573c56941fdd2fc88747a96bf871550f4affb2 subfolder1
... ... ... ...
要获取原始的SHA-1:
$git rev-parse data-1.0
f888c44e16f7811ba69a245adf35c4303cb0d4e7
trunk
来标记。 myproj-1.0
, myproj-1.1
等。git svn tag
在给定点标记整个存储库。运行git help svn
以获取有关使用此命令的说明。
- 使用常规的Subversion命令标记目录。这不需要下载Subversion工作副本,因为您只需运行svn copy {URL to your project on the repository} {URL to your tag directory}
,但您需要安装Subversion。
- 在全新的目录中开始Subversion存储库的新Git克隆。将您的项目文件夹指定为主干URL,而不是实际的主干。然后,Git-svn将将该目录视为您的主要分支,并允许您通过Subversion对其进行标记和复制。