1. ホーム
  2. git

[解決済み] Git のリモート HEAD を master 以外に指定するように変更する

2022-07-11 14:23:25

質問

Git リモートの HEAD 参照が "master" 以外を指すようにするにはどうすればよいのでしょうか。

私のプロジェクトでは、"master" ブランチを使用しない方針です(すべてのブランチに意味のある名前を付けることになっています)。さらに、正規のマスター リポジトリは ssh:// を介してのみアクセス可能で、シェル アクセスはできません (GitHub や Unfuddle のようなもの)。

私の問題は、リモートリポジトリはまだ refs/heads/master への HEAD 参照を持っていますが、私はそれが別のブランチを指す必要があることです。 これは 2 つの問題を引き起こしています。

  1. レポをクローンするとき、そこにこれ。

    警告: リモート HEAD は存在しない参照元を参照しているため、チェックアウトできません。

    それは紛らわしくて不便ですね。

  2. ウェブベースのコードブラウザは、ツリーをブラウズするための基礎として HEAD に依存しています。それならば、HEADが有効なブランチを指し示す必要がありますね。

どのように解決するのですか?

ほとんど と同じ質問がGitHubにありました。 にも同じ質問がありました。

masterブランチの名前を変更することでした。

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 を作成し、それをcloneします。

  • HEAD 参考文献 refs/heads/master で、それが存在する

    -というローカルブランチを取得します。 master というローカルブランチを取得し、そこから origin/master

  • HEADリファレンス refs/heads/anotherBranch で、それが存在する

    -というローカルブランチを取得します。 anotherBranch というローカルブランチを取得し、そこから origin/anotherBranch

  • HEADリファレンス refs/heads/master を参照し、それが存在しない

    -> " git clone "文句を言う

を直接修正する方法があるかどうかは分かりませんが、このように HEAD を直接修正する方法があるかどうかは分かりませんが、レポの .

(これがあなたの質問のすべてのポイントです、私は知っています ;) )


たぶん というのは、唯一の方法は "貧しい人々のための出版物" である。

 $ git-symbolic-ref HEAD refs/head/published
 $ git-update-server-info
 $ rsync -az .git/* server:/local_path_to/git/myRepo.git/

しかし、それにはサーバーへの書き込みアクセスが必要であり、常に可能とは限りません。


で説明したように、" Gitです。ベアリポジトリでアクティブブランチを変更する正しい方法? "です。 git remote set-head を実行しても、リモート リポジトリでは何も変更されません。

これはローカルリポジトリに保存されているリモート追跡ブランチを変更するだけです。 remotes/<name>/HEAD .


Git 2.29 (2020 年第 4 四半期) で、"。 git remote set-head ( ) 失敗した "はまだ操作が通過したことを示唆する何かを言った、それは誤解を招くものだった。

参照 コミット 5a07c6c (2020年9月17日) による Christian Schlack ( cschlack ) .

(によって統合されました。 ジュニオ・C・ハマノ--。 gitster -- コミット 39149df 2020年9月22日)

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