我想只检查没有.git文件和整个存储库的文件.这是因为我想用git管理一个网站(php和html),我正在寻找一种简单的方法来从存储库更新htdocs文件夹中的文件,而不需要公开存储库.(现在它在home-dir中并通过ssh访问,但我必须手动将新文件放到htdocs中.
Jak*_*ski 33
在git的存档手册页包含了下面的例子:
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
'作为"导出为树"功能变得微不足道.只需将所需的树读入索引即可Run Code Online (Sandbox Code Playgroud)$ git checkout-index --prefix=git-export-dir/ -a
git checkout-index
将索引"导出"到指定的目录中.最后的"/"很重要.导出的名称实际上只是以指定的字符串为前缀.
或者您可以尝试使用--work-tree
git包装器或GIT_WORK_TREE环境变量选项,例如使用" git --work-tree=/somwehere/else checkout -- .
".
sea*_*ges 10
为此,Git比Subversion容易得多,因为整个存储库都保存在一个目录中.您只需要删除项目根目录中隐藏的".git"文件夹,即可创建站点的生产就绪副本.
在Linux/OSX中,这将是:
mkdir dist && cd dist
git checkout --depth=1 http://path/to/your/project.git
rm -rf .git
Run Code Online (Sandbox Code Playgroud)
git clone --depth 1
完全符合你的要求.我有一个拥有41,000次提交的git存储库,这个速度要快得多.有关更详细的说明,请参阅此答案或更一般的答案.
如果要指定要使用的分支(而不是默认的"master"分支),请使用此语法(需要Git 1.9+):
git clone -b <remoteBranch> --single-branch --depth 1 ssh://username@servername.net:serverport/PathToProject <FolderName>
Run Code Online (Sandbox Code Playgroud)
您可以在git工作目录中创建tar存档并将tar复制到服务器:
git archive -o foo.tar HEAD
scp foo.tar server:
Run Code Online (Sandbox Code Playgroud)