質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.20%

Gitでmergeコマンドをしてマージさせる方法

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,328

yoshi751

score 19

前提・実現したいこと

gitで現在出しているプルリクエスト より一個前にmergeコマンドを打ったブランチがlogを見るとmergeされていなかったのでmergeさせて、現在プルリクエスト を出しているブランチから新しくブランチを切って、そのブランチとmasterブランチの差分をとり、新しくプルリクエスト を作成する方法

発生している問題

現在、エンジニアとしてインターンを行っている会社で、先輩の方に、自分の書いたコードをPull Requestしてレビューしてもらっています。
前回のレビューでokをもらったので、Pull Requestのブランチを、いつもはgithub上のマージボタンを押して行っていたのですが、コマンドでもマージする練習をしようと思いコマンドを使用して、masterブランチにgit mergeしました。

そして今日、新しく作ったブランチでPull Requestを作成して、レビューしてもらったところ
先輩から「レビューでされた指摘が反映されいません、修正後、Pull Requestをし直してください」と言われました。

gitのコミットログを見て見ると、
普通の場合 マージした後
Merge pull request #8 from アカウント名/ブランチ名
と表示されますが、 今回は表示されていませんでした。

リモートとローカルでは、Pull Request用のブランチで行ったコミットは反映されていますが、
Merge pull request #8 from アカウント名/ブランチ名というコミットログが表記されません。

これを反映させるにはどうすればいいのでしょうか?
また、新しくPull Requestを作り直す際に、
masterブランチと差分を取るために、現在Pull Requestをしているブランチからブランチを切って、その内容を引き継ぎ、masterブランチと差分をとってPull Requestをし直すという認識であっているのでしょうか?

問題の状況を別のリポジトリで再現

$ git checkout -b sample
Switched to a new branch 'sample'
$ echo "sample">>sample.txt
$ git add .
$ git commit -m "sample.txt"
[sample 76883f7] sample.txt
1 file changed, 1 insertion(+)
create mode 100644 sample.txt
$ git push origin sample
$ git switch master
Switched to branch 'master'
$ git merge sample
Updating 814cd8a..76883f7
Fast-forward
sample.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 sample.txt
$ git log
commit 76883f716a3ff205d7a4775fb14770a30a781768 (HEAD -> master, origin/sample, sample)
Date: Fri Nov 29 00:32:19 2019 +0900

sample.txt

自分が行った流れを再現したところ、masterに移動してgit merge ブランチ名をして
git push origin masterしたという流れでlogを
確認するとmergeされていませんでした。
この場合、この後どのようにすればmergeされるのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

こんにちは。

まず一つ目に、Merge pull request ... のメッセージを持つマージコミットは、Git 自体には本来存在しない「Pull request」という GitHub 独自のシステムによるものなので、Web 上からボタンでマージしないと作成されません。

次に、マージコミット自体が作成されない条件があります。
Git のマージには2種類あり、マージコミットを作成する通常のマージと、マージコミットを作成しない Fast-forward マージというものがあります。
マージしたいブランチが自身の「先端から伸びている」場合には分岐と合流が存在しなくなるため、マージコミットを作成する必要が無くなり、自身をマージ対象のブランチまで「追いつかせる」ことでマージ作業を完了できます。これを Fast-forward マージと呼びます。

以下の2つの例を見て下さい。
どちらであっても (master) の「中身は全く同じ」であることが分かると思います。
そのため、Git は、可能な場合は Fast-forward マージを選択するようになっています。

# Non Fast-forward merge

* (master) マージコミット
|\
| * (sample) サンプル3 
| * サンプル2
| * サンプル1
|/
* (origin/master) マージベース
# Fast-forward merge

  * (master, sample) サンプル3
  * サンプル2
  * サンプル1
 /
* (origin/master) マージベース

コマンドでマージする場合、git merge に --no-ff オプションを付けることで、Fast-forward ができる場合でも Non Fast-forward マージを行うように強制することができます。

ところで、Pull request を使った master へのマージを行う運用の場合は、master の直接操作を禁止している場合が多いため、レビューからのマージを行う場合は Web のボタンを使うのが一般的です。
ローカルでのマージは、通常 Pull request にはしない自身や他人のブランチ同士をマージする場合に使うことが多いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/11/29 14:54 編集

    ご返信ありがとうございます!

    Jsブランチというブランチをmasterブランチにマージさせました。
    Jsブランチで行った Fix Indentというコミットがしっかりmasterブランチにこのように反映されていました。

    $ git log
    commit 45b79beb5eeb78cf86b6fb20c8db97e3f0c47f2 (HEAD -> master, origin/master, origin/js, js)
    Date: Tue Nov 26 12:51:02 2019 +0900

    Fix Indent

    このjsブランチを先輩にapproveされたので、masterにマージした後にjs2ブランチという新しいブランチを作成して、プルリクエスト を作成しました。
    そしてコミットして、先輩にプルリクエスト を送ったところ
    修正は依頼されないで、いきなり「レビューでされた指摘が反映されいません、修正後、Pull Requestをし直してください」という指摘が返ってきました。


    Js2ブランチのgit logはこのようになっております。

    $ git log
    commit 74eea603607329497f7a8dcece9928772f9aef72 (HEAD -> js2, origin/js2)
    Date: Thu Nov 28 17:07:00 2019 +0900

    Implement Ajax with pure js and jQuery

    commit 6966ec884366361c3a4231fa348ef3e2af002901
    Date: Thu Nov 28 16:49:24 2019 +0900

    Apply repeated processing to html

    commit 45b79beb5eeb78cf86b6fb20c8db97e3f0c47f2 (origin/master, origin/js, master, js)
    Date: Tue Nov 26 12:51:02 2019 +0900

    Fix Indent


    この場合、自分には問題なく、先輩の反映されていないというのは勘違いなのでしょうか?

    キャンセル

  • 2019/11/29 15:17

    Git のブランチ状態的には特に問題は見当たりません。

    状況が分からないので答えようがないのですが、可能性の一つとしては、前回レビュー時に「次からは直してね」と指摘されていたことをしないまま次の Pull request を起こしてしまったなどということはないでしょうか?

    質問はひとまず置いておいて、先にレビュアーに直接その真意を確認したほうが良いと思います。

    キャンセル

  • 2019/11/29 20:22

    ご返信ありがとうございます!
    レビュアーに直接、「ブランチをマージして、ちゃんとmasterブランチに変更が取り込まれているので、レビューでされた指摘は反映されているはずだと思うのですが?」と聞いて見たいと思います!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.20%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る