308

私は何かに取り組んでいましたが、完全に失敗したと判断しました...一部をコミットした後。そこで、次のシーケンスを試しました。

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

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

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

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

4

6 に答える 6

680
git reset --hard origin/master

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

于 2010-10-07T14:30:07.893 に答える
39

余談ですが、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
于 2010-10-07T14:42:32.423 に答える
3

実行する必要があります

git fetch

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

于 2013-08-07T08:24:14.867 に答える
1

リモートが同期しなくなり、更新が必要になった例を見てきました。reset --hardまたは が機能しない場合はbranch -D、試してください

git pull origin
git reset --hard 
于 2013-04-02T20:18:07.070 に答える