0

我正在尝试在远程 --bare 存储库上创建一个挂钩,该存储库将根据我发送到的分支将我从本地 git 发送的源代码复制到不同的文件夹中。我在本地有 3 个分支:master、development 和 release,所以我希望远程上有 3 个文件夹,其中包含每个分支的源代码。我发现使用:

git rev-parse --abbrev-ref 头

结合一系列 if 条件可以解决问题。唯一的问题是,对于您发送到的任何分支,远程的 HEAD 都保持不变。是否有任何代码可以在钩子中使用,所以它会知道我正在发送到某个分支?或者有没有其他方法可以做到这一点?谢谢!

4

1 回答 1

1

您的一个裸仓库将包含所有 3 个分支。您可以使用这样的 git 修饰符将 3 个单独的目录更新为每个分支包含的内容:

git --work-tree=/some/project/dir/branch1 --git-dir=/path/to/bare/repo checkout branch1 -- .

为避免指定这些选项,您可以设置它们对应的环境变量:

GIT_WORK_TREE
GIT_DIR

这样,您可以保留一个裸仓库和 3 个单独的目录,这些目录在推送分支时会更新。记住你的钩子中提供的参数是什么。第一个是分支名称。

于 2012-07-05T17:51:13.327 回答