2011-05-11 5 views
9

私はgitの新機能です。私は現在、いくつかのExcelファイルの変更を追跡するためにそれを使用することでそれに精通しています。これは、私が関与しているいくつかの連続的な活動を追跡するために維持しています。すべてのファイルは単一のリポジトリにあります。それぞれのファイルをそれぞれのバージョンにタグ付けしたいと思います。これは可能ですか?今まで私が見つけたのはリポジトリ全体にタグを付ける機能でした。私がしようとしていることが間違っているなら、ベストプラクティスについて私に助言してください。GITで1つのファイルにタグを付けるには

ありがとうございます。

編集 v1.0のよう(私は単一のファイルにタグ付けする方法を見つけることができませんでしたように)私は、これは私が意図的にリポジトリ全体をタグ付けすることにするために、以前のタグを削除していた

。ファイル名でタグの名前をリセットしたいので、どうすればよいのでしょうか?前のタグ(削除されたタグ)を削除して名前を変更するにはどうしたらいいですか?

+3

'git'タグがコミット:

あなたはまだあなたが、このような特殊なタグを作成するために主張する場合

。ファイルではありません。これらの「タグ」で何をしたいか教えてください。私はより適切な答えが可能であると思います。ありがとう。 –

答えて

3

タグは、あなたの質問で提案したようにリポジトリ全体ではなく、特定のコミットに配置されます。

あなたが提案していることの1つの方法は、コミットごとに1つのファイルに変更をコミットすることを確認することです。 file1-v1.0はfile1のv1.0を表します。

あなたはこれらのコミットにタグを付けて表現しようとしていますか?それはあなたのプロセスを改善する方法に関するアドバイスに影響を与えます。

+0

私の質問にも述べたように、私の主な関心事はgit環境の詳細を知ることです。しかし、この特定の事例では、私がやろうとしていることは、文書を維持するために達成することを意図した特定のマイルストーンを追跡することです。たとえば、最初の作業を終えたら、それをv1.0としてタグ付けします。他の人とドキュメントを完了して必要な変更をすべて行うと、v2.0などにしたいと思います。 v1.0としてコミットし、別のファイルでv2.0として別のファイルを作成すると、これを達成できません。実際にはどちらもv1.0 –

1

直接、

タグは、リポジトリの特定のリビジョンへのポインタです。個々のファイル自体に、リポジトリとは別のバージョンはありません。別々のバージョンが必要な場合は、ファイルごとに独立したリポジトリを用意するか、ファイルごとに別のブランチを作成するか、ファイル指向の別のツール(RCSなど)を使用するオプションがありますgitが持っている)。

ファイルがすべて関連している場合は、通常、特定のバージョンのグループにタグを付ける必要があります。そうでない場合でも、そのリビジョンで変更された各ファイルのバージョンでグループ全体にタグを付けることができます。 1つのリビジョンにつき1つのファイルに対する変更を制限することで、このプロセスの管理が容易になります。

+0

ありがとう、実際には私がやったと思ったものが最終的に提案したものです。さらに私は一度に1つのファイルに基づいてのみ変更をコミットしています。 –

7

コミットにのみタグを付けることができます(例:あなたのリポジトリの履歴にある特定のスナップショット。しかし、gitの店舗は、ブロブと何を行うことができます。このように、ブロブにメモを追加するgitのノートにを使用することであるなどのファイル:

$ git ls-tree HEAD 
100644 blob 252f7c7df5bd181536a6c9d0f9c371ce1a5dd042 .gitignore 
100644 blob 8150ada74aba86c983ac3f8f63ab26aaa76fdcb7 README 
100644 blob c4b1ff6dcb2a8e50727df21ced8d2872cd91af79 TODO.txt 

$ git notes add -m "Adding a note to TODO" c4b1ff6dcb2a8e507 
$ git notes show c4b1ff6dcb2a8e507 
Adding a note to TODO 

しかし、このノート(しゃれが意図していることに注意してください:) )はこのブロブにのみ添付されているので、ファイルが変わるたびに新しいブロブが作成され(別のsha1ハッシュ値で)、新しいブロブにはこのノートがありません。

+0

ありがとうございます。 –

+0

あなたのエンディングノート(ファイルを変更した後のSHAの変更について)を考えてみましょう。これは私にはこのように見えます*は*意図された動作です。いいえ? – exhuma

2

実際には、特定のファイルの変更を追跡する別個のブランチがあるかどうかを調べるべきです。あなたはそれで作業できるはずです。

8

技術的には、ファイル名なしで1つのファイルのコンテンツにタグを付けることができます。しかし、そのようなタグは限られた用途しかありません。タグはコミットを指し示すと予想され、非コミットに対する特別なタグは非常に異なる動作をします(このような特別なタグをチェックアウトすることはできません)。ですから、コミットしていないタグを使用しないことを強くお勧めします。

いくつかのファイルだけにタグを付けるには、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