39

现在,我看到很多来自 Linus Torvalds 和/或 Gitster 的提交,看起来像这样:

Merge branch 'maint' of git://github.com/git-l10n/git-po into maint …
* 'maint' of git://github.com/git-l10n/git-po:
  l10n: de.po: fix a few minor typos

或者:

Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upst… …
…ream-linus

Pull MIPS update from Ralf Baechle:
...
* 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (22 commits)
  MIPS: SNI: Switch RM400 serial to SCCNXP driver
...

我不知道如何做到这一点,尽管我知道用于合并分叉(或“拉取请求”)的git remotegit checkoutgit merge,但它不会生成这样的消息,为什么?以及如何做到这一点(请提供示例)?

PS:我是 Linus Torvalds 提交等的粉丝,比如他的合并描述的详细程度;P

PS:这就是我过去合并东西的方式:

git remote add anotherremoot
git checkout -b anotherbranch
git pull remoteshortcut
...do tests...
git checkout master
git merge anotherbranch
git push

我从上面学到的例子:http: //viget.com/extend/i-have-a-pull-request-on-github-now-what

4

1 回答 1

66

只需使用git pull将远程分支拉入master

git remote add something git://host.example.com/path/to/repo.git
git checkout master
git pull something master

或者在不添加遥控器的情况下执行此操作:

git pull git://host.example.com/path/to/repo.git

git pull获取远程分支,并将其合并到本地分支。如果可能,它会进行快进合并,这仅意味着它将当前 master 更新为最新的提交,而不生成合并提交。但是如果双方都有变化,它会进行合并,就像你看到的 Linus 和 Junio 所做的那样,包括远程 URL。

如果您想保证获得合并提交,即使它可以快进,请执行git pull -no-ff. 如果您想确保pull永远不会创建合并提交(如果双方都有更改则失败),请执行git pull --ff-only.

如果您想包含更详细的消息,例如 Linus 提供的完整日志,请执行git pull --log. 如果要编辑消息,而不是仅使用自动创建的消息,请使用git pull --edit. 有关更多选项,请参阅文档。git pull

于 2012-10-16T19:12:42.467 回答