Cra*_*lus 169 git version-control
我是新手git
,我在练习.我创建了一个本地分支,但是当我完成时,我看到git push
我的分支没有上传到存储库.我必须这样做:git push -u origin --all
.
为什么是这样?不是分支是默认推送的新变化吗?为什么我需要运行第二个命令?
Von*_*onC 208
实际的原因是,在一个新的repo(git init)中,没有分支(没有master
,根本没有分支,零分支)
因此,当您第一次推送到空的 上游仓库(通常是裸仓)时,该上游仓库没有相同名称的分支.
和:
matching
"(推同名的所有分支,创建它们,如果它们不存在),simple
'(仅推送当前分支,并且仅当它在上游具有类似命名的远程跟踪分支时,因为git 1.7.11)在这两种情况下,由于上游空仓库没有分支:
这意味着你当地的第一次推动不知道:
所以你至少需要做一个:
git push origin master
Run Code Online (Sandbox Code Playgroud)
但如果你这样做,你:
master
在上游(现在是非空仓库)创建一个上游分支:好.master
'需要被推送到上游(origin
)' master
'(上游分支):坏.这就是为什么建议第一次推动:
git push -u origin master
Run Code Online (Sandbox Code Playgroud)
这将记录origin/master
作为一个远程跟踪分支,并且将启用下一个推自动推master
到origin/master
.
git checkout master
git push
Run Code Online (Sandbox Code Playgroud)
这也适用于推送政策' current
'或' upstream
'.
在每种情况下,在初始之后git push -u origin master
,一个简单的git push就足以继续将master推送到右上游分支.
Joh*_*ner 105
你没有,见下文
我发现这个"功能"相当令人讨厌,因为我不是想把火箭发射到月球,只是推着我该死的树枝.你可能也这样做,否则你就不会在这里!
以下是修复:如果您希望它隐式推送当前分支,无论该分支是否存在于原点,只需发出一次此命令,您将永远不会再在任何地方:
git config --global push.default current
Run Code Online (Sandbox Code Playgroud)
所以如果你做这样的分支:
git checkout -b my-new-branch
Run Code Online (Sandbox Code Playgroud)
然后做一些提交,然后做一个
git push -u
Run Code Online (Sandbox Code Playgroud)
将它们带到原点(在该分支上),如果它不存在,它将为你创建所述分支.
注意-u位确保它们是链接的,如果你稍后从所述分支拉.如果你以后没有计划拉分支(如果你这样做,可以使用另一个衬管) - -u是没有必要的.
Kla*_*urn 38
git push
推送新分支时的输出
> git checkout -b new_branch
Switched to a new branch 'new_branch'
> git push
fatal: The current branch new_branch has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin new_branch
Run Code Online (Sandbox Code Playgroud)
一个简单的git push
假设已经存在当前本地分支正在跟踪的远程分支.如果不存在这样的远程分支,并且您想要创建它,则必须使用-u
(简短形式--set-upstream
)标志指定它.
为什么会这样?我想实施者认为在遥控器上创建一个分支是一个非常重要的行动,它应该很难做到这一点.git push
是你一直在做的事情.
"默认情况下,推出的新分支不是新的变化吗?" 我会说Git中的"改变"是一个提交.分支是指向提交的指针.对我来说,将推送视为将提交推送到其他存储库的东西更有意义.推送哪些提交取决于您所在的分支以及该分支与远程分支的跟踪关系.
您可以在Pro Git书的" 远程分支"一章中阅读有关跟踪分支的更多信息.
归档时间: |
|
查看次数: |
140501 次 |
最近记录: |