私はプロジェクトに取り組み始め、オリジンマスターにプッシュしたいくつかの不要なコミットを行いました。プルリクエストを実行しようとすると、Githubは以前のすべてのコミットをコミットしたいと考えています。
私の質問は、不要なコミットを削除し、コミットしたい変更をコミットして、マスターと最新の状態にするにはどうすればよいですか?
私はプロジェクトに取り組み始め、オリジンマスターにプッシュしたいくつかの不要なコミットを行いました。プルリクエストを実行しようとすると、Githubは以前のすべてのコミットをコミットしたいと考えています。
私の質問は、不要なコミットを削除し、コミットしたい変更をコミットして、マスターと最新の状態にするにはどうすればよいですか?
あなたのオリジンは、プルリクエストもやりたいプロジェクトのあなた自身のフォークだと思いますか?
(ヘッドをリセットして) 履歴を変更するため、 --force フラグを使用してプッシュする必要があります。を使用して、最後に有効なコミットのハッシュを見つけますgit log
。
今すぐ実行
git reset SHA
これにより、頭がそのshaに変わり、最後の適切なコミット以降のファイルの変更が保持され、インデックスもリセットされます。
これで、コードを変更して、必要なコミットを行うことができます。ただしgit push --force
、リポジトリの履歴を変更したため、やらなければなりません。つまり、あなたのリポジトリをフォークした人は、あなたから変更を取得できなくなります。ただし、アップストリームに対してプル リクエストを実行することはできます。
git gui を使用している場合は、git gui に移動してブランチ履歴を視覚化します。(次のステップを実行する前に、プッシュするローカル変更のバックアップを取ります) ブランチをマスターにリセットするポイントまで右クリックし、[リセット] をクリックします。リセット後、コマンド ラインで git push -f と入力します。ブランチで必要な変更を行い、もう一度 commit n push します。ここでプル リクエストを作成すると、ブランチのリセット後に新しいコミットのみが作成されます。