プルリクエストを行いましたが、その後、ローカルでプロジェクトにコミットし、プルリクエストの汚染を終了しました。
StackOverflowで同様の質問をいくつか見つけましたが、そこにあるものは適用できません。これはGitHubでの最初のプルリクエストなので、このすべてがどのように機能するかはちょっと奇妙です。
強調表示されたコミットは、他のすべてのものを保持および削除する必要があるものです。私はいくつかのものをマージするので、これは履歴の4番目のコミットになります。
誰かが何が起こっているのか、この問題をどのように修正するのか説明してください。
それを行うにはいくつかのテクニックがあります。
この投稿-復帰に関する部分を読んでください は、私たちが何をしたいのか、どうやってやるのかを詳細に説明します。
問題に対する最も簡単な解決策は次のとおりです。
# Checkout the desired branch
git checkout <branch>
# Undo the desired commit
git revert <commit>
# Update the remote with the undo of the code
git Push Origin <branch>
元に戻すコマンドは、元のコミットのundoで新しいコミットを作成します。
人々は、間違ったコミットの変更を取り消すために、間違ったコミットや取り消しコミットを見たくありません。これはコミット履歴を汚染します。
コミットを元に戻して変更を元に戻す代わりに、間違ったコミットを削除する簡単な方法を次に示します。
git checkout my-pull-request-branch
git rebase -i HEAD~n
//ここでn
は、対話型リベースに含める最後のコミットの数です。
pick
をdrop
に置き換えます。git Push --force
次のようにします、
ブランチ名がmy_branchであり、これに追加のコミットがあるとしましょう。
git checkout -b my_branch_with_extra_commits
(このブランチを別の名前で保存する)gitk
(gitコンソールを開きます)git checkout my_branch
gitk
(これによりgitコンソールが開きます)reset branch to here
」をクリックしますgit pull --rebase Origin branch_name_to _merge_to
を行うgit cherry-pick <SHA you copied in step 3. >
次に、ローカルブランチのコミット履歴を見て、すべてが正常に見えることを確認します。
コミットを削除して、その変更を保持したくない場合は、@ feritが適切なソリューションを提供します。
そのコミットを現在のブランチに追加したいが、現在のprの一部として意味をなさない場合、代わりに以下を行うことができます:
git rebase -i HEAD~n
を使用しますgit reset HEAD^ --soft
を使用して変更をコミット解除し、ステージングされた状態に戻します。git Push --force
を使用して、コミットを削除せずにリモートブランチを更新します。これで、リモートからコミットが削除されましたが、ローカルでの変更は引き続き保持されます。