我开始使用Git,所以我觉得这个问题可能是一天的newbiest问题,因为这个任务是如此的简单,但它造成严重的头痛..
我有2个地方分支:
2个遥控器:
我需要通过本地更改生产。 所以,我的工作流程是:
git checkout local/production
git merge master
git commit
git push
git的合并:似乎做工精细,它检测到的所有差异。
git的承诺:
在当地的分公司/生产
你的分支是提前实现“产地/生产”的2个提交。
没有提交(工作目录干净)
和git推:
一切行动最新
所以,这一切,我不能把我的更改远程仓库。
根本原因:要剪切的解释总之,在我看来,你的local/production
不跟踪origin/production
。 您可以检查这个git branch -avv
。
关于git push
:需要注意的是git push
不带参数将更新所有已在本地跟踪分支更新(从远程分支机构git-push(1)
手册页):
git push ... [<repository> [<refspec>...]]
The special refspec : (or +: to allow non-fast-forward updates) directs git to
push "matching" branches: for every branch that exists on the local side, the
remote side is updated if a branch of the same name already exists on the remote
side. This is the default operation mode if no explicit refspec is found (that is
neither on the command line nor in any Push line of the corresponding remotes
file---see below).
因为简单的结果git push
,如果忘记了什么样的变化在当地的分支机构做有时是有点意外,我个人比较喜欢明确指定我想按哪个分支。 在你的情况看来,这是你想要做什么:
git push origin local/production:production
如果你想local/production
追踪origin/production
,可以使local/production
用于跟踪分支origin/production
使用选项-u
:
git push -u origin local/production:production
(仅一次)。 然后你可以从产地拉至local/production
。
内容提要:您需要了解的跟踪分支的概念和特有的语义git push
。
PS我想知道你的选择你的分行名称的local/production
在这里。 为什么不直接production
? 我怀疑你已经有了production
跟踪origin/production
和可能使用local/production
适合你的地方发展。 在这种情况下,合理的工作流程是这样的:
-
git pull origin production:production
拉更改您的production
- 如果在新提交
production
,这是local/production
背后则要么衍合local/production
的production
(或合并production
上的local/production
) - 要推动你的改变的那一刻,
merge
或cherry-pick
您提交到production
,推动与变化git push origin production:production
。