web-dev-qa-db-ja.com

GitプルOrigin HEAD

次のようにすることで、現在のGitブランチの名前と一致するリモートブランチにプッシュしたりプルしたりできると教えられました。

git Push Origin HEAD

または

git pull Origin HEAD

以前は常に私のために働いていましたが、奇妙にうまくいかないことがあり、代わりにmasterブランチからのプッシュ/プルを延期します(プル時にマージが発生します...私がやりたいことではありません) )。次のようにブランチの名前を使用するだけで、現在のブランチから簡単にプッシュ/プルできることを知っています。

git pull Origin name-of-branch-i-want-to-pull-from

とにかく

  1. HEADがほとんど常にそうであるように、現在のブランチを指していない/トラックを失っているという理由はありますか?
  2. コマンドでブランチに明示的に名前を付けずに、現在作業中のブランチに(リモートブランチの名前が一致する限り)プッシュ/プルする方法はありますか?
20
Rican7

@abackstromによる深刻な支援のおかげで、問題を解決することができました。基本的に、この投稿は私の問題であり、解決策でした:

Gitブランチの名前はOrigin/HEAD-> Origin/master

ローカルを「再作成」/追跡するための正確なコマンドHEADブランチ/ポインタは正しく:

git remote set-head Origin -a

これがこの問題に遭遇した他の人を助けることを願っています。

3
Rican7

HEADは実際にはブランチではありません。これは、現在チェックアウトしているコミットへのポインタであり、多くの場合ブランチを参照しますが、git checkout <sha>またはgit checkout <tag>のようなことをすると、HEAD参照ブランチに関連付けられていない直接コミット-これは「切り離されたヘッド」状態と呼ばれ、通常、そのような状態に入るとgit checkoutから警告が表示されます。その状態では、プッシュ/プルHEADはブランチにいないので意味がありません。

4
twalberg