Ask Learn
Preview
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
前回の記事ではブランチについて紹介しました。今回はブランチの変更を取り入れる、マージについて見ていきます。
マージ : Git
ブランチを作る理由は、機能追加や修正など色々ありますが、変更はいずれ反映する必要があり、Git では merge コマンドを使います。
1. ‘git branch’ を実行。master と dev ブランチがあり、現在 dev ブランチにチェックアウト中。
2. ‘git log --oneline --graph’ を実行。master より新しいコミットがあることを確認。
3. マージをする際、マージを受け入れる側のブランチで作業を行うため、master ブランチに移動。その後 ‘git merge dev’ を実行。結果として “fast-forwad” と出ていることを確認。
4. ‘git log --oneline --graph’ を実行。master が dev と同じコミットをポイントしている。つまり今回のマージで新しいコミットは作成されておらず、ref\heads\master ファイルがさしているコミットの情報が変わっただけ。この場合 dev ブランチがどこから作成されたかなどの情報が失われている。
5. マージをやり直すため、‘git reset --hard c79adb2’ を実行。’git log --oneline --graph --all’ を実行。all オプションを付けることですべてのブランチの情報を取得可能。
6. ‘git merge --no-ff dev’ を実行。--no-ff オプションを付けることで fast-forward を阻止。結果として “recursive strategy” と表示されている。
7. ‘git log --oneline --graph’ を実行。先ほど異なり、新しいコミットが作成されている。また dev ブランチがどのタイミングで作成されたかも確認が可能。ちなみに (¥)マークは左から右上に向けた矢印となる ASCII アート。
8. Visual Studio でも試せるように ‘git reset --hard c79adb2’ を再度実行。
マージ : VS
1. 現在の確認を実施。dev ブランチに切り替えてから、チームエクスプローラー | 変更 | アクション | 履歴の表示より現在の状態を確認。
2. チームエクスプローラー | ブランチメニューに移動し、master へチェックアウト。その後マージリンクをクリック。
3. ”マージするブランチ” で dev を選択し、マージをクリック。”マージ後に変更内容をコミットする” チェックボックスは入れておく。
4. マージ完了後履歴を更新。dev と master が同じコミットをポイントしているので、fast-forward マージとなっている。
5. c79adb2b を右クリックしてハードリセット。
6. 再度ブランチ画面からマージを実施。今回は ”マージ後に変更内容をコミット” のチェックを外して実行。
7. すると以下のメッセージが表示される。メッセージには変更をコミットするよう指示があるが ”中止” のリンクしかない。
8. チームエクスプローラーのホームより変更メニューへ移動。変更画面でステージ済みのアイテムとして dev ブランチの変更があることを確認。コメントを入れてコミット。
9. master ブランチの履歴を表示。新しいコミットが作成され、dev ブランチの履歴も保持されている。
”マージ後に変更内容をコミット” の既定値
fast-forward の無効を既定にしたい場合は、Visual Studio 2017 から設定を変更できます。
1. チームエクスプローラーより設定に移動。
2. ”グローバル設定” を選択。
3. “既定でマージ後に変更をコミットする” のチェックボックスを変更して、”更新” をクリック。
まとめ
個人的には Visual Studio 2017 のマージ機能は Git と言葉が違うことや、fast-forward ではないマージの場合に画面の移動を自分でする必要がある点など、結構混乱していたので、今回の記事で少しでも明確になると幸いです。次回はリベースについて見ていきます。次の記事へ
中村 憲一郎
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign in