问题
I am new git, I want to tag specific files from branch.
Example: I have
file1, file2, file3, file4 in master and tagged these 4 files as V1.0 for my initial release
Now I have added file5 in next release and merged into master.
I have to tag only file5 in new tag as V2.0 not all the previous files (file1, file2, file3, file4).
Can this can be done in git?
Can anyone help me how to do this in git or any other solution where I can update my every release of my project?
回答1:
Can this can be done in git?
No, considering a tag represent (generally, see below) a commit (which is a reference to the all repo content, not to a file or a delta)
Picture from Git Plumbing
You can list the files which have changed between two tags though:
git diff --name-only v1.0 v2.0
To list only new files, add --diff-filter=A:
git diff --name-only --diff-filter=A v1.0 v2.0
That would return 'f5'.
As mentioned in "How to Tag a single file in GIT", you can technically tag a single file or a single tree:
> 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
But any non-commit tag is won't be used as a regular commit tag (you canot checkout it for instance).
Possible usage for those non-commit tags: "Why git tag a blob or a tree (or a tag)?".
来源:https://stackoverflow.com/questions/42383328/tag-specific-files-in-git