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
とそれが存在する->から始まる
というローカルブランチを取得しますmaster
origin/master
HEAD が参照refs/heads/anotherBranch
し、それが存在する->から始まる
というローカル ブランチを取得します。anotherBranch
origin/anotherBranch
HEAD 参照refs/heads/master
であり、それが存在しない
-> " git clone
" 文句を言う
HEAD
repoの 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
remote
set-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