2

その場で完全に「最初からやり直す」にはどうすればよいですか?

Git リモート リポジトリ内のすべてを完全に消去するにはどうすればよいですか? 私は現在唯一のクライアントであり、公開する前に、以前のコミットをすべて消去する必要があります。

重複していないため...

この質問は、既存のリポジトリを削除せずに、元のベース コミットを含む履歴を削除する方法に関するものです。私のリポジトリは SourceForge にあり、それを行う唯一の方法は、プロジェクト全体を破棄することです。これには、プロジェクトの削除要求を送信する必要がありますが、常に許可されるとは限りません (特に、私のプロジェクトが 90 歳未満の場合)。日、彼らはそれを許可しません)。

4

5 に答える 5

3

(ほとんど) 空のブランチをプッシュする

ブランチをリモート リポジトリにプッシュするには、ブランチに少なくとも 1 つのコミットが必要です。頭がまったくない場合、git はoriginに送信するものがありません。これは、空のコミットで空のブランチを作成することで解決できます。例えば:

git symbolic-ref HEAD refs/heads/empty_branch
rm .git/index
git commit --allow-empty -m 'Initialize empty branch.'
git branch -M empty_branch master
git push --force origin

完了すると、現在のマスターとオリジン/マスターの両方に、ファイルのないコミットが 1 つだけ含まれます。git がガベージ コレクションを実行すると、リポジトリ内の基になるオブジェクトが最終的にリープされます。

すべてのタグを削除

すべてのローカル タグとリモート タグを削除する場合は、タグをローカルで削除する前に、一連の空の参照をリモートにプッシュできます。例えば:

# Delete all tags present on the local host from the remote
# host in one push operation.
git for-each-ref --format=':%(refname)' --shell refs/tags |
    xargs git push origin

# Delete all local tags.
git tag -d $(git tag)
于 2012-07-18T17:43:17.847 に答える
1

リモート名がoriginで、リモート リポジトリに対する強制プッシュ権限がある場合、リモート リポジトリ内のすべてのブランチすべてのタグが削除されます。

REMOTE=origin

for i in .git/refs/$REMOTE/origin/*
do
    git push $REMOTE :"`basename "$i"`"
done

for i in `git tag`
do
    git push $REMOTE :refs/tags/$i
done

これは破壊的な操作であるため、最初にこれを実行する必要があることを確認してください

于 2012-07-18T17:25:15.137 に答える
1

サーバーに ssh しrm -rf .git、プロジェクト ディレクトリ内で実行します。もう一度 git の下に置きたい場合は、git init.

于 2012-07-18T17:20:46.080 に答える
0

git push コマンドを使用してブランチを削除する

$git プッシュ元 :remotebranch_name

これにより、リモートブランチが完全に削除されます

于 2012-07-19T08:35:50.877 に答える
0

これを行う簡単な方法は次のとおりです。

  1. 空の git リポジトリを作成します。

    git init

  2. ダミーのコミットを作成します:

    touch README.md git add README.md git commit -m "first commit"

  3. 上書きするレポを参照します。

    git remote add origin REMOTE_URL

  4. リモート git を上書きする

    git push --force origin

  5. 既存のリモートタグを削除 (1 つずつ)

    git push --delete origin TAG_NAME

于 2019-12-11T12:58:13.203 に答える