web-dev-qa-db-ja.com

Gitでローカルコミットを破棄する方法は?

私は何かに取り組んでいて、それを完全にねじ込んだと決めました...それをいくらかコミットした後。そこで、次のシーケンスを試しました。

git reset --hard
git rebase Origin
git fetch
git pull
git checkout

その時点でメッセージを受け取りました

Your branch is ahead of 'Origin/master' by 2 commits.

ローカルコミットを破棄したい、ローカルディレクトリを消去してすべてを再ダウンロードする必要はありません。どうすればそれを達成できますか?

221
git reset --hard Origin/master

Origin/masterにないすべてのコミットを削除します。ここで、Originはリポジトリ名で、masterはブランチの名前です。

491
mipadi

余談ですが、mipadiによる答え(ちなみにうまくいくはずです)とは別に、次のことを知っている必要があります。

git branch -D master
git checkout master

また、having to redownload everything(引用の言い換え)なしで、必要なことを正確に実行します。これは、ローカルリポジトリにリモートリポジトリのコピーが含まれているためです(そして、そのコピーはローカルディレクトリと同じではなく、チェックアウトされたブランチと同じではありません)。

ブランチを完全に削除することは完全に安全であり、そのブランチを再構築することは非常に高速であり、ネットワークトラフィックを必要としません。 gitは基本的にローカルリポジトリであることを忘れないでください。リモートブランチでさえローカルにコピーを持っています。特定のローカルコピーが実際にはリモートブランチであることをgitに伝えるメタデータはほんのわずかです。 gitでは、すべてのファイルは常にハードディスク上にあります。

マスター以外のブランチがない場合は、次を実行する必要があります。

git checkout -b 'temp'
git branch -D master
git checkout master
git branch -D temp
28
slebetman

私がしていることは、HEADにハードリセットすることです。これにより、すべてのローカルコミットが消去されます。

git reset --hard HEAD^
11
giang nguyen

実行する必要があります

git fetch

すべての変更を取得すると、「ブランチは先です」というメッセージは表示されません。

リモートの同期が取れなくなり、更新する必要がある場合があります。 reset --hardまたはbranch -Dが機能しない場合は、試してください

git pull Origin
git reset --hard 
0
Jim Clouse

私はやらなければなりませんでした:

git checkout -b master

gitが存在しないと言ったように、それは

git -D master
0
ramp