如何創建當前存儲庫的存檔,包括使用git archive
的本地未提交更改?Git存儲庫的未提交更改
回答
我知道這是舊的,但我想我找到了解決方案。
運行:
stashName=`git stash create`;
git archive <options> $stashName
由於混帳想要一個堅實的承諾,使檔案,我們可以做一個「一次性」使用承諾git stash
。 create
命令只是創建隱藏提交(不會重置您的工作目錄或將其推送到隱藏堆棧)並返回它的散列。
如果您擔心從懸空提交的空間,您可以使用git gc --prune=now
進行清理。否則,只需等待2周,它就會消失。
如果您還沒有提交更改,那麼git archive
不會對您有所幫助。如果你只想要你的工作區快照,tar
可能是你最好的選擇。
提高nevsan的回答我的目的 - 在任何情況下(提交與否)存檔最新代碼:
uploadStash=`git stash create`; git archive -o code_outgoing.zip ${uploadStash:-HEAD}
修復了一個錯誤:git stash create [now]總是返回成功,並且當沒有要存儲的文件時不打印任何內容。使用bash $ {var:-default}語法,而不是依賴退出代碼。 – 2014-10-20 15:02:37
IIRC這是一個問題,它不會從存檔中取出git-removed文件。 – 2016-08-29 05:57:47
與git ls-files
另一種解決方案:
git ls-files -z | xargs -0 tar -czvf archive.tar.gz
這在我看來是最好的答案。但是,我建議使用ls-files的-z選項和xargs的-0(零)選項,以便正確處理帶空格的文件名: git ls-files -z | xargs -0 tar -czvf archive.tar.gz 。 – S2108887 2018-02-25 18:56:19
你是對的!謝謝。我已經將這些選項添加到命令行中。 – 2018-03-05 13:27:19
'git ls-files | tar Tczf - archive.tar.gz'沒有對單個命令的參數大小進行系統限制。 xargs對於任何你只需運行一次的命令來說都是不好的。 – jthill 2018-03-05 16:19:38
- 1. 從遠程git存儲庫中恢復未提交的提交
- 2. 提交更改到新的存儲庫
- 3. Git - 恢復從本地存儲庫提交的更改
- 4. 從git存儲庫中提取所有未獲取的更改
- 5. 無法將更改提交到本地git存儲庫
- 6. 對鏡像存儲庫提交更改
- 7. git更改存儲庫時
- 8. 如何檢查窗口中未提交的git存儲庫
- 9. Git - 將未提交的更改推送到以前的提交
- 10. git diff最後提交加上所有未提交的更改?
- 11. Git - 推送新提交併忽略未提交的更改
- 12. 的Git撤消更改存儲庫
- 13. Git更改沒有提交提交和未跟蹤文件
- 14. Github:克隆存儲庫,更改克隆,並提交原始庫
- 15. 無法提交併將更改推送到openshift聯機GIT存儲庫
- 16. 使用git更改項目存儲庫
- 17. 從遠程git存儲庫中更改
- 18. 更改Git遠程存儲庫密碼
- 19. 找出git存儲庫已更改
- 20. Git:提交部分更改
- 21. 更改Git提交信息
- 22. 提交Git配置更改
- 23. 未找到Git存儲庫
- 24. 更改根提交父指向另一個提交(連接兩個獨立的git存儲庫)
- 25. Git存儲庫內的Git存儲庫
- 26. 將更改提交到svn存儲庫中的NEW目錄
- 27. 自動提交存儲庫中的更改
- 28. xcode git無法從遠程存儲庫中提取更改
- 29. 如何從git存儲庫提取提交補丁
- 30. 更改Git存儲消息
偉大的作品,謝謝! – 2012-08-19 07:05:52