logo

Gitリベース

リベースは、別のベース トリップの上にコミットを再適用するプロセスです。これは、個別のブランチからの一連のコミットを最終コミットに適用するために使用されます。 git merge コマンドの代替です。これはマージの直線的なプロセスです。

Git では、リベースという用語は、一連のコミットを新しいベース コミットに移動または結合するプロセスを指します。リベースは非常に有益であり、機能分岐ワークフローの環境におけるプロセスを視覚化しました。

ブランチをマージする前にブランチをリベースすることをお勧めします。

Gitリベース

一般に、これは git merge コマンドの代替です。マージは常にレコードを前方に変更します。比較的、rebase は git の強力な履歴書き換えツールです。異なるコミットを 1 つずつマージします。

master ブランチで 3 つのコミットを作成し、test という名前の別のブランチで 3 つのコミットを作成したとします。これをマージすると、すべてのコミットが一度にマージされます。ただし、リベースすると、線形にマージされます。以下の画像を考えてみましょう。

Gitリベース

上の図は、git rebase がどのように機能するかを示しています。 master ブランチの 3 つのコミットは、test ブランチのコミットと直線的にマージされます。

マージはブランチを統合する最も簡単な方法です。 2 つの最新のブランチ コミット間で 3 方向のマージを実行します。

リベースの方法

フィーチャー ブランチ (テスト ブランチ) でいくつかのコミットを行い、マスター ブランチでいくつかのコミットを行ったとき。これらのブランチはいずれもリベースできます。 git log コマンドを使用して、変更 (コミット履歴) を追跡します。リベースしたいブランチにチェックアウトします。次に、次のように rebase コマンドを実行します。

構文:

 $git rebase 

ブランチ内に競合がある場合は、それらを解決し、以下のコマンドを実行して変更を続行します。

 $ git status 

ステータスの確認に使用しますので、

 $git rebase --continue 

上記のコマンドは、加えた変更を続行するために使用されます。変更をスキップしたい場合は、次のようにスキップできます。

文字列を配列javaに入れる
 $ git rebase --skip 

リベースが完了したとき。リポジトリをオリジンにプッシュします。 git merge コマンドを理解するために、以下の例を考えてみましょう。

次のブランチがあるとします。 テスト2 あなたが取り組んでいるもの。あなたは現在 test2 ブランチにいて、プロジェクトのファイルにいくつかの変更を加えています。 新しいファイル1.txt

このファイルをリポジトリに追加します。

 $ git add newfile1.txt 

次に、変更をコミットします。以下のコマンドを使用します。

 $ git commit -m 'new commit for test2 branch.' 

出力は次のようになります。

 [test2 a835504] new commitfor test2 branch 1 file changed, 1 insertion(+) 

ブランチをマスターに切り替えます。

マーキーHTML
 $ git checkout master 

出力:

 Switched to branch 'master.' Your branch is up to date with 'origin/master.' 

これで、master ブランチに到達しました。ファイルに変更を追加しました、と言う 新しいファイル.txt 。以下のコマンドは、リポジトリにファイルを追加するために使用されます。

 $ git add newfile.txt 

次に、変更のためにファイルをコミットします。

 $ git commit -m ' new commit made on the master branch.' 

出力:

 [master 7fe5e7a] new commit made on master 1 file changed, 1 insertion(+) HiMaNshU@HiMaNshU-PC MINGW64 ~/Desktop/GitExample2 (master) 

ログ履歴を確認するには、以下のコマンドを実行します。

 $ git log --oneline 

出力:

Gitリベース

ログ履歴からわかるように、master ブランチに新しいコミットがあります。 test2 ブランチをリベースしたい場合はどうすればよいですか?以下のリベース ブランチ シナリオを参照してください。

ブランチをリベースする

個別のブランチからのコミットが多数あり、それを 1 つにマージしたい場合。そのためには、マージするかリベースするかの 2 つの選択肢があります。ブランチをリベースすることをお勧めします。

上記の例では、master ブランチにコミットしており、それを test2 ブランチにリベースしたいと考えています。以下のコマンドを見てみましょう。

 $ git checkout test2 

このコマンドは、マスターから test2 ブランチに切り替えます。

出力:

 Switched to branch 'test2.' 

これで、test2 ブランチに移動しました。したがって、test2 ブランチを master ブランチでリベースできます。以下のコマンドを参照してください。

 $ git rebase master 

このコマンドは test2 ブランチをリベースし、次のように表示されます。 適用中: test2 ブランチ上の新しいコミット 。以下の出力を考えてみましょう。

出力:

Gitリベース

Git インタラクティブ リベース

Git は Interactive Rebase を使用して容易にします。などのさまざまな操作を可能にする強力なツールです。 編集、書き直し、並べ替え、 既存のコミットについても詳しく説明します。 Interactive Rebase は、現在チェックアウトされているブランチでのみ操作できます。したがって、ローカルの HEAD ブランチをサイドバーに設定します。

Git インタラクティブ リベースは、rebase コマンドで呼び出すことができます。次のように入力するだけです。 -私 rebaseコマンドと一緒に。ここ ' 'はインタラクティブを表します。このコマンドの構文は次のとおりです。

構文:

 $ git rebase -i 

利用可能なすべての対話型オプションがリストされます。

Arduinoのボーレート

出力:

Gitリベース

指定された出力の後、利用可能なオプションを含むエディターが開きます。以下の出力を考えてみましょう。

出力:

Gitリベース

git interactive rebase コマンドを実行すると、デフォルトのテキスト エディタが開き、上記の出力が表示されます。

これに含まれるオプションは以下のとおりです。

  • 選ぶ
  • 言い直し
  • 編集
  • 押しつぶす
  • 修理する
  • 幹部
  • 壊す
  • 落とす
  • ラベル
  • リセット
  • マージ

上記のオプションは、git-rebase を使用して特定のタスクを実行します。これらの各オプションを簡単に理解しましょう。

選択 (-p):

ここで Pick はコミットが含まれていることを示します。コミットの順序は、リベース中の pick コマンドの順序によって異なります。コミットを追加したくない場合は、行全体を削除する必要があります。

言い換え (-r):

このリワードは pick コマンドとよく似ています。 reword オプションはリベース プロセスを一時停止し、コミット メッセージを変更する機会を提供します。コミットによる変更には影響しません。

編集:

編集オプションを使用すると、コミットを修正できます。修正とは、コミットを追加または全体的に変更できることを意味します。 rebase continue コマンドの前に追加のコミットを行うこともできます。これにより、大きなコミットを小さなコミットに分割できます。さらに、コミットで行われた誤った変更を削除することもできます。

スカッシュ (-s):

スカッシュ オプションを使用すると、2 つ以上のコミットを 1 つのコミットに結合できます。また、変更を説明するための新しいコミット メッセージを作成することもできます。

修正 (-f):

これは squash コマンドとよく似ています。マージするコミットのメッセージを破棄しました。古いコミット メッセージは両方の変更を説明するために使用されます。

実行 (-x):

exec オプションを使用すると、コミットに対して任意のシェル コマンドを実行できます。

ブレーク (-b):

ブレーク オプションは、リベースを正しい位置で停止します。後で「」でリベースを続行します git rebase --Continue ' 指示。

ドロップ (-d):

コミットを削除するには、drop オプションを使用します。

ラベル (-l):

label オプションは、現在のヘッド位置に名前を付けるために使用されます。

リセット (-t):

リセット オプションは、ヘッドをラベルにリセットするために使用されます。

ジャワとスイング

GitMerge とリベース

git ユーザーにとって最も一般的な不可解な質問は、いつマージ コマンドを使用し、いつリベースを使用するかということです。どちらのコマンドも似ており、どちらもリポジトリの異なるブランチによって作成されたコミットをマージするために使用されます。

リベース プロセスにより一貫性のないリポジトリが作成されるため、共有ブランチではリベースはお勧めできません。個人の場合は、マージよりもリベースの方が便利です。完全な履歴を表示したい場合は、マージを使用する必要があります。 Merge はコミットの履歴全体を追跡し、rebase は新しいコミットを書き換えます。

git merge の代替として言われる Git rebase コマンド。ただし、これらにはいくつかの重要な違いがあります。

Git マージ Gitリベース
マージすると、マージ時に最終コミットが作成されます。 Git rebase はリベース時にコミットを作成しません。
すべてのコミットを 1 つのコミットとしてマージします。 これにより、コミットの線形トラックが作成されます。
グラフィカルな履歴が作成されるため、理解するのが少し複雑になる可能性があります。 簡単に理解できる直線的な履歴が作成されます。
2 つのブランチを安全にマージできます。 Git の「rebase」は、過酷な操作に対処します。
マージはパブリック ブランチとプライベート ブランチの両方で実行できます。 パブリック ブランチでリベースを使用するのは間違った選択です。
マージにより、feature ブランチのコンテンツが master ブランチと統合されます。したがって、master ブランチは変更されますが、feature ブランチの履歴は一貫性を保ちます。 master ブランチのリベースは、feature ブランチに影響を与える可能性があります。
マージすると履歴が保存されます。 リベースすると履歴が書き換えられます。
Git マージでは、すべての競合が一度に表示されます。 Git rebase では競合が 1 つずつ発生します。