Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ リベース操作の実行 | より高度なワークフロー
GitHubの基礎

リベース操作の実行

メニューを表示するにはスワイプしてください

変更内容の main ブランチへのリベース

変更をリベースする前に、まず main ブランチに切り替えて最新の変更を取得する必要があります。

git checkout main
git pull
main ブランチのチェックアウトと変更の取得

次に、コミットツリーを確認します。

git log --graph --oneline --all
リベース前のコミットツリー

現在、main ブランチと feature/payment ブランチの両方に、最新の共通の祖先以降のコミットがあります。これは、ファストフォワードマージが実行できないことを示しています。

これらのブランチをマージしようとすると、3-wayマージが発生します。しかし、履歴を直線的に保ちたい場合は、feature/payment ブランチを main ブランチにリベースします。これを行うには、feature/payment ブランチに切り替えて git rebase コマンドを実行します:

git checkout feature/payment
git rebase main
変更のリベース

ファストフォワードマージ

リベースが成功したので、もう一度コミットツリーを確認します:

git log --graph --oneline
リベース後のコミットツリー

予想通り、コミット履歴は現在直線的になっており、最新のコミットは feature/payment ブランチ上にあります。ここで、main ブランチに対してシンプルなファストフォワードマージを実行できます:

git checkout main
git merge feature/payment
ブランチのマージ

両方のブランチが同じコミットを指していることを、最新のコミットを確認して検証。

git log -n 1
最新のコミット

フィーチャーブランチの削除

main ブランチには支払いシステムが実装された最新のコミットが含まれているため、ローカルおよびリモートの feature/payment ブランチを安全に削除できます。以下のコマンドでリモートブランチを削除します:

git push --delete origin feature/payment

次に、ローカルブランチを削除します:

git branch -d feature/payment
ブランチの削除

最後に、すべての変更をリモートリポジトリにプッシュできます:

git push
削除のプッシュ

featureブランチがローカルとリモートの両方で削除されたことを確認するには、次のコマンドを実行します。これにより、ローカルおよびリモートのすべてのブランチが一覧表示されます(-aはallの意味です):

git branch -a
すべてのブランチの一覧表示

ご覧のとおり、feature/payment ブランチは正常に削除され、現在は mainjohn/test の2つのブランチと、それぞれのリモート対応ブランチのみが存在します。

全体として、リベースはまだ共有されていないローカルの変更に対しては有効ですが、すでにリモートリポジトリに公開され、他の協力者によってダウンロードされている変更に対しては重大な問題を引き起こす可能性があります。他の人が利用しているコミットをリベースすると、コミット履歴の書き換えによって混乱や競合が発生することがあります。

一般的なルールとして、これらの問題を防ぐために、リモートリポジトリにプッシュされた変更をリベースすることは避けてください。

question mark

feature/paymentmain にリベースした後、なぜ git merge feature/payment はファストフォワードマージを行うのですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  5

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  5
some-alt