it-swarm-ja.com

端末からGithubの古いコミットを削除するにはどうすればよいですか?

リポジトリがあります。

端末から古いコミットを削除するにはどうすればよいですか? SSHキーがアップロードされました。

(私はgithubページを使用しています、それがバージョン追跡が重要ではない理由です、Githubのストレージを無駄にしたくないです)

4

.gitフォルダーを削除すると、gitリポジトリで問題が発生する可能性があります。すべてのコミット履歴を削除したいが、コードを現在の状態のままにしたい場合は、次のように非常に安全です。

チェックアウト

git checkout --Orphan latest_branch

すべてのファイルを追加

git add -A

変更をコミットする

git commit -am "commit message"

ブランチを削除する

git branch -D master

現在のブランチの名前をマスターに変更します

git branch -m master

最後に、リポジトリを強制的に更新します

git Push -f Origin master

PS:これは古いコミット履歴を保持しません。

6
Usama Baig

あなたはそれについて本当に良い答えがあります: https://stackoverflow.com/questions/448919/how-can-i-remove-a-commit-on-github

そして私は引用します

注:以下のコメントでgit rebase -iの代替案をご覧ください—

git reset --soft HEAD^

まず、ローカルリポジトリのコミットを削除します。これは、git rebase -iを使用して行うことができます。たとえば、それが最後のコミットの場合、git rebase -i HEAD~2を実行して、ポップアップするエディタウィンドウ内の2行目を削除できます。

次に、git Push Origin +masterを使用してPush to GitHubを強制します。

詳細については Git Magic第5章:歴史の教訓-そして次にいくつか を参照してください(古いコミットを削除する場合など)。

ああ、作業ツリーが汚れている場合は、最初にgit stashを実行し、次にgit stash applyを実行する必要があります。

これがあなたのお役に立てば幸いです:)

====編集====

実際、私はリンクした投稿と特にコメント「Word of caution 2」 を読み直しましたcommit-on-github

そのことから、強制プッシュを使用しているときにgitが削除するのではなく、gitが新しいコミットを作成してポインターをそれに移動するように見えることを知りました。つまり、誰かがあなたのコミットのSHA1をすでに持っている場合、彼らはまだそれにアクセスできます。したがって、これを考慮に入れるときは、Tomasz Klimの提案どおりに行うことをお勧めします。

6
  1. 新しいリポジトリを作成します。
  2. すべてのファイルをそれにコピーします。
  3. 古いリポジトリを破棄します。
0
Tomasz Klim