web-dev-qa-db-ja.com

すべてのGitコミット履歴を削除する

私はGithubからリポジトリをフェッチし、過去のタグを元に戻し、すべての履歴を削除して別のリモートにプッシュしようとしています。すべてのコミットログを削除する以外は、以下ですべてを行うことができます。何が欠けていますか?

git clone https://github.com/user/user-repo.git
cd user-repo
git reset --hard tags/v2.0
git remote add stash ssh://git@myserver:7999/myproject/user-repo.git
git Push --force stash master
19
noway

あなたが欲しいのは新しいもののようなレポだと思ったので、.git/ディレクトリを削除して再初期化する方が簡単です。

git clone https://github.com/user/user-repo.git
cd user-repo
git reset --hard tags/v2.0

rm -rf .git/
git init
git add .
git commit -m 'first commit'

git remote add stash ssh://git@myserver:7999/myproject/user-repo.git
git Push --force stash master
45
pktangyue

git merge --squashを使用すると、すべてのコミットを1つにまとめてプッシュできます。

3
wRAR

基本的に、すべてのコミットを1つのコミットにロールアップすることについて話しているのですか、それともすべてのコミットを保持して実際のコミットメッセージを切り捨てたいですか?

コミットを1つにまとめる(必要に応じて、最後のコミットメッセージを切り捨てる)には、インタラクティブなリベースを使用できます。

git rebase -i <whatever>

実際のコミットメッセージを切り捨て、すべてのコミットを保持するには、--msg-filterオプションをgit filter-branchに使用します。

1
Wil Cooley