我已经看到了检查现有远程分支的不同方法:
假设我的朋友推出了新的分支'bigbug',我想检查并将我的本地工作副本切换到该分支,我有以下选项:
1. git checkout -b bigbug origin/bigbug
2. git checkout -t origin/bigbug
3. git fetch
git checkout bigbug
当前git版本中是否有以上三个选项可用且有效?如果一切都有效,那么它们和使用哪一个之间是否存在差异?
答案 0 :(得分:26)
checkout命令的基础是:
git checkout --[options] <local branch> <remote>/<tracked branch>
当您执行git checkout -b bigbug origin/bigbug
时,您要告诉Git执行两个命令:
当您执行git checkout -t origin/bigbug
时,您要告诉Git执行上面相同的两个命令。不同之处在于它将使用远程分支的相同名称命名本地分支(在第一个示例中,您可以将远程分支的名称更改为您想要的任何名称)。 -t 选项与 - track 相同。
在上一个命令中,当您运行:git fetch
时,您告诉Git在远程存储库中查找新的提交,分支等。然后当您运行git checkout bigbug
时,告诉它更改工作区匹配bigbug分支。 如果您有一个具有该名称的本地分支,Git将结帐。如果没有,它会将远程分支看作一个匹配的名称,然后创建一个同名的本地分支。
所以,当你使用一个或另一个时,它取决于你想要什么。大多数情况下它们将以相同的方式工作(除了在最后一个示例中,当您已经拥有一个具有相同远程分支名称的本地分支时)。最重要的是确切地知道命令和选项的作用,并根据你的需要将它们组合起来。