2017-02-22 4 views
0

私は新しいgitです。ブランチから特定のファイルにタグを付ける必要があります。 例:私はmasterfile1file2file3file4を持っているし、今、私は次のリリースでfile5を追加した私の最初のリリースgitのタグ固有のファイル

ためV1.0としてこれらの4つのファイルをタグ付けし、masterにマージ。
新しいタグにはfile5というタグだけを付けて、V2.0というタグはすべて前のファイル(file1file2file3file4)ではありません。
これはgitで行うことができますか?

誰でも私のプロジェクトのすべてのリリースを更新できるgitやその他のソリューションでこれを行う方法を教えてもらえますか?

+3

Gitのタグは、個々のファイルではなくファイルのグループを表すコミットと同義です。私はあなたが求めている機能は必要ないと思う。なぜあなたがこれを必要と思っているのかを明確にすれば、より直接的な答えを出すことができます。 –

+1

*ツリーやブロブにタグを付けることは可能ですが、それはまったく意味がありません。 blobがそのハッシュ値によって識別されるので、blob *のタグ付けはパス名を保存しません。ツリーにタグを付けておくと、パス名を保存することができますが、便利な機械を使用してコミットにタグを付けることもできます。履歴を持たないコミットを行うことができます。タグ自体はコミットを保持します。 – torek

答えて

2

これはgitで実行できますか?

いいえ、A

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

です。意味があります。 – vikv

関連する問題