我需要创建一个Git项目的档案,忽略并排除由.gitignore
指定的文件,但包括实际的.git
存储库文件夹。简单地运行git archive master
会省略.git
文件夹。
有没有办法让git archive
包括.git
文件夹,但仍然忽略由.gitignore
指定的文件?
我需要创建一个Git项目的档案,忽略并排除由.gitignore
指定的文件,但包括实际的.git
存储库文件夹。简单地运行git archive master
会省略.git
文件夹。
有没有办法让git archive
包括.git
文件夹,但仍然忽略由.gitignore
指定的文件?
由于 git archive
只生成 tar 存档文件,您可以直接使用 tar
来操作该文件。
$ git archive HEAD > tar.tar
$ tar -rf tar.tar .git
tar的-r
选项将给定的文件添加到正在处理的归档中(在-f
之后指定)。查看tar的man页,了解tar所拥有的令人生畏的功能列表。
看起来像是在做这样的事情
# copy over all project files except for those ignored
git clone /path/to/repository /path/to/output
# create a tar.gz archive of the project location
tar czvf projectExport.tar.gz /path/to/output
# remove the cloned directory
rm -fr /path/to/output
git bundle
是一个较新的命令,允许创建一个可与远程机器共享的存档文件。 git bundle
更加灵活,因为它允许增量更新和合并不同分支。然而,你可以创建一个使用完整规范(例如master
)的bundle。
一个缺点是远程机器也需要git。bundle是一个'pack'文件,文件需要从bundle中“检出”以在远程创建工作目录(与tar相反)。具有tar && git
和!tar && !git
的机器组合比tar && !git
与!tar && git
的机器组合要多得多。也就是说,机器很可能同时拥有或没有两者。特别是当你打算构建源代码时。
对于Windows机器,很可能两者都没有。可以使用'zip'格式。
git archive -o ../archive.zip --format=zip HEAD
zip -ur ../archive.zip .git/
......并向您表示慰问。
.git
文件夹,然后checkout HEAD来获取你的文件。或者你可以将其作为远程仓库进行获取传输。 - poke