0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

commitを別のbranchに移したい時→`git rebase --onto`

Posted at

はじめに

Git で作業していると、作成したコミットを間違ったブランチで作成してしまったり、特定のコミット群を別のブランチに移動させたい、といった状況に遭遇したことはありませんか?そんな時に役に立つのが, git rebase --onto です.

この記事では、git rebase --onto がどのようなコマンドで、どのようにコミットを別のブランチに移動させるのか、具体的な使用例を交えて詳しく解説します。

git rebase --onto とは?

git rebase は、一連のコミットを別のブランチに「再適用」するためのコマンドです。そして、--onto オプションは、この再適用の「移動先」をより詳細に指定できる機能を提供します。

基本的な構文は以下のようになります。

git rebase --onto <新しいベース> <移動したいコミットの開始地点> <移動したいブランチ>

それぞれの引数は次の意味を持ちます。

  • <新しいベース>: コミットを再適用する新しい基点となるコミットまたはブランチ。
  • <移動したいコミットの開始地点>: 再適用したいコミット群の「直前のコミット」。このコミット自体は移動されません。
  • <移動したいブランチ>: 移動したいコミットが含まれるブランチ。通常は現在のブランチを指定します。

このコマンドは、<移動したいコミットの開始地点> から <移動したいブランチ> までのコミットを切り取り、それらを <新しいベース> の上に貼り付ける、というイメージです。

注意点とヒント

  • コンフリクト: コミット先を移動するためコンフリクトが起きる可能性があります。
  • 強制プッシュ: 既に共有リポジトリにプッシュ済みのコミットに対して rebase を行うと、履歴が書き換わるため、他の開発者との間で問題が発生する可能性があります。このような場合は、git push --force-with-lease または git push --force が必要になりますが、チームメンバーと十分な連携をとってから実行してください。
  • コミットハッシュの変更: rebase はコミットを「再作成」するため、移動したコミットのハッシュ値は変更されます。
  • git reflog の活用: rebase を実行して意図しない状態になってしまった場合でも、git reflog コマンドを使用すると、過去のHEADの移動履歴を確認し、元の状態に戻すことができます。
0
2
1

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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?