1 年前に GitHubでほぼ同じ質問がありました。
アイデアは、マスター ブランチの名前を変更することでした。
git branch -m master development
git branch -m published master
git push -f origin master
マスターに人々に使ってもらいたいものを持たせ、他のすべての作業をブランチで行います。
(" git-symbolic-ref HEAD refs/head/published" はリモート リポジトリに伝播されません)
これは、「 Git で origin/master を削除するにはどうすればよいですか」に似ています。
このスレッドで述べたように:(私の強調)
" git clone" は単一のローカル ブランチのみを作成します。
そのために、リモート リポジトリの を調べて、HEAD ref参照先のリモート ブランチと同じ名前のローカル ブランチを作成します。
まとめると、レポがAあり、それをクローンします。
HEAD参照refs/heads/masterとそれが存在する->から始まる
というローカルブランチを取得しますmasterorigin/master
HEAD が参照refs/heads/anotherBranchし、それが存在する->から始まる
というローカル ブランチを取得します。anotherBranchorigin/anotherBranch
HEAD 参照refs/heads/masterであり、それが存在しない
-> " git clone" 文句を言う
HEADrepoの ref を直接変更する方法があるかどうかはわかりません。
(これがあなたの質問の要点です、私は知っています;))
おそらく唯一の方法は、「貧しい人々のための出版物」です。
$ git-symbolic-ref HEAD refs/head/published
$ git-update-server-info
$ rsync -az .git/* server:/local_path_to/git/myRepo.git/
しかし、それにはサーバーへの書き込みアクセスが必要であり、常に可能であるとは限りません。
「Git: ベア リポジトリで Active Branch を変更する正しい方法は?」で説明したようgit remote set-headに、リモート リポジトリでは何も変更されません。
ローカル レポジトリにローカルに保存されているリモート トラッキング ブランチのみが変更されますremotes/<name>/HEAD。
Git 2.29 (2020 年第 4 四半期) では、失敗した " ( man ) " は、操作が完了したことを示唆する何かを言っていましたが、これは誤解を招くものでした。git remote set-head
Christian Schlack ( )によるcommit 5a07c6c (2020 年 9 月 17 日)を参照してください。( 2020 年 9 月 22 日、コミット 39149dfでJunio C Hamanoによってマージされました)cschlack
gitster
remoteset-head:失敗時に成功メッセージを表示しない
署名者: Christian Schlack
エラーが発生した場合に、「origin/HEAD set to master」というメッセージを抑制します。
$ git remote set-head origin -a
error: Not a valid ref: refs/remotes/origin/master
origin/HEAD set to master