【问题标题】: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 个单独的目录,这些目录会在推送分支时更新。记住钩子中提供的参数是什么。第一个是分支名称。

    【讨论】:

      猜你喜欢
      • 2022-11-15
      • 2017-05-28
      • 1970-01-01
      • 2016-01-05
      • 2014-06-08
      • 2010-09-08
      • 2014-10-07
      • 1970-01-01
      相关资源
      最近更新 更多