Git 创建具有和不具有'-b';

Git 创建具有和不具有'-b';,git,Git,我有一种情况,我不理解更新是如何在内部发生的 我有两个远程分支: master dev 现在,我想用dev创建3个本地分支 命令1: git checkout dev 命令2: git checkout -b "Us1DevBranch" origin/dev 命令3: git checkout -b "Us2DevBranch" origin/dev 当执行git branch命令时 dev Us1DevBranch Us2DevBranch 场景: 5天后,我选择了一个分支Us1D

我有一种情况,我不理解更新是如何在内部发生的

我有两个远程分支:

master
dev
现在,我想用dev创建3个本地分支

命令1:

git checkout dev
命令2:

git checkout -b "Us1DevBranch" origin/dev
命令3:

git checkout -b "Us2DevBranch" origin/dev
当执行
git branch
命令时

dev
Us1DevBranch
Us2DevBranch
场景: 5天后,我选择了一个分支Us1DevBranch并开始向该分支添加一些文件。在这5天里,假设对远程开发分支进行了5次修改,我想进行更新

现在,当我这样做时,
git-pull-origin-dev
只影响我的本地
dev
分支。其他2个分支
Us1DevBranch和Us2DevBranch
未更新

问题:-

1) 我在文档和其他讨论论坛中看到的是,git pull在内部执行git获取,然后将git合并到从该分支创建的本地分支。但是为什么其他两个分支没有得到更新呢

2) 我的印象是,使用
-b
选项签出分支机构只是为了给分支机构指定一个不同的本地名称&其他一切都是一样的。但是还有比这更重要的事情,就像我做的
git pull
一样,只有通过选项
git checkout dev
创建的分支受到影响,而不是其他分支!为什么会这样?

1)创建新分支时,它与该时间点完全不同。您还必须手动更新所有这些分支

2) 如果您只是想给它起一个不同的名字,而其他一切都保持不变:

git branch -m newbranchname
1) 创建新分支时,它与该时间点完全不同。您还必须手动更新所有这些分支

2) 如果您只是想给它起一个不同的名字,而其他一切都保持不变:

git branch -m newbranchname

问标题问题。传递给git checkout的'-b'选项是创建一个新分支。当您希望在一行中创建并签出新分支时,将使用该选项


现在,如果您想获取/拉取所有分支,可以使用
git-fetch--all
git-remote-update
,这是等效的。甚至
git-push——所有人都在问标题问题。传递给git checkout的'-b'选项是创建一个新分支。当您希望在一行中创建并签出新分支时,将使用该选项

现在,如果您想获取/拉取所有分支,可以使用
git-fetch--all
git-remote-update
,这是等效的。甚至是git push--all

以下命令:

git checkout dev
git branch -vv
只做一项工作:它将您当前的分支更改为dev;它不会创建任何名为dev的分支!您可以执行
git checkout dev
,因为您的本地分支中已经有了它,这是克隆的结果您的远程分支中有一个dev分支

但是

是否有三份工作:

  • 它创建一个名为Us1DevBranch的分支
  • 它签出到该分支(即,将当前分支更改为新创建的Us1DevBranch分支)
  • 它将此本地分支设置为跟踪远程源/开发分支(即,每次您在该分支上执行
    git fetch
    git pull
    git push
    时,它将根据远程源/开发分支进行更新)。如果没有最后一个参数,您需要在每次
    git fetch
    git pull
    git push
    时指定remote和branch,例如
    git pull origin dev
    以使用远程dev更新本地分支
  • 因此
    git checkout-b“Us1DevBranch”
    等于
    git branch“Us1DevBranch”
    +
    git checkout“Us1DevBranch”
    并且您的命令
    origin/dev
    的最后一个参数将为这个新创建的分支设置跟踪

    最后,您可以通过以下方式手动设置现有分支(如dev)的跟踪:

    并且不需要为主机设置跟踪,因为克隆后会自动设置跟踪源/主机

    您始终可以通过以下命令检查分支机构的跟踪信息(即我的本地分支机构跟踪哪个远程分支机构?):

    git checkout dev
    
    git branch -vv
    
    以下命令:

    git checkout dev
    
    git branch -vv
    
    只需执行一项工作:它将当前分支更改为dev;不会创建任何名为dev的分支。
    git checkout dev
    ,因为克隆了具有dev分支的远程分支后,您的本地分支中已经有了它

    但是

    是否有三份工作:

  • 它创建一个名为Us1DevBranch的分支
  • 它签出到该分支(即,将当前分支更改为新创建的Us1DevBranch分支)
  • 它将此本地分支设置为跟踪远程源/开发分支(即,每次您在该分支上执行
    git fetch
    git pull
    git push
    时,它将根据远程源/开发分支进行更新)。如果没有最后一个参数,您需要在每次
    git fetch
    git pull
    git push
    时指定remote和branch,例如
    git pull origin dev
    以使用远程dev更新本地分支
  • 因此
    git checkout-b“Us1DevBranch”
    等于
    git branch“Us1DevBranch”
    +
    git checkout“Us1DevBranch”
    并且您的命令
    origin/dev
    的最后一个参数将为这个新创建的分支设置跟踪

    最后,您可以通过以下方式手动设置现有分支(如dev)的跟踪:

    并且不需要为主机设置跟踪,因为克隆后会自动设置跟踪源/主机

    您可以随时检查分支机构的跟踪信息(即我的loca