我在bash脚本中有以下几行:
customresourceoutput:
Value:
!GetAtt customerResource.responseKeyName -> name of the key from the response
我想要做的是创建一个新的分支foo,其父级是origin / dev。 (请更正我的术语)。
问题是我得到了
git checkout -b foo "origin/dev" git push -u origin HEAD
那到底是什么意思?当我签出foo并执行git push时,我希望将其推送到远程上名为foo的分支。我以为本地分支机构跟踪远程站点时,按下分支机构后,该跟踪分支会正确吗?
答案 0 :(得分:2)
分支没有父分支。
分支要做具有上游设置。更具体地说,每个分支名称(格式为refs/heads/name
的每个本地名称)可以上游具有一(1),也可以不具有上游。
在使用git branch
或git checkout -b
创建分支时,如果您当时选择设置新分支的上游,则Git会打印出您引用的消息:
Branch foo set up to track remote branch dev from origin.
这意味着您的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/xyzzy
。最后一条命令的一个约束是origin/xyzzy
实际上必须存在。
(请注意,非常老的Git版本没有--set-upstream-to
。相反,它们具有--set-upstream
,它具有相同的作用,但是需要交换参数的顺序。结果是是常见的错误来源,因此现代的Git不赞成使用旧的--set-upstream
选项,而用--set-upstream-to
代替它,这样更易于正确使用。)
答案 1 :(得分:1)
Branch foo设置为从源头跟踪远程分支dev。
这意味着您的本地foo
分支正在跟踪远程dev
分支。因此,git push
将推送到dev
分支。您需要将跟踪分支更改为远程foo
分支。
其中一种方法是:
从本地foo
分支推送到远程foo
分支:
$ git push origin HEAD:foo
将本地foo
分支的上游设置为远程foo
分支:
$ git branch foo --set-upstream-to origin/foo
Or,
$ git branch foo -u origin/foo
现在,本地foo
分支正在跟踪“ remote foo”分支。因此,仅git push
就会推送到远程foo分支。