将裸仓库中一个目录的内容复制到仓库外的目录
Copy content of one directory in bare repo to directory outside repo
我正在尝试将我的部署工作流程从通过 FTP 发送文件更改为 git 部署。我正在关注 this post.
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f
问题是上面的命令将整个 repo 的内容复制到另一个目录。我只需要复制 dist
目录的内容。我怎样才能做到这一点?
如您所知,裸存储库没有工作目录。
最简单的方法是将存储库克隆到新位置并复制文件夹的内容。
# clone the repo
git clone <url>
# Grab the desired folder from the desired branch and that it.
另一种选择是克隆存储库,然后 split
出所需的文件夹
subtree split
git subtree
git-subtree
- Merge
subtrees together or split
repository into subtrees
git subtree split -P <name-of-folder> -b <name-of-new-branch>
that command above copies content of entire repo to another directory
在git 术语中,它所做的是检查提交。要只检查提交的一部分,您必须告诉它只读出一些已提交的树。
附带说明一下,git 不是为部署服务器而构建的。也就是说,它足够简单和灵活,因此在这里随心所欲地使用它是相当受欢迎的,并且工作得很好。
Git 维护一个索引文件,该文件将工作树中的内容与存储库中的内容相关联。因此,如果您想使用 git 来管理任意工作树中的内容,则必须为该工作树保留一个索引文件。
(
# git ordinarily finds these for itself, but we're not using default behavior:
export GIT_DIR=/var/repo/site.git
export GIT_INDEX_FILE=$GIT_DIR/domain.com.index
export GIT_WORK_TREE=/var/www/domain.com
git read-tree -um `git write-tree` HEAD:dist # or master:dist, or any tree reference
)
git write-tree
为您提供索引中当前列出的任何内容的树(空文件或不存在的文件与 "nothing's here yet" 索引一样正常工作)。 git read-tree -um
有两棵树是结帐的基础,它根本不关心引用,甚至不关心 HEAD;它仅与树和索引有关。
我正在尝试将我的部署工作流程从通过 FTP 发送文件更改为 git 部署。我正在关注 this post.
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f
问题是上面的命令将整个 repo 的内容复制到另一个目录。我只需要复制 dist
目录的内容。我怎样才能做到这一点?
如您所知,裸存储库没有工作目录。
最简单的方法是将存储库克隆到新位置并复制文件夹的内容。
# clone the repo
git clone <url>
# Grab the desired folder from the desired branch and that it.
另一种选择是克隆存储库,然后 split
出所需的文件夹
subtree split
git subtree
git-subtree
-Merge
subtrees together orsplit
repository into subtrees
git subtree split -P <name-of-folder> -b <name-of-new-branch>
that command above copies content of entire repo to another directory
在git 术语中,它所做的是检查提交。要只检查提交的一部分,您必须告诉它只读出一些已提交的树。
附带说明一下,git 不是为部署服务器而构建的。也就是说,它足够简单和灵活,因此在这里随心所欲地使用它是相当受欢迎的,并且工作得很好。
Git 维护一个索引文件,该文件将工作树中的内容与存储库中的内容相关联。因此,如果您想使用 git 来管理任意工作树中的内容,则必须为该工作树保留一个索引文件。
(
# git ordinarily finds these for itself, but we're not using default behavior:
export GIT_DIR=/var/repo/site.git
export GIT_INDEX_FILE=$GIT_DIR/domain.com.index
export GIT_WORK_TREE=/var/www/domain.com
git read-tree -um `git write-tree` HEAD:dist # or master:dist, or any tree reference
)
git write-tree
为您提供索引中当前列出的任何内容的树(空文件或不存在的文件与 "nothing's here yet" 索引一样正常工作)。 git read-tree -um
有两棵树是结帐的基础,它根本不关心引用,甚至不关心 HEAD;它仅与树和索引有关。