2023/10/15AWS CodeCommitで通知ルール・トリガーを作成する
2023/09/15
CodeCommitでGitブランチ作成・プルリクエスト・マージ(コンフリクト解決も)までの話
この記事ではCodeCommitでGitブランチの作成、プルリクエスト、ブランチのマージ、コンフリクトの解決方法を解説していきます。普段はGithub等の別のバージョン管理サービスを使用しているけど、AWS上でGit管理したいという方、AWS認定試験を受けようとしている方必見です!
CodeCommitを使用した経験がないという方やCodeCommit上にまだリポジトリを作成していないという方はこちらの記事もご覧ください!
CodeCommitでブランチを作成する
まず前提条件として、CodeCommitでリポジトリを作成し、作成したリポジトリをクローンするところまで実施してください。方法はこちらの記事で解説しています!
クローンしたディレクトリ上にいき、git checkoutコマンドを実行してください。
今回は例として「feature」ブランチを作成していきます。
git checkout -b feature
無事チェックアウトされました。
ステータスを確認します。
git status
featureブランチに切り替わっていますね。
新規作成ブランチでCodeCommitにプッシュする
featureブランチでソースコードに変更を加えて、CodeCommitリポジトリにプッシュしていきます。
まずは普通にgit pushコマンドを実行します。
git push
上流ブランチがないと怒られてしまいました。まだCodeCommit上のリポジトリにローカルで作ったブランチがなかったんですね。
エラー文の中に記載されていたgit pushコマンドを実行します。
git push --set-upstream origin feature
いけた!!!
CodeCommitのコンソール画面を確認してみると、新しく作成したfeatureブランチを確認することができました。
ブランチ一覧画面にも新たに作成したfeatureブランチがありますね!
CodeCommitでプルリクエストを出す
featureブランチをmasterにマージするべくプルリクエストを出していきます。
サイドメニューから「プルリクエスト」を選択して画面遷移した後、「プルリクエストの作成」ボタンをクリックして下さい。
マージ先ブランチ(今回はmasterブランチ)とマージしたいブランチ(今回はfeatureブランチ)を選択し、「比較」ボタンをクリックします。比較ボタンをクリックすると正常にマージできるか、コンフリクトが起こっていないかをチェックしてくれます。
特に競合もなかったので、プルリクエストを作成していきます。タイトルは必須入力項目なので、プルリクエストのタイトルを入力していきます。説明は任意なので、今回は入力しません。
プルリクエストタイトルの入力が完了したら「プルリクエストの作成」ボタンをクリックします。
プルリクエストの作成が成功しました!!
「変更」タブをクリックするとソースコードの変更箇所も確認することができますね。
プルリクエスト一覧画面にも作成したプルリクエストが反映されています。
プルリクエスト時に競合が起きた場合
プルリクエスト時に競合(コンフリクト)が起きた場合について解説していきます。
プルリクエストを作成する時にブランチ同士を比較し、競合が発生していると、「競合の解決」ボタンが出現します。このままではマージができないので、競合の解決ボタンをクリックしてください。
ソースコードの中で競合(コンフリクト)が発生している箇所を確認します。
競合(コンフリクト)箇所を解決しました。この状態で「プルリクエストの更新」ボタンをクリックします。
競合(コンフリクト)が解決されてマージできそうですね!
プルリクエストのマージ
プルリクエストの作成まで実施したので、ブランチをマージしていきます。
「マージ」ボタンをクリックして下さい。
何種類かのマージ戦略が表示されます。今回はとりあえずmasterブランチにマージできればいいので、「早送りマージ」を選択します。選択後、「プルリクエストのマージ」ボタンをクリックしましょう。また、マージ後にソースブランチを削除できる機能もあります。featureブランチはマージ後必要ないので、削除するにチェックを入れます。
不要なブランチが大量にできて後から不要ブランチ削除に時間を費やすのも面倒なので、チェックボックスのチェックで簡単に削除できるのは便利ですね!
成功しました!!
ブランチもしっかり削除されていますね!
まとめ
いかがでしたでしょうか?
ブランチ作成・プルリクエスト作成・プルリクエストのマージまでをみてきたのですが、かなり手軽できるなという印象です。これならGithubやGitLabなど他のGitバージョン管理サービスから移行してきた人もすぐに馴染めるのではないでしょうか。