2017-02-22 15 views
0

Я новый git, я хочу отметить определенные файлы из ветки. Пример: У меня есть file1, file2, file3, file4 в master и помечено эти 4 файла как V1.0 для моего первоначального выпускаТег конкретных файлов в git

Теперь я добавил file5 в следующем выпуске и объединены в master.
я должен помечать только file5 в новый тег, как V2.0 не все предыдущие файлы (file1, file2, file3, file4).
Можно ли это сделать в git?

Может ли кто-нибудь помочь мне, как это сделать в git или любом другом решении, где я могу обновить каждую версию моего проекта?

+3

Тег в Git является синонимом фиксации, представляющей группы файлов, а не отдельные. Я подозреваю, что вам даже не нужна функция, о которой вы спрашиваете. Если вы поясните, почему вы думаете, что вам это нужно, возможно, мы сможем дать более прямой ответ. –

+1

It * is * можно пометить дерево или blob, но это редко имеет смысл сделать это. Обратите внимание, что пометка blob * не сохраняет имя пути, так как blob идентифицируется по его хэш-значению. Пометка дерева позволит вам сохранить имя пути, но вы также можете использовать более удобное оборудование и просто пометить фиксацию. Вы можете сделать фиксацию, которая не имеет истории: сам тег будет сохранять фиксацию. – torek

ответ

2

Можно ли это сделать в git?

Нет, принимая во внимание тег представляют (как правило, ниже) фиксации (который является ссылкой на содержание всех репо, а не в файл или дельта)

http://rypress.com/tutorials/git/media/12-4.png
фото от 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)?».

+0

Вместо тегов я могу создать release_branches для каждой версии проекта? – vikv

+0

@vikv ветка, как тег, будет ссылаться на фиксацию. Не файл. Разница в том, что с веткой вы можете начать делать новую модификацию и добавлять коммиты, в то время как тег является неизменным и продолжает ссылаться на одну и ту же фиксацию. – VonC

+0

thnks для вашего ответа, иметь смысл. – vikv