web-dev-qa-db-ja.com

私のgitブランチはSourcetreeで「Origin / master」と「Origin / HEAD」を表示していますが、2つをマージする方法がわかりません

最近、作業中のブランチを「master」ブランチとマージしました。 Origin/masterOrigin/HEADの両方のブランチを作成するために、プッシュまたはプルするときに何かを実行する必要があります(まだgit n00bのようなものです)。残念ながら、これを実行したコマンドを実行した記録はありませんでした。現在、私のチームのマスターコピーには、プロジェクトをチェックアウトしたときに取得できないコードがたくさんあります(新しい場所にcloneしても)。

Sourcetreeが表示しているもののスクリーンショットは次のとおりです。

2 branches

私は本当にこれを解決する必要があります。そうすれば私は仕事を続けることができるので、どんな助けでも大いに感謝されます。

18
Zachary Abresch

これはマスターへの単なるポインターであり、必要に応じてシンボリックリンクです。ターミナル(またはWindowsユーザーの場合はgit bash/cygwin)で次の手順を実行することで、安全に削除できます。

  1. リポジトリに移動します
  2. 実行:git remote set-head Origin -d

今それはなくなっているはずです:

$ git branch -r
Origin/master
9
Gabriel

Origin/で始まるブランチは、いわゆる「リモート追跡ブランチ」です。それらは、リポジトリ内のブランチの位置Originがそのリポジトリから最後にgitをフェッチしたときの位置を示します。

心配する必要はありません。これは実際に役立つ情報です。これらのブランチの位置が古くなっていると思われる場合は、次のコマンドを実行できます。

git fetch Origin

...それらを更新します。

どのリポジトリでも、HEADは、現在のブランチ(または、特定のブランチにいない場合は現在のコミット)を表す特別な種類のref(「symref」)です。


図を見ると、masterブランチは実際にはOrigin/masterより1コミット進んでいることがわかります。したがって、同僚がmasterOriginにプッシュしている場合は最近git fetch Origin(または同等のもの)を実行しましたが、すでにすべての作業が完了しています。ただし、それをプッシュするまで、コミットは失われます。

あなたは言う:

現在、私のチームのマスターコピーには、プロジェクトをチェックアウトしたときに取得できないコードがたくさんあります(新しい場所にクローンを作成した場合でも)。

その場合、彼らはおそらく別のブランチ、別のリポジトリにプッシュしているか、作業をまったくプッシュしていません。

7
Mark Longair