切换到Git中的其他存储库

切换到Git中的其他存储库,git,github,Git,Github,在Git中,我仍然感到困惑的一种情况是: $ 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

在Git中,我仍然感到困惑的一种情况是:

$ 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... 
人力资源管理。我想
master
引用dude2/master

$ git checkout -b master dude2/master

fatal: A branch named 'master' already exists.

除了删除整个目录并重新启动外,我如何才能干净地切换存储库?

仔细考虑一下,显而易见的答案是:

第一个
git签出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'

但是,我不知道删除主机时的警告意味着什么。

在git中,您不应该在远程分支上提交工作(您应该在本地分支上执行工作),这就是为什么您在签出dude2/master时处于
'detached head'状态的原因。远程分支应该包含来自远程的提交副本,而不是本地创建的提交

正如jthill所建议的,强制切换
master
的最佳方法是

git checkout -B master dude2/master
输出应包括

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

表示您的主机正在跟踪另一个远程主机的更改。

如果您想放弃分支所引用的内容,请尝试
-B
而不是
-B
。太好了,谢谢。有趣的是-B给出了一条关于不同分支如何分化的消息。@SteveBennett那么这两个遥控器在master中的内容并不完全相同。您的第一个
克隆
复制了第一个遥控器的内容。当您将master切换到第二个remote时,这些差异被视为您自己创建了不同的提交,从而使master分支与remote“分离”。