git refname 'origin/master' はあいまいです。
質問
いくつかのリモートブランチを追跡しているgitリポジトリがあります。
$ git branch -a
* master
remotes/git-svn
remotes/origin/master
remotes/trunk
デフォルトのものを設定しようとすると、以下のエラーが発生します。
$ git branch --set-upstream-to=origin/master master
warning: refname 'origin/master' is ambiguous.
fatal: Ambiguous object name: 'origin/master'.
リモートマスターブランチのいくつかを削除したいのですが、マスターの参照がまだ残っています。どうすればそれらを削除して、デフォルトの上流ブランチを
origin/master
?
$ git show-ref master
cba97a58c99743c355b569bbf35636c8823c2d96 refs/heads/master
6726b4985107e2ddc7539f95e1a6aba536d35bc6 refs/origin/master
d83f025cd3800ed7acd76b2e52ae296e33f1cd07 refs/original/refs/heads/master
cba97a58c99743c355b569bbf35636c8823c2d96 refs/remotes/origin/master
どのように解決するのですか?
の出力は
git branch -a
というリモート追跡ブランチがあることを示しています。
origin/master
. 完全に正常です。
しかし、出力される
git show-ref master
には
6726b4985107e2ddc7539f95e1a6aba536d35bc6 refs/origin/master
となっており、以下のような低レベルのコマンドを実行した可能性が高いことがわかります。
git update-ref refs/origin/master master
このコマンドはブランチを作成します。
master
という名前のブランチを作成します。
origin/master
の直下に住んでいますが
refs/
の直下に住んでいる、つまり
の外側
は
refs/heads/
という名前空間の外側で、通常ローカルブランチが存在する場所です。かなり怪しい... そんなつもりだったのでしょうか?
そのようなブランチは
git branch -a
. しかし、Git は混乱しています。というのも、2 つのブランチの refname が
origin/master
:
-
refs/remotes/origin/master
は、あなたのリモート追跡用ブランチと -
refs/origin/master
の外に (偶然) 作ったローカルブランチです。refs/heads/
.
解決方法
もし、あなたが
ではなく
を作成することを意味します。
refs/origin/master
単純に削除してください。
git update-ref -d refs/origin/master
そうすれば、曖昧さがなくなり、Gitはあなたが
master
を上流に設定しようとしたときに、Git はそれに従います。
もし、あなたが
refs/origin/master
曖昧さを避けるために、単純に
フル
として設定したいブランチの参照名を指定します。
master
の上流に設定したいブランチです。
git branch --set-upstream-to=refs/remotes/origin/master master
アイデアを修正するために、私の GitHub リポジトリの 1 つで状況を再現するコードを以下に示します。
$ cd ~/Desktop
$ git clone https://github.com/Jubobs/gitdags && cd gitdags
$ git update-ref refs/origin/master
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
$ git show-ref master
15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/heads/master
15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/origin/master
15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/remotes/origin/HEAD
15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/remotes/origin/master
$ git branch --set-upstream-to=origin/master master
warning: refname 'origin/master' is ambiguous.
fatal: Ambiguous object name: 'origin/master'.
$ git update-ref -d refs/origin/master
$ git branch --set-upstream-to=origin/master master
Branch master set up to track remote branch master from origin.
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] リモートにないトラッキングブランチを削除
-
[解決済み] 古いリモート git ブランチのクリーンアップ
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
git を使用してリモートリポジトリを更新する場合、現在のブランチの先端がエラーの背後にあるため、更新が拒否されました。
-
Git学習まとめ(2)コミットには何も追加されていないが、未追跡のファイルは存在する
-
GitのPlease enter a commit messageで、このマージが必要な理由を説明してください。
-
[Gitラーニングノート】Gitのコンフリクト:マージする前に変更をコミットするかstashする。
-
[解決済み】ブランチを指定せずにgit pushした場合のデフォルトの動作
-
[解決済み] 新サーバーへのGitプッシュ/クローン
-
[解決済み] Git は、省略形のコミット ID が 2 つの異なるコミットを参照する場合に警告を発しますか?
-
[解決済み] ローカルのGitブランチをリモートレポにコピーする方法
-
[解決済み] GitHub: フォークを "自分のプロジェクト "にする
-
[解決済み] 以前のコミットにファイルを追加するには?