Git 签出来自origin/dev的分支,但不跟踪origin/dev
我在bash脚本中有以下几行代码:Git 签出来自origin/dev的分支,但不跟踪origin/dev,git,git-checkout,Git,Git Checkout,我在bash脚本中有以下几行代码: git checkout -b foo "origin/dev" git push -u origin HEAD 我想做的是创建一个新的分支foo,其父级是origin/dev(请更正我的术语) 问题是我得到了: 这到底是什么意思?当我签出foo并执行gitpush时,我希望它被推送到远程上名为foo的分支。我想当一个本地分支跟踪一个远程分支时,当你按下该分支时,它会转到跟踪分支,对吗 Branch foo设置为从源位置跟踪远程分支开发人员 这意味着您的本地
git checkout -b foo "origin/dev"
git push -u origin HEAD
我想做的是创建一个新的分支foo,其父级是origin/dev(请更正我的术语)
问题是我得到了:
这到底是什么意思?当我签出foo并执行gitpush时,我希望它被推送到远程上名为foo的分支。我想当一个本地分支跟踪一个远程分支时,当你按下该分支时,它会转到跟踪分支,对吗
Branch foo设置为从源位置跟踪远程分支开发人员
这意味着您的本地foo
分支正在跟踪远程dev
分支。因此,gitpush
将推送到dev
分支。您需要将跟踪分支更改为远程foo
分支
方法之一是:
从本地
foo
分支推送到远程foo
分支:
$ git push origin HEAD:foo
$ git branch foo --set-upstream-to origin/foo
Or,
$ git branch foo -u origin/foo
将本地foo
分支的上游设置为远程foo
分支:
$ git push origin HEAD:foo
$ git branch foo --set-upstream-to origin/foo
Or,
$ git branch foo -u origin/foo
现在,本地foo
分支正在跟踪到“远程foo”分支。所以,只要gitpush
就会推送到远程foo分支
Branch foo设置为从源位置跟踪远程分支开发人员
这意味着您的本地foo
分支正在跟踪远程dev
分支。因此,gitpush
将推送到dev
分支。您需要将跟踪分支更改为远程foo
分支
方法之一是:
从本地
foo
分支推送到远程foo
分支:
$ git push origin HEAD:foo
$ git branch foo --set-upstream-to origin/foo
Or,
$ git branch foo -u origin/foo
将本地foo
分支的上游设置为远程foo
分支:
$ git push origin HEAD:foo
$ git branch foo --set-upstream-to origin/foo
Or,
$ git branch foo -u origin/foo
现在,本地
foo
分支正在跟踪到“远程foo”分支。因此,只要gitpush
就可以推送到远程foo分支。分支没有父分支
分支确实具有上游设置。更具体地说,每个分支名称(形式为refs/heads/name
的每个本地名称)可以有一(1)个上游,也可以没有上游
使用git branch
或git checkout-b
创建分支时,如果您当时选择设置新分支的上游,git将打印您引用的消息:
这意味着您的refs/heads/foo
具有上游允许的名称origin/dev
使用git checkout-b
创建分支时,如果不希望新分支具有上游分支,请执行以下操作之一:
- 不要命名有效的上游。例如:
创建指向当前提交的新分支git checkout -b foo
,而不为新分支foo
设置上游foo
- 使用
选项告诉Git不要设置上游,即使您使用的名称适合安装为上游:--no track
git checkout --no-track -b foo origin/dev
foo
的上游设置为origin/dev
没有问题,因为您可以随时使用git branch
更改或删除此设置:
git branch --unset-upstream foo
将从foo
删除当前上游,同时:
git branch --set-upstream-to=origin/xyzzy foo
将foo
的上游设置为origin/xyzy
。最后一个命令的一个约束条件是origin/xyzy
必须实际存在
(请注意,非常旧版本的Git没有将
--set upstream设置为。相反,它们有--set upstream
,这做了同样的事情,但需要交换参数的顺序。这是一个常见的错误源,因此现代Git不推荐使用旧的--set upstream
选项,将其替换为<代码>--将上游设置为更易于正确使用的
。分支没有父分支
分支机构确实具有上游设置。更具体地说,每个分支机构名称(表refs/heads/name
的每个本地名称)可以有一(1)个上游,也可以没有上游
使用git branch
或git checkout-b
创建分支时,如果您当时选择设置新分支的上游,git将打印您引用的消息:
这意味着您的refs/heads/foo
具有上游允许的名称origin/dev
使用git checkout-b
创建分支时,如果不希望新分支具有上游分支,请执行以下操作之一:
- 不要命名有效的上游。例如:
git checkout -b foo
创建指向当前提交的新分支foo
,而不为新分支foo
设置上游
- 使用
--no track
选项告诉Git不要设置上游,即使您使用的名称适合安装为上游:
git checkout --no-track -b foo origin/dev
但是,将foo
的上游设置为origin/dev
没有问题,因为您可以随时使用git branch
更改或删除此设置:
git branch --unset-upstream foo
将从foo
删除当前上游,同时:
git branch --set-upstream-to=origin/xyzzy foo
将foo
的上游设置为origin/xyzy
。最后一个命令的约束条件是origin/xyzy
必须实际存在
(请注意,非常旧版本的Git没有将--set upstream设置为。相反,它们有--set upstream
,这做了同样的事情,但需要交换参数的顺序。这是一个常见的错误源,因此现代Git不推荐使用旧的--set upstream
选项,将其替换为<代码>--将上游设置为更易于正确使用的
。)