web-dev-qa-db-ja.com

最後のコミットを削除してプッシュ

GIT全般とGitKrakenを同時に学びます。 1つのファイルに小さな変更を加えました-aa.cppGitKrakenの助けを借りて、コミットしてリモートリポジトリにプッシュします。突然、プロジェクトディレクトリにある気に入らないファイルをすべてプッシュしたことに気付きました。

次に、不要なファイルをリポジトリから削除する必要があります。リモートリポジトリから最後のプッシュを削除し、もう一度コミットしてプッシュすることをお勧めします。 GITコマンドを使用して最後のコミットを削除する方法。 GitKrakenで同じようにする方法は?

7
vico

すでにこのコミットをプッシュしている場合は、他の誰かがブランチをプルした可能性があります。この場合、ブランチの履歴を書き換えることは望ましくないため、代わりに次のコミットを元に戻す必要があります。

git revert <SHA-1>
git Push Origin branch

ここで、<SHA-1>は、削除するコミットのコミットハッシュです。このハッシュ値を見つけるには、ブランチでgit logと入力し、最初のエントリを調べます。

git revertを実際に使用する追加削除するコミットのミラーイメージである新しいコミット。これは、ブランチに新しい情報を追加するだけなので、パブリックブランチでのコミットを元に戻すための推奨される方法です。

このブランチを使用しているのが自分だけであることが確実な場合は、別のオプションがあります。

git reset --hard HEAD~1

に続く

git Push --force Origin branch

ただし、このオプションは、他の誰もこのブランチを共有していない場合にのみ使用してください。

12
Tim Biegeleisen

私がそれを行う方法は、git statusと入力することです。これにより、現在使用しているブランチを確認でき、その後に次のように入力します。

git log

次に、次のようなものが表示されます。

commit aa09a82fb69af2d1aebde51d71514f7a03c3a692
Author: User <[email protected]>
Date:   Fri Nov 4 15:36:22 2016 -0400

    Fix issue with vertical scroll being forced

commit 411771837efe3ed555395e77fd35105a500ab758
Author: User <[email protected]>
Date:   Thu Nov 3 15:50:42 2016 -0400

    Add user notifications

commit f43b262f4e02b5a7268280e1230d44e36d1e547b
Author: User <[email protected]>
Date:   Thu Nov 3 12:11:00 2016 -0400

    All your base are belong to us

つまり、これはcommit aa09a82fが最後のものであり、commit 41177183がその前のものであることを示しています。

git reset --hard 41177183

...リモートバックアップを保持したまま、そのコミットに戻ります。別のgit statusを使用して、すべてがダブルプッシュに設定されていることを確認します(特にマルチタスクの場合、現在のブランチの検証に個人的に少し強迫的です):

git Push Origin :<branch_name>
git Push Origin <branch_name>

この時点で、すべての設定が完了しているはずですが、次のようにフォローアップすることをお勧めします。

git fetch --all --Prune
git branch -av

...ブランチリストをクリーンアップし、コミットメッセージを比較するためにローカルとリモートの両方を表示します。

また、チームで作業する場合は、先に進む前に、チームがこれを認識していることを確認してください。最後のコミットを削除してプッシュする前に、ブランチをプルしたりプッシュしたりしないでください。

2

マスターではなく、別のブランチで作業していることを願っています(または、git-flowを使用している場合は開発します)。私の例では、ブランチ名としてmy-broken-branchを使用します;)

私の手順は次のとおりです。
リモートブランチを削除します。後で更新されたバージョンをプッシュします。

git Push Origin :my-broken-branch

次に、ローカルブランチから最後のコミットを削除します。 HEAD^1は、現在より1つ前のコミットを指します。

git reset HEAD^1

次に、必要なファイルだけを追加して、慣れているようにコミットします。最後に、ブランチをリモートにプッシュします。そこにブランチが再作成され、変更されたコミットについて誰も知る必要がありません。

git Push Origin my-broken-branch
0