我有一个裸存储库,用作我项目的中央存储.所有开发人员都git clone <repo>愿意与之分享.当他们进行克隆时,他们会检查主分支(除非他们这样做git clone -n)因为repo.git/HEAD包含ref: refs/heads/master,使其成为活动分支.
问题是,如何正确更改活动分支?我可以简单地直接破解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文件,但它将其设置为指向的提交的SHA1 refs/heads/otherbranch.
我正在使用git版本进行测试1.7.0.2.msysgit.0.
我猜测没有办法做到这一点git push,因为允许所有和各种更改你的默认分支似乎有点不安全(!),但肯定有一个更好的方法在repo .git目录中执行它比直接黑客HEAD文件.
我有一个分支设置来跟踪ref in origin. git checkout <branchname>切换到那个分支,一个git status将显示我的分支从原点到前方或后方的距离,但我origin/HEAD仍然感到惊讶,仍然指向origin/master,而不是origin/<branchname>
所以我的问题是,在什么情况下起源/ HEAD会被移动?
编辑:
我很欣赏有关如何移动origin/HEAD 的答案,但我对"有机"移动它感兴趣,除了明确告诉它这样做之外.
例如,当我切换分支时,git使HEAD指向我正在检出的分支,所以我很惊讶origin/HEAD不会以相同的方式移动.
如果我分叉一个托管在github上的项目.我分叉所有分支吗?我怎么知道我的fork基于哪个分支?换句话说哪个分支将被下载到我的PC?
我需要删除一个主分支,但事实证明它很难.我只想清理那个分支并开始新的.我从开发分支删除.我希望GitHub上的主人干净.
# git push origin --delete master
> To https://github.com/mymasterb.git ! [remote rejected] master
> (deletion of the current branch prohibited) error: failed to push some
> refs to 'https://github.com/mymaster.git'
Run Code Online (Sandbox Code Playgroud)
我如何简单地用新鲜的石板开始我的主人?
我不明白输出中的第二行git branch -l -a:remotes/origin/HEAD -> origin/master.
git branch -l -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
Run Code Online (Sandbox Code Playgroud)
这是另一种手术的遗留物吗?我应该把它清理干净吗?那我该怎么办?
通常我在cli上使用git,但是在我尝试的本地存储库中TortoiseGit为朋友找到一个简单的git工作流程.
我正在尝试根据这里的说明设置gitosis .
它从我的远程机器工作正常,所以服务器似乎设置正常,但我也希望能够从我的gitosis服务器机器上从不同的用户帐户(不是在gitosis设置中创建的git用户)进行开发.
我已经复制了密钥并修改了gitosis.conf,以便其他用户帐户可以访问,但是当我尝试克隆它似乎工作时,除了最后它说:
git Warning: remote HEAD refers to nonexistent ref, unable to checkout
Run Code Online (Sandbox Code Playgroud)
我最终得到一个空的目录,除了.git
我已经谷歌这一点,但没有真正了解问题是什么
假设您有一个具有中央主git存储库的场景,开发人员和CI引擎可以从中进行克隆.即非常接近传统的非分布式版本控制系统设置,具有中央集线器和许多节点.
现在说服务器被闪电或任何其他可能导致中央存储库与其所有集中备份一起消失的东西被盗或被攻击.您剩下的就是各种克隆,幸运的是其中一个已完全更新,因此您创建了一个空白的git存储库替换服务器,用作未来的中央存储库并开始处理克隆.
完全更新的克隆使用"git branch -a"知道所有"远程/源"分支,但只有一个本地分支.(这让我担心 - 失去分支机构信息).
重新建立一个新的中央git存储库的步骤是什么,表现在任何方式,如旧的,分支机构和所有?
在我的远程裸存储库中,HEAD指向"refs/heads/master",我希望它指向"refs/heads/other".
我无法进入远程存储库目录并运行git symbolic-ref.是否有任何git命令来实现它?还是其他任何方式?
如果没有办法,Github是否允许改变HEAD?
提前致谢.
启动TortoiseGit时出现此错误:

无法得到所有裁判.
libgit2返回:未找到Refspec'refs/heads/origin/HEAD'
虽然烦人,但它并不妨碍我使用TortoiseGit.但是,我想让它消失,因为它很烦人.我该如何解决?
我知道这可以在存储库的Admin页面上完成.可以在那里设置另一个默认分支.这就是这个问题的答案.
但我发现(可能是一个错误?)以下内容.如果你的master分支和develop分支完全相同,那么git clone不会克隆默认的"develop"分支,但仍然是"master"!! 如果您对开发分支提交了一些内容,删除了克隆并再次克隆,那么您将获得开发分支!
这是Git行为还是Github?这可以修复,以使其始终发展?
git ×9
github ×4
branch ×2
git-branch ×2
git-fork ×1
gitosis ×1
head ×1
libgit2 ×1
master ×1
tortoisegit ×1