我正在分支机构,我们说它是branch1.1
。我进行了一些更改,只需使用'git commit'来提交这些更改。然后,当我经常处理master
时,我会git push
检查它们。但是会出现这样的错误:
To git@thoroughbred:flt/test.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@thoroughbred:flt/test.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
当我做git pull
时,据说是
'Already up-to-date'
如何解决此问题?似乎master
上的内容发生了变化,但我在branch1.1
,我想要检查的内容是branch1.1
。
答案 0 :(得分:2)
当您运行git push
而不给它任何额外的参数时,它将使用您的push.default
设置来决定尝试推送哪个分支。
"默认push.default
"旧版本的git是matching
:如果你有一个名为branch1.1
的分支,并且该远程有一个名为branch1.1
的分支,git会将branch1.1
添加到事物列表中它相信你要求它推动。如果您有一个名为master
的分支,并且该远程有一个名为master
的分支,git将还将master
添加到它认为您询问的内容列表中它推动。
(如果远程 没有branch1.1
,您自己的git将不将branch1.1
添加到要推送的内容列表中。我无法从您的问题中判断您的遥控器是否有branch1.1
。)
如果您不想推master
,您可以:
git push origin branch1.1
1 push.default
push.default
(这不是一个详尽的清单,只是涵盖了基础知识)。
就我个人而言,我喜欢将push.default
设置为nothing
,这迫使我明确指出我希望推送哪个分支。但是,git 2.0默认为simple
,这对初学者来说可能是最有用的。要将您自己的默认值(在所有存储库中)设置为简单,请使用:
git config --global push.default simple
(详见the git config
documentation)。
1 请注意,这"表示" git push origin branch1.1:branch1.1
,即从您的本地branch1.1
推送到远程branch1.1
,必要时在遥控器上创建分支。这是您最初创建分支的方法。
另请注意,您不必在git存储库中使用与远程服务器相同的名称。例如,你可以git push origin branch1.1:liquid-branch-1.1
。但是,如果你使用不同的名字,它确实会令人困惑; simple
设置强制执行"必须具有相同的名称"限制,以避免这种混乱。如果您在遥控器上创建liquid-branch-1.1
,则可能需要重命名本地git中的分支。