0

わかった。これは私を混乱させます。コマンドを実行して、空の git リポジトリを初期化しましたgit init。次に、ファイルを git のオブジェクト ストアに追加しました。git add .つまり、ブランチを作成しようとしましたgit branch {branchname}。私が読んだ内容に基づいて、少なくとも一度はコミットしないとブランチを作成できないため、エラーが発生します。わかった。かみます。だから私は試してみgit checkout -b {branchname}ます。うまくいったようです。つまり、作成したばかりのブランチに転送されます。うわあ?試してみるgit checkout masterと、エラーが発生しますerror: pathspec 'master' did not match any file(s) known to git.

新しいブランチを作成できたのに、 をチェックアウトできなかったのはなぜmaster branchですか? 私が見落としていること、または理解していないことは何ですか?

4

2 に答える 2

1

master、 likeoriginまたはupstreamは規則であり、要件ではありません。にはコミットがないmasterため、参照もありません。HEADまだ存在しない参照を指しています。を実行するときgit checkout -b branch、git に次のことを要求します。

  1. HEADポイントの参照を複製します。
  2. あなた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.
于 2013-01-24T02:56:00.003 に答える
0

最初はうまくいきませんでした...

durrantm.../play$ mkdir ggg
durrantm.../play$ cd ggg
durrantm.../ggg$ git init
Initialized empty Git repository in /home/durrantm/play/ggg/.git/
durrantm.../ggg$ git checkout -b newy
fatal: You are on a branch yet to be born

...はいまで、マスターで最初のコミットを行いました:

durrantm.../ggg$ vi x.x
durrantm.../ggg$ git add .
durrantm.../ggg$ git commit -m"Initial Commit"
[master (root-commit) 75bcf19] Initial Commit
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 x.x
durrantm.../ggg$ git checkout -b abc
Switched to a new branch 'abc'
durrantm.../ggg$ 
于 2013-01-24T01:17:34.950 に答える