master
、 likeorigin
またはupstream
は規則であり、要件ではありません。にはコミットがないmaster
ため、参照もありません。HEAD
まだ存在しない参照を指しています。を実行するときgit checkout -b branch
、git に次のことを要求します。
HEAD
ポイントの参照を複製します。
- あなた
HEAD
を新しい参照に向けてください。
存在しない参照をHEAD
指しているため、何も複製せず、結局何も指していません。コミットせずにブランチを切り替え続ける限り、これは当てはまります。
最初のコミットを行うと、すべてが変更されます。コミットを行ったので、 currentHEAD
が指す ref ができました。次回ブランチを作成するときは、複製する参照があるため、次に切り替えるときにブランチが消えません。
例(らしい):
git init
touch test
git add test
# There are no refs at this point, but HEAD is pointing to the nonexistent refs/heads/master
git checkout -b new_branch
git checkout master # fails, no refs (for master)
git checkout -b new_branch2
git checkout new_branch # fails, no refs (for new_branch)
git commit -m "Initial commit."
# Now you have a ref for new_branch2, but not yet for any other branches.
git checkout -b new_branch3 # new_branch2's ref is duplicated
git checkout new_branch2 # success, you made a commit in this branch so it has a ref
git checkout new_branch3 # success, you made a commit in new_branch2 which this branch's ref is also pointing to.
git checkout master # failure, until you run with '-b' master doesn't have any refs yet.