gpt4 book ai didi

Git:在裸存储库中更改事件分支的正确方法?

转载 作者:IT王子 更新时间:2023-10-29 01:16:26 27 4
gpt4 key购买 nike

我有一个裸存储库用作我的项目的中央存储。所有的开发人员都在做git clone <repo>与它分享。当他们进行克隆时,他们会检查主分支(除非他们这样做 git clone -n )因为 repo.git/HEAD包含 ref: refs/heads/master ,使其成为事件分支

问题是,如何正确更改Active Branch?我可以简单地破解 repo.git/HEAD直接归档,但这看起来很讨厌,而且很老套。

我试过做 git checkout <otherbranch>在 repo .git目录,但失败了,因为我不在工作树中。

我试过了 git update-ref HEAD refs/heads/otherbranch但是刚刚将 refs/heads/master 更新为与 refs/heads/otherbranch 相同(好吧,我在虚拟存储库中做了那个,而不是我的生产存储库!)

我试过了 git update-ref --no-deref HEAD refs/heads/otherbranch这几乎奏效了。它更新了 HEAD文件,但它将其设置为 refs/heads/otherbranch 指向的提交的 SHA1 .

我正在测试 git 版本 1.7.0.2.msysgit.0 .

我猜没有办法通过 git push 做到这一点,因为允许所有人和杂项更改您的默认分支似乎有点不安全(!),但在 repo .git 中肯定有更好的方法来做到这一点目录而不是直接破解 HEAD文件。

最佳答案

如果您有权访问远程裸仓库,这 article suggests :

git symbolic-ref HEAD refs/heads/mybranch

Which will update the HEAD file in your repository so that it contains:

ref: refs/heads/mybranch

git-symbolic-ref 中所述


如果您无权访问远程仓库,请参阅 my previous answer .


记住像 git remote set-head 这样的命令:

  • 不会更改远程 存储库的默认分支。
    它只会将存储在您的本地 存储库中的远程跟踪分支更改为refs/remotes/<name>/HEAD

  • 不改变 HEAD本身(同样,只有 refs/remotes/<name>/HEAD ),因此需要 git symbolic-ref .

所以 git remote set-head 不是这里的答案。
git symbolic-ref HEAD是,如果您可以直接访问远程仓库。

关于Git:在裸存储库中更改事件分支的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3301956/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com