[英]Git repository without history
是否有可能擁有一個沒有歷史記錄的 Git 存儲庫? 例如,我有一個本地 Git 存儲庫,我想將最新版本推送到生產服務器。 生產服務器上不應存儲任何歷史記錄。 我怎樣才能做到這一點?
您可以查看命令git archive
是否符合要求:
創建包含指定樹的樹結構的指定格式的存檔,並將其寫入標准輸出。
如果指定了<prefix>
,則它會添加到存檔中的文件名之前。
git archive
在給定樹 ID 與給定提交 ID 或標簽 ID 時的行為不同。
- 在第一種情況下,當前時間用作存檔中每個文件的修改時間。
- 在后一種情況下,將使用引用的提交對象中記錄的提交時間。
創建存檔后,您可以將其復制並在服務器端解壓縮:服務器上不需要 git。
由於您只需復制一個文件(而不是在工作樹上使用 rsync 復制大量文件),因此傳輸更容易。
你想要的是一個post-receive
或post-commit
鈎子:
如果您純粹是在本地工作並且從不在任何地方推送任何內容,請使用post-commit
掛鈎。 它在每次提交后觸發,讓您有機會做任何您想做的事情,包括使用您想要的任何工具將您最新更改的文件推送到某個地方(包括VonC推薦的git archive
)
如果您將工作的“發布”版本推送到遠程服務器(或另一個本地祝福存儲庫,對於這種情況無關緊要),請使用post-receive
掛鈎。 當推送新版本時,它會在服務器存儲庫上調用。 從這里開始,該過程與post-commit
掛鈎的過程幾乎相同。
有關鈎子的更深入討論,請查看 Git Book 和參考:
您可以使用--depth
創建一個淺克隆,其歷史記錄被截斷為指定的提交次數。
要僅檢索最后一次提交,請使用--depth 1
。
git clone git@github.com:account/repository.git --depth 1
如果您需要最近的 5 次提交,您將指定 --depth 5
暗示--single-branch
除非給出--no-single-branch
以獲取所有分支尖端附近的歷史記錄。 如果你想淺層地克隆子模塊,也可以通過--shallow-submodules
。
來自: https ://git-scm.com/docs/git-clone#Documentation/git-clone.txt---depthltdepthgt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.