5

私は git にはかなり慣れていませんが、セットアップしたリモート サーバーで git をいじっており、基本を理解していると確信しています。

gitlab をセットアップし、コードの一部を新しいプロジェクトにプッシュしました。私がしたことは:

  1. ディレクトリ内のすべてのコードを取得する
  2. git初期化
  3. git add .
  4. git commit -m "初期コミット"
  5. git push オリジンマスター

origin が設定された場所:

git remote add origin git@1.2.3.4:myproject.git

git branch -a を実行すると、次のように表示されます。

* master
  remotes/origin/master

以前遊んでいたとき、私はいつも見ていました:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

head は現在チェックアウトされているブランチへのポインターであることを理解しています。なぜ作成されなかったのですか?

4

3 に答える 3

7

このリモコンについてはあまり心配しないでくださいHEAD。この行は、元のクローンが機能する方法の単純なアーティファクトであり、リモートの状態を表していHEADます。

これは、サーバーが優先するデフォルトのブランチと見なすことができます (リモートのベア リポジトリ上であっても) -オプションが使用されていないgit clone場合、デフォルトでクライアントによってチェックアウトされます。-b branch

あなたのローカルファイル.git/refs/remotes/origin/HEADにはおそらく文字列が含まれていますref: refs/remotes/origin/master。必要に応じて削除できます (お勧めしませんが、気にしないでください) git branch -a。表示されなくなります。

HEADリモートを最初のクローンのデフォルト ブランチとして使用する場合を除き、リモートの状態はHEAD重要ではありません。HEADデフォルトで選択されたブランチとしてのリモート状態に対してのみ意味があるため、リモートではなく、実際のリモートブランチの状態のみを心配する必要があります。そして、リモートがベアリポジトリだと、リモートでもあまり意味がありません。

を実行したときにリモート HEAD が表示されなかった理由はgit remote add ...git fetchそのgit pull場合、デフォルトでどのリモート ブランチをピックアップするかを git が決定する必要がなかったからです。

于 2012-11-28T07:53:05.597 に答える