git |「git pull –rebase」と「git rebase」の違いと使い方

うさぎ
うさぎ

gitってよくわからんけど、特にrebaseがわからん

うさぎ
うさぎ

git pull rebase と git rebase なんか2種類あるしね

git pull –rebase とは

git pull –rebaseは、リモートリポジトリから最新のコミットを取得するためのコマンドです。

git pull --rebaseは、git fetchgit rebaseを組み合わせたものです。

git pull --rebaseは、リモートリポジトリから最新の変更を取得して、現在のブランチの変更とリベースすることができます。

リベースとは、履歴を整理するために、コミットの親子関係を変更することです。

具体的には、現在のブランチのコミットを最新のコミットに移動させ、その後に現在のブランチの変更を適用することで、履歴を綺麗に整理することができます。

また、共同作業している場合、他の人の変更をすばやく反映することができます。

つまり、リモートリポジトリのコミット履歴を自分の変更と一緒にまとめて、履歴を整理することができます。

git pull –rebaseの例

A — B — C (master)
\
D — E (feature)

featureブランチで作業中に、masterブランチに変更が加わった状況です。

git pull --rebase origin master

を実行!

A — B — C (master)
\
D’ — E’ (feature)

git pull --rebaseコマンドで、featureブランチの変更をmasterブランチにリベースし、新しいコミットD'E'を作成しました。

featureブランチがmasterブランチの変更を反映した状態に更新されました。

git rebase とは

git rebaseは、現在のブランチのコミットを変更することができます。

例えば、別のブランチからのコミットを現在のブランチに追加したり、コミットの順序を変更することができます。

しかし、他の人が既にそのブランチから変更を取得している場合、履歴が書き換わるため、共同作業に悪影響を与える可能性があります。git rebaseは、コミットの再ベースに使用されます。

git rebaseの例

A — B — C (master)
\
D — E (feature)

featureブランチ(下の段)で作業を続けている間に、masterブランチ(上の段)に新しい変更(C)が加わりました。

git rebase

実行!

A — B — C (master)
\
D’ — E’ (feature)

git rebaseコマンドで、featureブランチのコミット履歴をmasterブランチの最新状態にリベースしました。

DEのコミット履歴が書き換わり、D'E'が新たに作成されました。

履歴が書き換わるため、共同作業中の場合、注意が必要です。

違い

「git pull –rebase」と「git rebase」の違いは、主に以下の点です。

  • 「git pull –rebase」は、リモートリポジトリの変更を取り込み、自分の変更と一緒に一つのコミットにまとめることができます。一方、「git rebase」は、自分のブランチの変更を整理して、一つのコミットにまとめることができます。
  • 「git pull –rebase」は、リモートリポジトリと自分のブランチの差分を解決する必要があります。これにより、衝突が発生する可能性があります。一方、「git rebase」は、自分のブランチ内のコミット履歴を整理するため、衝突が発生することはありません。
  • 「git pull –rebase」は、リモートリポジトリの変更を自分の変更と統合するため、チームメンバーとの共同作業に適しています。一方、「git rebase」は、自分のブランチ内のコミット履

まとめ

「git pull –rebase」と「git rebase」は、両方ともコミット履歴を整理するために使用されますが、目的や使用方法が異なります。

「git pull –rebase」は、チームメンバーとの共同作業での変更の統合や、リモートリポジトリの変更を自分の変更と一緒にまとめるために使用され、「git rebase」は、自分の個人的な作業でのコミット履歴の整理に使用されます。

リモートにあげたあとのブランチではgit rebaseはつかわない

適切なコマンドを使用することで、コミット履歴を整理し、開発の効率を上げることができます。