我正在处理的当前项目仅限于一个git存储库。
我当前的工作目录看起来像这样:
dist/
*distribution files
src/
*src files
我们设置了Azure服务器,以自动部署推送到我们仓库的“部署”分支的任何内容。因此,目标是将src文件推送到master并将dist文件夹的内容推送到'deploy'分支。
到目前为止我一直在做的是分支master,删除src文件夹,并在推送部署之前将dist文件夹的内容移动到root。
我知道理想情况下我们会有单独的回购,但目前这不是一个选择。有更简单的方法吗?
该 git的子树 命令对此很有用。从你的 master
分支做:
git subtree split --branch deploy --prefix dist/
每次要更新时都要运行该命令 deploy
科。它将合并每个提交 dist
subdir(当前分支 - 大概是 master
)到根的 deploy
分支并维护完整的提交历史记录。请注意,只有更改 dist
subdir将被合并。如果提交包括更改 dist
repo中的subdir和其他文件,只有更改 dist
subdir包括在内。
棘手的部分是安装。据我了解,该命令包含在git 1.7.11及更高版本中。但是,它位于“contrib”子树中,因此默认情况下不会安装。在系统的软件包管理器中搜索“git-subtree”并安装软件包(如果存在)。如果没有,或者你使用的是旧版本的git,我发现最简单的方法就是从作者那里安装git-subtree 回购。
git clone https://github.com/apenwarr/git-subtree.git
cd git-subtree/
make install
一旦你安装它,你可以用它做各种很酷的事情,如中所述 文档。
该 git的子树 命令对此很有用。从你的 master
分支做:
git subtree split --branch deploy --prefix dist/
每次要更新时都要运行该命令 deploy
科。它将合并每个提交 dist
subdir(当前分支 - 大概是 master
)到根的 deploy
分支并维护完整的提交历史记录。请注意,只有更改 dist
subdir将被合并。如果提交包括更改 dist
repo中的subdir和其他文件,只有更改 dist
subdir包括在内。
棘手的部分是安装。据我了解,该命令包含在git 1.7.11及更高版本中。但是,它位于“contrib”子树中,因此默认情况下不会安装。在系统的软件包管理器中搜索“git-subtree”并安装软件包(如果存在)。如果没有,或者你使用的是旧版本的git,我发现最简单的方法就是从作者那里安装git-subtree 回购。
git clone https://github.com/apenwarr/git-subtree.git
cd git-subtree/
make install
一旦你安装它,你可以用它做各种很酷的事情,如中所述 文档。