0
1

More than 1 year has passed since last update.

push済みのブランチに差分を取り込むGit操作の検証

Posted at

以下のサンプルアプリを使って確認を行っていきます。

sample-app1.jpg

想定シナリオ

派生元ブランチに取り込まれた機能をリモートにプッシュ済みのブランチに取り込む

シナリオ

画面にhelloを追加する作業を担当することになり、コンポーネントを更新しています。
すると追加依頼があり、別のブランチから取り込まれた画像も今回の作業で使うことになりました。
この時のシナリオをmergeとrebaseでそれぞれ実践してみます。

merge案

まずは完成形から。

sample-app3.jpg

image.png

別ブランチから取り込まれた画像を使うために、ローカルで派生元のブランチmainを作業中のブランチfeatuer/helloにマージしました。
その後、取り込んだ機能を使ってソースコードを更新しマジリクを作成。mainにマージしています。

マジリクの内容を確認したところ、マージコミットが含まれています。取り込んだ画像作成のコミットや変更は含まれませんでした。

Feature-hello-by-dfukui-smn-·-Pull-Request-2-·-dfukui-smn-git-concurrent-development.jpg

Feature-hello-by-dfukui-smn-·-Pull-Request-2-·-dfukui-smn-git-concurrent-development (1).jpg

画像を追加したブランチの変更はこちら。feature/helloには含まれなかった部分。

ロゴを追加-by-dfukui-smn-·-Pull-Request-1-·-dfukui-smn-git-concurrent-development.jpg

rebase案

まずは完成形から。

sample-app.jpg

スクリーンショット 2023-03-23 22.02.17.png

別ブランチから取り込まれた画像を使うために、ローカルで作業中のブランチfeatuer/hello2を派生元のブランチmainにリベースしました。
リベースによってfeatuer/hello2の変更は以下のようにmainに追加して実装した形になりました。

スクリーンショット 2023-03-23 21.49.04.png

それぞれの機能を使ってソースコードを更新しソースコードをプッシュしますが、ローカルとリモートの履歴に差異が生まれたためエラーになりました。
作業中のブランチfeatuer/hello2は自分以外は使用しないブランチのため-fで強制プッシュします。

$ git push -f 

マジリクを作成。mainにマージします。

マジリクの内容を確認したところ、マージコミットがありません。

Feature-hello2-by-dfukui-smn-·-Pull-Request-4-·-dfukui-smn-git-concurrent-development.jpg

Feature-hello2-by-dfukui-smn-·-Pull-Request-4-·-dfukui-smn-git-concurrent-development (1).jpg

まとめ

merge案よりもrebase案のほうが履歴が見やすいのが良いと思いました。
rebase案だと強制プッシュが必要になりますが自身しか操作しないブランチであれば問題ないので、今後はrebaseを使いながら履歴を見やすい状態で維持したいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1