Git:管理分支机构

时间:2012-01-11 19:09:56

标签: git merge workflow branch

我想用头来“同步”一个远程分支,这样当我最终合并它时,它不会让人头痛。因此,我想尝试将头部更改拉入我的分支,看看它有多么不同。

如何在Git中完成以下工作流程?

  1. 结帐远程分支。
  2. 一旦我检查出来,将变化从头部拉进去。
  3. 编辑分支
  4. 将分支(现在与HEAD非常相似)推回到同一分支的远程版本(不影响头部)。
  5. 任何关于更好的工作流程的提示都会非常有用。

1 个答案:

答案 0 :(得分:4)

这都是非常基本的东西:

# make sure your notion of the remote is up to date
git fetch origin
# create and check out a branch, at the same place as the remote master branch
git checkout -b origin-master origin/master
# merge your local master
git merge master
# test, edit away, hack hack hack
git add ...
git commit ...
# push back to origin
git push origin origin-master:master

术语说明:

  • 拉取是抓取和合并的组合。当你在当地的分支机构运营时,没有必要去取,所以你要合并,而不是拉动。

  • HEAD并不代表您认为的含义。 (也许你是一个cvs / svn人。)HEAD只是当前检出的提交(通常通过分支名称引用)。所以你没有合并HEAD,你正在合并那个分支。我在这里称它为主人。

至于你关于更好的工作流程做同样事情的问题......好吧,这很难回答。你的目标有点含糊不清。你说“慢慢”同步并引用“最终合并它”,但是你概述的步骤一次完成所有这些,所以......好吧,它们都被合并了。以后什么也没做。如果你想以增量方式进行,你可以简单地重复我给出的步骤,在历史记录中选择中间提交以便每次合并。还有一点不清楚你想要合并的方向。也许你真的想从你的分支开始,并将远程资料合并到其中?

 git checkout -b master-merging master
 git fetch origin
 git merge origin/master
 # test, hack, commit, push...
 git push origin master-merging:master

或者使用增量合并:

 git checkout -b master-merging master
 git fetch origin
 git merge origin/master~20    # 20 commits before origin/master
 # test, hack, commit
 git merge origin/master~10    # 10 commits before origin/master
 # test, hack, commit
 git merge origin/master
 # test, hack, commit, push...