2017-02-22 68 views
0

我是新的git,我想從分支標記特定文件。 例子:我有master file1file2file3file4和標籤這4個文件爲V1.0我最初的版本在git中標記特定文件

現在我已經在下一版本中添加file5合併爲master
我只需在新標記中標記爲file5,因爲V2.0並非所有以前的文件(file1,file2,file3,file4)。
這可以在git中完成嗎?

任何人都可以幫助我如何在git或任何其他解決方案中執行此操作,以便我可以更新我項目的每個版本?

+3

Git中的標籤與提交代表同義詞,代表文件組,而不是單個文件。我懷疑你甚至不需要你所要求的功能。如果你澄清爲什麼你認爲你需要這個,也許我們可以給出更直接的答案。 –

+1

它*可以標記樹或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

爲你的迴應thiks,是有道理的。 – vikv