読者です 読者をやめる 読者になる 読者になる

webネタ

技術系ブログ。web系SE。1988。♂。@rhong_

git cherry-pick まとめめも

cherry-pickまとめた

サンプルとなるlogの状態

masterブランチ

commit feaa01e7be5a7e981fe0cce2e1b4c98377cadb26
Author: rh <rh@nanashi@example.com>
Date:   Wed Mar 27 11:16:50 2013 +0900

    foo

newブランチ

commit c91bb1c20d451fd6f1a45cced06447f9dfb938f4
Author: rh <rh@nanashi@example.com>
Date:   Thu May 2 11:59:03 2013 +0900

    3

commit a274ee247a02095dd8812dfd41f3d0c0077ca9f8
Author: rh <rh@nanashi@example.com>
Date:   Thu May 2 11:58:55 2013 +0900

    2

commit 278c49507c911d193a86c7c4743571c1ac751a5f
Author: rh <rh@nanashi@example.com>
Date:   Thu May 2 11:58:51 2013 +0900

    1

commit feaa01e7be5a7e981fe0cce2e1b4c98377cadb26
Author: rh <rh@nanashi@example.com>
Date:   Wed Mar 27 11:16:50 2013 +0900

    foo

実行

masterに3のコミットをもってきたい。

一番目は0。0は省略可。

git cherry-pick new~0

結果

commit 13cd24a2268f303c02f488e426e561762e9b5b27
Author: rh <rh@nanashi@example.com>
Date:   Thu May 2 11:59:03 2013 +0900

    3

commit feaa01e7be5a7e981fe0cce2e1b4c98377cadb26
Author: rh <rh@nanashi@example.com>
Date:   Wed Mar 27 11:16:50 2013 +0900

    foo

masterに3のコミットをもってきたい。(コミットID指定)

git cherry-pick c91bb1c20d451fd6f1a45cced06447f9dfb938f4

結果

commit 13cd24a2268f303c02f488e426e561762e9b5b27
Author: rh <rh@nanashi@example.com>
Date:   Thu May 2 11:59:03 2013 +0900

    3

commit feaa01e7be5a7e981fe0cce2e1b4c98377cadb26
Author: rh <rh@nanashi@example.com>
Date:   Wed Mar 27 11:16:50 2013 +0900

    foo

masterに3のコミットをもってきたいが、持ってきた事が分かるようにしたい。

git cherry-pick -x new~0

結果

commit 834213a4fa5f17f2400bede659c1209b0a1e009b
Author: rh <rh@nanashi@example.com>
Date:   Thu May 2 11:59:03 2013 +0900

    3
    (cherry picked from commit c91bb1c20d451fd6f1a45cced06447f9dfb938f4)

commit feaa01e7be5a7e981fe0cce2e1b4c98377cadb26
Author: rh <rh@nanashi@example.com>
Date:   Wed Mar 27 11:16:50 2013 +0900

    foo

masterに1と2と3のコミットをもってきたい。

git cherry-pick new~0
git cherry-pick new~1
git cherry-pick new~2

複数指定ができないよう

結果

commit 6ac9419bd402e1494bc2aff3998d2a2cba6b396e
Author: rh <rh@nanashi@example.com>
Date:   Thu May 2 11:58:51 2013 +0900

    1

commit a6766ef378c6dacd928d5d9bd3efd23ec265427f
Author: rh <rh@nanashi@example.com>
Date:   Thu May 2 11:58:55 2013 +0900

    2

commit 2f4ec81ba8d8012e82aee943b373884497470d6e
Author: rh <rh@nanashi@example.com>
Date:   Thu May 2 11:59:03 2013 +0900

    3

commit feaa01e7be5a7e981fe0cce2e1b4c98377cadb26
Author: rh <rh@nanashi@example.com>
Date:   Wed Mar 27 11:16:50 2013 +0900

    foo

コミットの内容だけ持ってきたい

git cherry-pick new~0 -n

結果

コミットログ作られず、

commit feaa01e7be5a7e981fe0cce2e1b4c98377cadb26
Author: rh <rh@nanashi@example.com>
Date:   Wed Mar 27 11:16:50 2013 +0900

    foo

インデックスに入る。

git status
# On branch master2
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   3
#

ブランチ間のコミットの差分

git cherryでブランチ間の差分が見れる。

見やすくalias書いてる人がいました。こちら

g cch master new

結果

+ 278c495 2013-05-02 rh  1
+ a274ee2 2013-05-02 rh  2
+ c91bb1c 2013-05-02 rh  3