【问题标题】:how to change branch on --bare remote from local in git如何在git中从本地更改--bare remote上的分支
【发布时间】:2012-07-05 17:08:37
【问题描述】:
我正在尝试在远程 --bare 存储库上创建一个挂钩,它将根据我发送到的分支将我从本地 git 发送的源代码复制到不同的文件夹中。我在本地有 3 个分支:master、development 和 release,所以我希望远程上有 3 个文件夹,其中包含每个分支的源代码。我发现使用:
git rev-parse --abbrev-ref HEAD
结合一系列 if 条件可以解决问题。唯一的问题是,对于您发送到的任何分支,远程的 HEAD 都保持不变。是否有任何代码可以在钩子中使用,所以它会知道我正在发送到某个分支?或者有没有其他方法可以做到这一点?谢谢!
【问题讨论】:
标签:
linux
git
repository
hook
【解决方案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 个单独的目录,这些目录会在推送分支时更新。记住钩子中提供的参数是什么。第一个是分支名称。