Git的合并和推(Git merge and push)

2019-07-04 05:06发布

我开始使用Git,所以我觉得这个问题可能是一天的newbiest问题,因为这个任务是如此的简单,但它造成严重的头痛..

我有2个地方分支:

  • 本地/生产

2个遥控器:

  • 生产

我需要通过本地更改生产。 所以,我的工作流程是:

git checkout local/production
git merge master
git commit
git push

git的合并:似乎做工精细,它检测到的所有差异。

git的承诺:

在当地的分公司/生产

你的分支是提前实现“产地/生产”的2个提交。

没有提交(工作目录干净)

git推:

一切行动最新

所以,这一切,我不能把我的更改远程仓库。

Answer 1:

根本原因:要剪切的解释总之,在我看来,你的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适合你的地方发展。 在这种情况下,合理的工作流程是这样的:

  1. git pull origin production:production拉更改您的production
  2. 如果在新提交production ,这是local/production背后则要么衍合local/productionproduction (或合并production上的local/production
  3. 要推动你的改变的那一刻, mergecherry-pick您提交到production ,推动与变化git push origin production:production


文章来源: Git merge and push