2017-08-28 12 views
0

私の仲間はgitブランチからソースを複製しようとしました。 彼のマシン "git branch"を試してみると、origin/masterを出力します。 私は同じソースをクローンしましたが、gitブランチの後では常にmasterという出力を見ました。 origin/masterはリモートブランチを意味し、なぜローカルブランチではなくリモートブランチを見るのか分かりません。 問題の原因は何ですか?なぜコマンドgitブランチ後にマスターの代わりにorigin/masterが表示されるのですか

+0

'git config --global -l'と' git config --system -l'と 'git config --local -l'の結果を提供できますか?repoディレクトリ内の最後のものですか? (あなたはメールやその他の機密データを匿名で匿名で受け取ることができます) – meta

答えて

1

これは、ローカルブランチのorigin/masterに名前を付けることができるため、参照の曖昧さが原因です。

詳細はGit Revisions Documentationを参照してください、それは順番に次の場所をチェックし、最初のマッチを返す参照を解決するときに、要約する:あなたの友人のリポジトリに

$GIT_DIR/<refname> 
$GIT_DIR/refs/<refname> 
$GIT_DIR/refs/tags/<refname> 
$GIT_DIR/refs/heads/<refname> 
$GIT_DIR/refs/remotes/<refname> 
$GIT_DIR/refs/remotes/<refname>/HEAD 

ルックを、あなたはこのファイルを見つけることができます $GIT_DIR/refs/heads/origin/master。そうであれば、すべてが正しく機能しており、あいまいな参照があるだけです。彼はあいまいさを取り除くために自分の地方のブランチ名を変更したいので、あいまいさから予期しない問題はありません。

それは本当に長いと(それが命名だかは重要ではありませんので、これは通常、あなたが注意点としてgit checkout -b origin/master代わりのgit checkout -b master origin/master

を入力すると、最寄りの支店名がコミットへの単なるポインタですチェックアウト時に発生します曖昧ではないので)。リモートにプッシュするときは、ローカルブランチのリモート設定に基づいてリモートブランチを更新するので、ローカルブランチ名は他の誰にも見えません。

1

答えはとてもシンプルで、あなたの友人はマスターの起源/マスターinstituteにチェックアウトしたと思います。 に、cmdを実行します。示す枝のリストで

git branch --all 

masterを探してみると、そのような枝あれば、それに

git checkout master 

をチェックアウトし、ローカルコピーから

を起源/マスターを削除します
git branch -D origin/master 
+0

マスターからのクローニングと起点/マスターからのクローニングの違いは何ですか?どちらの場合もリモートブランチからクローンを作成する必要があり、起点/マスターはリモートブランチを意味するので、私はそれを理解しません。なぜ違いがありますか? – StackPeter

+0

プロジェクトをクローンしているときは、** master **と** origin/master **ブランチの2つのものが得られます。 ** origin/master ** - リモート変更を管理します。 ** master ** - ローカル変更を含む責任 –

+0

** master **と** origin/master **ブランチ間の変更を同期させるには、2つのことができます: 1)git pull(これは 'git fetch'と 'git merge origin/master'コマンド) 2)手動で' git fetch'と 'git merge origin/master'を実行することができます –

関連する問題