2012-10-11 77 views
5

我有一個遠程裸存儲庫(沒有工作目錄),創建install-tars。工作很好。但是現在我只想創建更改文件的焦點。我試過這種方式:從裸倉庫更改文件git存檔

git archive --format=tar --prefix='/' HEAD `git diff V1.02 --name-only` | gzip -9 > ~/tars/update-v1.02-`git describe master --tags`.tar.gz 

這對我的本地存儲庫非常有效。它使用標記版本V1.02中的文件創建一個tar到最新的提交。但它不適用於裸架。還有其他解決方案嗎?

回答

1

git diff的兩個提交表單將在裸倉庫(git diff [options] <commit> <commit> [--] [<path>...])中工作。

以下應做什麼,我知道你想:

git archive --format=tar --prefix='/' master `git diff V1.02 master --name-only` | gzip -9 > ~/tars/update-v1.02-`git describe master --tags`.tar.gz 

我也建議從原來的命令改變HEADmaster(如上圖所示),以與該命令的其餘部分保持一致,並如果某人更改了哪個分支HEAD指向(可替代地將master的所有出現替換爲上述示例中的HEAD),則恢復彈性。

+0

嘿雅各,謝謝你的回覆。太糟糕了,我沒有從stackoverflow得到通知。 –

+0

當我嘗試你的命令時,git給了我下面的內容: '致命的:模棱兩可的參數'V1.02':未知的版本或路徑不在工作樹中。 使用' - '將修訂路徑與路徑分開 哪裏需要放置' - '? 'git archive --format = tar --prefix ='/'master'git diff V1.02 - master --name-only' | gzip -9> ../tar.tar.gz 致命錯誤版本'V1.02'' –

+0

'--',如果全部使用,則會覆蓋所有非路徑選項。在你的例子中,你根本不會使用它,因爲你沒有使用'git diff'進行任何形式的路徑限制。 –