簡體   English   中英

沒有歷史記錄的 Git 存儲庫

[英]Git repository without history

是否有可能擁有一個沒有歷史記錄的 Git 存儲庫? 例如,我有一個本地 Git 存儲庫,我想將最新版本推送到生產服務器。 生產服務器上不應存儲任何歷史記錄。 我怎樣才能做到這一點?

您可以查看命令git archive是否符合要求:

創建包含指定樹的樹結構的指定格式的存檔,並將其寫入標准輸出。
如果指定了<prefix> ,則它會添加到存檔中的文件名之前。

git archive在給定樹 ID 與給定提交 ID 或標簽 ID 時的行為不同。

  • 在第一種情況下,當前時間用作存檔中每個文件的修改時間。
  • 在后一種情況下,將使用引用的提交對象中記錄的提交時間。

創建存檔后,您可以將其復制並在服務器端解壓縮:服務器上不需要 git。
由於您只需復制一個文件(而不是在工作樹上使用 rsync 復制大量文件),因此傳輸更容易。

你想要的是一個post-receivepost-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM