2

私がまだ混乱している Git の 1 つの状況は次のとおりです。

$ git clone https://github.com/dude1/project

おっと、それは実際には正しいバージョンではありません。切り替えます:

$ git remote add dude2 https://github.com/dude2/project
$ git fetch dude2
$ git checkout dude2/master

Note: checking out 'dude2/master'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at f3o845a... 

うーん。masterdude2/master を参照したい。

$ git checkout -b master dude2/master

fatal: A branch named 'master' already exists.

ディレクトリ全体を削除してやり直す以外に、リポジトリをきれいに切り替えるにはどうすればよいですか?

4

2 に答える 2

3

git では、リモート ブランチで作業をコミットすることは想定されていません (ローカルブランチで作業を行う必要があり'detached head' stateます) checkout dude2/master。リモート ブランチには、ローカルで作成されたコミットではなく、リモートからのコミットのコピーを含める必要があります。

jthill が示唆するように、master意味の切り替えを強制する最善の方法は、

git checkout -B master dude2/master

出力には以下が含まれる必要があります

Branch master set up to track remote branch master from dude2.

マスターが別のリモート マスターの変更を追跡していることを示します。

于 2013-06-12T17:01:31.410 に答える
0

これを考えてみると、明らかな答えは次のとおりです。

まずはgit checkout dude2/master上記の通り。それで:

$ git branch -d master
warning: deleting branch 'master' that has been merged to
     'refs/remotes/dude1/master', but not yet merged to HEAD.
Deleted branch master (was f30845a).

$ git checkout -b master dude2/master
Branch master set up to track remote branch master from dude2.
Switched to a new branch 'dude2'

ただし、マスターを削除するときの警告の意味がわかりません。

于 2013-06-12T08:52:44.490 に答える