🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

解決済

1回答

3775閲覧

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

yoshi751

総合スコア19

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

0クリップ

投稿2019/11/29 02:21

編集2019/12/01 07:55

##前提・実現したいこと
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されるのでしょうか?

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは。

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

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

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

text

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

text

1# Fast-forward merge 2 3 * (master, sample) サンプル3 4 * サンプル2 5 * サンプル1 6 / 7* (origin/master) マージベース

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

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

投稿2019/11/29 04:03

tamoto

総合スコア4237

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshi751

2019/11/29 05:06

tamotoさん、丁寧な回答ありがとうございます! まだ、少し疑問が残るので質問させてください。 初歩的なことですみません。 Merge pull request のメッセージを持つマージコミットは、Git 自体にはなく、本来作成されないのですね! 自分の場合、本来web上のボタンで行うのが適切ですが、 masterブランチに移動して、git merge ブランチ名 git push origin masterした場合に git logした際、本来logに表示される Merge: 6953be9 f41cce7のような表記がされていないのですが、 この表記はなくてもちゃんとmergeされて反映されているということでしょうか? そして、先輩が言っている「レビューでされた指摘が反映されいません、修正後、Pull Requestをし直してください」という指摘は、そもそもちゃんと反映されていて、間違っているということでしょうか?
tamoto

2019/11/29 05:18

もう少し詳しい情報がないと正しい回答になっていないかもしれませんが、、 > この表記はなくてもちゃんとmergeされて反映されているということでしょうか? 変なことをしていなければ反映されています。マージしたブランチで入れていた変更が、マージ後のブランチにも反映されているか目視で確認してみて下さい。 > 「レビューでされた指摘が反映されいません、修正後、Pull Requestをし直してください」 この指摘が、一字一句そのままだったとしたら、「(書いたコードを) レビューしてもらった結果、追加の修正を依頼されたが、その修正をしないままマージしてしまった」と読み取れるのですが、そういうことではないですか?
yoshi751

2019/12/01 07:56 編集

ご返信ありがとうございます! 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 この場合、自分には問題なく、先輩の反映されていないというのは勘違いなのでしょうか?
tamoto

2019/11/29 06:17

Git のブランチ状態的には特に問題は見当たりません。 状況が分からないので答えようがないのですが、可能性の一つとしては、前回レビュー時に「次からは直してね」と指摘されていたことをしないまま次の Pull request を起こしてしまったなどということはないでしょうか? 質問はひとまず置いておいて、先にレビュアーに直接その真意を確認したほうが良いと思います。
yoshi751

2019/11/29 11:22

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問