@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Git bundle ファイルを受け取って既存のリポジトリにマージし Pull Request を作る手順

前提: 適当な空っぽのリポジトリがあるとする。

$ git init my-awesone-repo
$ git add README.md
$ git rm README.md
$ git push -u origin master

Git バンドルファイルを受け取ったので、そのコミットヒストリーをこのリポジトリのトピックブランチとして push して Pull Request を作りたい。そのためには、

  1. Git バンドルファイルを適当なディレクトリに clone し、
  2. my-awesome-repo リポジトリの remote に登録し、
  3. git pull (fetch) してからマージする
# 1. Git バンドルファイルを適当なディレクトリに clone
$ cd ~/Downloads
$ git clone QuizMaster.bundle repo

# 2. my-awesome-repo リポジトリの remote に登録
$ cd ~/my-awesome-repo
$ git remote add repo ~/Downloads/repo

# 3. git pull (fetch) してからマージ
$ git pull repo
$ git checkout -b foo-bar-baz
$ git merge --allow-unrelated-histories repo/master
$ git push -u origin/foo-bar-baz

2017/01/24 12:31 追記: Git 2.9 以降から、先祖の違うブランチをマージする際は --allow-unrelated-histories オプションの明示が必要。参考 http://stackoverflow.com/a/37938036/374851