web-dev-qa-db-ja.com

Gitはローカルコミットを元に戻します

私はgitリポジトリをWindowsのphpstormに接続しています。いくつかの変更セットをコミットし、それらを「中央レポ」にプッシュしました。この後、さらにいくつかのコミットを行いました。中央リポジトリにプッシュされていないこれらのコミットはもう必要ありません。セントラルリポジトリ(Origin)と同じになるように作業コピーをクリーンアップするにはどうすればよいですか?

52
Will
git reset --hard remotes/Origin/HEAD
76
Steve Prentice
git reset --hard remotes/Origin/YOUR/BRANCH

より良い /HEADこれは表示されないためです。

$ git status
On branch MY/BRANCH
Your branch and 'Origin/MY/BRANCH' have diverged,
and have 1 and 1 different commit each, respectively.
52
Karl the Pagan

それについて確信があり、ローカルncommittedの変更がない場合:

git reset --hard Origin/master

ここで、Origin/masterはプッシュしたブランチです。

Ref-logには、ガベージコレクションが期限切れになるまで、元に戻されたビットが含まれています。元に戻すには、

git reset --hard HEAD@{1}
20
sehe

ローカルコミットを元に戻すには

git reset HEAD~N

nはコミット数を元に戻すために使用されます。例:

ローカルからの単一のコミットを元に戻す必要がある場合は、使用できます

git reset HEAD~1

またはgit reset HEAD ^

14
uma

私の理解では、中央リポジトリにプッシュしたコミットを作成し、その後さらにコミットを作成しましたが、これらはローカルに存在します。これらはすべて中央レポをプッシュしませんでした。

ローカルコミットを削除/元に戻すには;

git reset HEAD~{number_of_commit}

単純に、git logコマンドでプロンプトを表示し、コミットのリストを取得します。ご覧ください、今作成したコミットの数と、元に戻す必要のあるコミットの数。

たとえば、最後の2つのコミットをremove.revertしてからヒットする必要があります

git reset HEAD~2

セントラルリポジトリでローカルリポジトリをリセットする別の方法があります。ただし、この場合、ローカルコミットは削除され、他のユーザーが中央レポジトリにプッシュコミットすると、レポジトリはそれで更新されます。

コマンドは次のとおりです。

git reset --hard remotes/Origin/HEAD
3
user2075103