5

プロジェクトでgitリポジトリを使用しています。誤って2つのコミットをプッシュしてしまいました。そしてその間に誰かがその上にコミットしました。プッシュされたコミットを削除することは可能ですか、それとも誰かがその上にコミットしたため、コードの変更を削除して新しいコミットとしてプッシュする必要がありますか?

Gitマスターブランチ:

コミットA//私によって

コミットB//私によって

Cをコミットする//誰かによって

ここで、コミットCを残してコミットAとBを削除する必要があります。どんな助けでも本当にありがたいです。

4

3 に答える 3

8
git reset --hard HEAD~1

ここで、HEAD〜1はheadの前のコミットを意味します。

または、必要なコミットのコミットIDを見つけて(git logの出力を確認)、次のようにします。

git reset --hard <sha1-commit-id>
于 2012-11-27T12:05:59.510 に答える
3

これらのコミットを元に戻す必要があります。

技術的には、これらの変更を削除して新しいコミットを行い、それらを元に戻します。

さて、それらを元に戻すと、それらは履歴に残りますが、通常は問題ありません。それがまったく受け入れられない場合は、フィルターブランチやフォースプッシュなどのソリューションを検討してください。

于 2012-11-27T06:59:41.043 に答える
1
git rebase --onto master~3 master~1 master

コマンドgit help rebase、次に--ontoオプションでヘルプを表示するか、ここに表示されます。ドキュメントには、状況と同じくらいの例があります。

于 2014-12-05T06:00:05.720 に答える