はじめに
🧑💻 Git や LabEx の初心者ですか? Git のクイックスタート コースから始めることをおすすめします。
Git は、開発者がコードベースに対して行った変更を追跡できる強力なバージョン管理システムです。Git の主な機能の 1 つは、履歴を書き換える機能であり、以前のコミットに変更を加える必要がある場合に便利です。ただし、履歴を書き換えると、リモートリポジトリに変更をプッシュしようとするときに問題が発生する場合があります。この実験では、ローカルで履歴を書き換えた後にリモートブランチを更新する方法を学びます。
履歴を書き換えた後のリモートブランチの更新
ローカルで履歴を書き換えると、異なる SHA-1 ハッシュで新しいコミットが作成されます。これは、ローカルブランチのコミット履歴がリモートブランチのコミット履歴と異なることを意味します。変更をリモートブランチにプッシュしようとすると、Git はコミット履歴が分岐していると見なしてプッシュを拒否します。この問題を解決するには、リモートブランチの更新を強制する必要があります。
この実験を完了するには、GitHub アカウントから git-playground という Git リポジトリを使用します。これは、https://github.com/labex-labs/git-playground.git のフォークから来ています。
git-playgroundリポジトリをローカルマシンにクローンします。
git clone https://github.com/your-username/git-playground.git
- メッセージ "Added file2.txt" のコミットを、メッセージ "Update file2.txt" のコミットに更新します。
git commit --amend
- ローカルブランチからの変更をリモートリポジトリにプッシュします。
git push
- 正常にプッシュできない場合は、強制プッシュしてください。
git push -f origin master
-f フラグは、コミット履歴が分岐している場合でも、Git に変更でリモートブランチを更新させるよう強制します。
これが最終結果です。
[object Object]
まとめ
この実験では、ローカルで履歴を書き換えた後にリモートブランチを更新する方法を学びました。git push -f コマンドを使用することで、コミット履歴が分岐していても、Git に変更でリモートブランチを更新させることができます。他の開発者によって行われた変更を上書きする可能性があるため、このコマンドを慎重に使用することが重要です。