如何创建当前存储库的存档,包括使用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. 提交更改到新的存储库
- 2. 从git存储库中提取所有未获取的更改
- 3. 无法将更改提交到本地git存储库
- 4. 对镜像存储库提交更改
- 5. git更改存储库时
- 6. Git - 推送新提交并忽略未提交的更改
- 7. git diff最后提交加上所有未提交的更改?
- 8. Git更改没有提交提交和未跟踪文件
- 9. 无法提交并将更改推送到openshift联机GIT存储库
- 10. Git:提交部分更改
- 11. 更改Git提交信息
- 12. Github:克隆存储库,更改克隆,并提交原始库
- 13. 更改Git远程存储库密码
- 14. 找出git存储库已更改
- 15. 使用git更改项目存储库
- 16. 未找到Git存储库
- 17. 将更改提交到svn存储库中的NEW目录
- 18. Git存储库内的Git存储库
- 19. 如何从git存储库提取提交补丁
- 20. 如何使用TextMate将更改提交到Subversion存储库
- 21. 更新Git存储库
- 22. 修改共享库的Git提交
- 23. Git中的提交是否代表存储库的状态?
- 24. Git - 删除较旧的提交,它的更改从未发生
- 25. 移动git的分支之间的未提交更改
- 26. 获取VSTS的git存储库中的上次更新/提交的文件
- 27. GIT:在GIT Bash中更新存储库,GIT GUI仍显示旧的存储库
- 28. 更改Netbeans中的Git提交者
- 29. 如何退出DevOps上GIT存储库中的提交
- 30. 执行git针对裸存储库提交的合法性
伟大的作品,谢谢! – 2012-08-19 07:05:52