我是新git,我想从分支标记特定文件。
示例:我有
我的初始版本中file1
,file2
,file3
,file4
并将这4个文件标记为master
现在我已在下一版本中添加V1.0
并合并到file5
我必须仅在新标记中将master
标记为file5
而不是所有以前的文件(V2.0
,file1
,file2
,file3
)。
这可以在git中完成吗?
任何人都可以帮助我在git或任何其他解决方案中执行此操作,我可以更新我的项目的每个版本吗?
答案 0 :(得分:2)
这可以在git中完成吗?
不,考虑一个标签代表(通常见下文)一个提交(它是对所有 repo内容的引用,而不是对文件或delta的引用)
图片来自Git Plumbing
但你可以list the files which have changed between two tags:
git diff --name-only v1.0 v2.0
要仅列出新文件,请添加--diff-filter=A
:
git diff --name-only --diff-filter=A v1.0 v2.0
这将返回“f5
”。
如“How to Tag a single file in GIT”中所述,您可以在技术上标记单个文件或单个树:
> git ls-tree HEAD
040000 tree 2c186ad49fa24695512df5e41cb5e6f2d33c119b bar
100644 blob 409940768f2a684935a7d15a29f96e82c487f439 foo.txt
> git tag my-bar-tree 2c186ad49fa24695512df5e41cb5e6f2d33c119b
> git tag my-foo-file 409940768f2a684935a7d15a29f96e82c487f439
但是任何非提交标记都不会被用作常规提交标记(例如,您可以将其签出)。
这些非提交标记的可能用法:“Why git tag a blob or a tree (or a tag)?”。