Github から何かをダウンロードし、特定のコミット後に発生したすべてをローカルで消去したい場合、どうすればよいですか?
または逆に、特定の時点でリポジトリをダウンロード/クローンすることは可能ですか? (数か月前になりますが、特定の時点以降の変更をリポジトリに表示したくありません)
私はコミットを知っています、それはabc123def
.
シモーネは基本的に正しいですが、もっと簡単な方法があります。まず、前述のように、クローンは常にすべてのクローンを作成しますが、それを助けることはできません。しかし、gitの極端な速度のおかげで、通常は問題になりません。クローンが作成されたら、ブランチをチェックアウトして実行します。
git reset --hard abc123def
SEのプロへの質問:これはむしろシモーネの答えの編集である必要がありますか?
リポジトリのクローン作成には、すべてのリモート ref とそれらに必要なすべてのコミットのダウンロードが含まれます。(少なくとも、これを制限する方法は知りません。)
リポジトリのクローンを作成したら、自由に独自のブランチを任意のコミットに設定できます。
git clone -n $url
おそらくとのようなものが必要ですgit checkout -b mybranch abc123def
。
git branch -av
その後、古いコミットを指しているブランチと、新しいコミットを指しているリモートブランチがあることがわかります。
ブランチの時点から、新しいコミットはすべて存在しなくなります。それはおそらくあなたが望むものです。
リポジトリから新しいコミットをすべて消去したい場合は、新しい参照 (つまり、ブランチとタグ) をすべて削除し、すべてgit gc
をクリーンアップするために使用する必要があります。
Git でリポジトリを複製する場合、特定のリビジョンを選択することはできません。リポジトリ全体を複製する必要があります。
HEAD から 1 つの特定のリビジョンへのすべての変更を消去したい場合は、そのリビジョンとヘッドの間のコミットの数を数えることができます
$ git log --oneline abc123def..HEAD | wc -l
次に、削除するコミットの数 (例: 123) を渡して reset を実行します。
$ git reset --hard HEAD~123