

git merge の「squash」オプションにて、masterブランチに一括コミットしているのですが、  
このコミットにある特定のauthorのみを取り除いてコミットを行いたいのですが、  
可能でしょうか。


CC BY-SA 3.0
2015-12-10T02:50:30.860
19833
2015-12-10T10:16:55.543
7461
question
git
Gitにてある特定ユーザーのコミットを除いてmasterブランチにマージする方法について


`git rebase -i` を用いると、 rebase の際に、それぞれのコミットを

  * 単純にコミットして適用するか
  * 直前のコミットに squash するか
  * そもそも適用しないのか

を選ぶことができ、また、その適用の順番も自分で変更することができます。

特定の author のコミットがどれかは自分で見つけなければならないですがこれが一番やりたいことに近いのではないかと思っています。


CC BY-SA 3.0
2015-12-10T04:28:56.037
19837
2015-12-10T04:35:27.783
2015-12-10T04:35:27.783
754
754
19833
answer


ブランチがsome_branchだとすると

[code]

    $ git checkout master
    $ git pull
    $ git rev-list --reverse --author='^(?!Taro Tanaka).*$' --perl-regexp master..some_branch | xargs git cherry-pick
    
[/code]

してからcherry-pickのマージコンフリクトを解消して、

[code]

    $ git reset --hard origin/master
    
[/code]

といったん戻した上で、

[code]

    $ git merge --squash @@{1}
    
[/code]

みたいな感じでいけると思います。authorはフルネームで指定してね。


CC BY-SA 3.0
2015-12-10T06:51:53.453
19843
2015-12-10T10:16:55.543
2015-12-10T10:16:55.543
62
62
19833
answer