如何创建当前存储库的存档,包括使用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