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

上一篇: Git: Checkout only files without repository?

下一篇: cp command should ignore some files