Git:仅检出没有存储库的文件?
我想只检出没有.git文件和整个存储库的文件。 这是因为我想用git管理一个网站(php&html),而且我正在寻找一种简单的方法来更新存储库中htdocs文件夹中的文件,而无需公开该存储库。 (现在它在home-dir中,通过ssh访问,但我必须手动将新文件放到htdocs中。
git-archive联机帮助页包含以下示例:
git archive --format=tar --prefix=junk/ HEAD | (cd /var/tmp/ && tar xf -)
创建一个包含当前分支上最新提交内容的tar归档文件,并将其解压到'/ var / tmp / junk'目录中。
或者,您可以使用低级别的git-checkout-index,该manpage包含以下示例:
使用git checkout-index来“导出整个树”
前缀能力基本上使得使用' git checkout-index
'作为“导出为树”函数是微不足道的。 只需在索引中读取所需的树,然后执行
$ git checkout-index --prefix=git-export-dir/ -a
git checkout-index
会将git checkout-index
“导出”到指定的目录中。
最后的“/”很重要。 导出的名称实际上只是以指定的字符串作为前缀。
或者,您可以尝试使用--work-tree
选项来执行git wrapper或GIT_WORK_TREE环境变量,例如通过使用“ git --work-tree=/somwehere/else checkout -- .
”。
Git比Subversion更容易,因为整个存储库都保存在一个目录中。 您只需要删除项目根目录中的隐藏“.git”文件夹,以创建您的网站的生产就绪副本。
在Linux / OSX中,这将是:
mkdir dist && cd dist
git checkout http://path/to/your/project.git
rm -rf .git
git clone --depth 1
正是你想要的。 我有一个git仓库,提供了41,000个提交,而且速度非常快。 看到这个答案或这个更一般的答案来获得更详细的解释。
如果你想指定要使用的分支(而不是默认的“master”分支),使用这个语法(需要Git 1.9+):
git clone -b <remoteBranch> --single-branch --depth 1 ssh://username@servername.net:serverport/PathToProject <FolderName>
链接地址: http://www.djcxy.com/p/26273.html