プロジェクトの作業を開始し、Originマスターにプッシュした不要なコミットをいくつか行いました。さて、プルリクエストを行おうとすると、Githubは以前のコミットをすべてコミットしようとします。
私の質問は、不要なコミットを削除し、コミットしたい変更をコミットして、マスターと最新になるようにする方法ですか?
Originは、プルリクエストもしたいプロジェクトのあなた自身のフォークだと思いますか?
(ヘッドをリセットして)履歴を変更するため、-forceフラグを使用してプッシュする必要があります。 git log
を使用して、最後の正常なコミットのハッシュを見つけます。
今すぐ実行
git reset SHA
これにより、そのshaに頭が変わり、最後の正常なコミット以降のファイルの変更が保持され、インデックスもリセットされます。
これで、コードを変更して、必要なコミットを実行できます。ただし、リポジトリの履歴を変更したため、git Push --force
を実行する必要があります。これは、あなたのリポジトリをフォークした誰もあなたから変更をプルすることができなくなることを意味します。ただし、アップストリームに対してプルリクエストを行うことはできます。
Git guiを使用している場合は、git guiに移動して、ブランチの履歴を視覚化します。 (次のステップを実行する前に、プッシュするローカル変更のバックアップを取ります)ブランチがマスターにリセットするポイントまで右クリックし、リセットをクリックします。リセット後、コマンドラインでgit Push -fと入力します。ブランチで必要な変更を行い、n Pushを再度コミットします。ここでプルリクエストを作成すると、ブランチのリセット後に新しいコミットのみが取得されます。