簡體   English   中英

如何將整個git repo輸出到單個文件?

[英]How can I output an entire git repo to a single file?

我創建了一個git repo,我希望所有提交的整個git repo作為一個補丁文件。

我已經嘗試了許多SO帖子,但是在任何地方都找不到任何合適的解決方案。

為了創建一個封裝整個存儲庫的補丁,您需要將當前的HEAD與空樹進行比較。 這樣的樹可以在git的SHA1下找到SHA1 4b825dc642cb6eb9a060e54bf8d69288fbee4904 (如果您通過清空索引並發出git write-tree創建空樹,則會得到SHA1。每個git存儲庫都有一個。)

因此,您要查找的命令是:

git diff --binary 4b825dc642cb6eb9a060e54bf8d69288fbee4904..HEAD

--binary選項可確保二進制內容將包含在diff中,並且文件名將不會縮寫。

技術上來說, user4815162342答案是正確的解決方案(建議使用), 但是Palak Arora關於“整個git repo和所有提交都作為單個補丁文件的問題”的問題可以用不同的方式來解釋。

還有另外兩種可能性,有待Palak的反饋:


如果通過補丁“具有所有提交”將git repo的完整歷史記錄表示為一個文件,則可以考慮創建一個bundle
它是一個實際上充當Git存儲庫的文件:您可以從該文件中獲取或提取或克隆文件;

cd /path/to/your/repo
git bundle create /tmp/foo-all --all

如果您的“補丁”實際上是當前回購的全部內容,則還可以使用git archive

cd /path/to/your/repo
git archive -o /tmp/foo.tar --format=tar .

在這兩種情況下,它們與經典補丁程序的不同之處在於,您不會使用捆綁包或歸檔文件在現有代碼庫上“應用”該“補丁程序”,而是從頭開始快速重建所述代碼庫。

由於我自己嘗試了另一種方法,因此我想將其發布在這里。 正是我所需要的。

git log --pretty=format:"%H - %an, %ad : %s" --author "<your name>" --after="2014-05-19 00:00:00" --before="2014-08-18 00:00:00" -p --no-merges > ~/<path to some folder>/myrepo.patch

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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