git で最初のコミットを削除する方法に興味があります。
何かをコミットする前のリビジョンとは何ですか? このリビジョンには名前またはタグがありますか?
git で最初のコミットを削除する方法に興味があります。
何かをコミットする前のリビジョンとは何ですか? このリビジョンには名前またはタグがありますか?
私にとって、最も安全な方法は次のupdate-ref
コマンドを使用することです。
git update-ref -d HEAD
名前付き参照 が削除されるHEAD
ため、現在のブランチのすべてのコミットがリセットされます (静かに、作業が失われることはありません) 。
最初のコミットを 2 番目のコミットとマージしたい場合は、次のrebase
コマンドを使用できます。
git rebase -i --root
最後の方法は、孤立したブランチ (同じ内容でコミット履歴のないブランチ) を作成し、新しいコンテンツをそこにコミットすることです。
git checkout --orphan <new-branch-name>
すべてのコミットは親コミットを参照しているため、最初のコミットの前には何もありません。これにより、最初のコミットが特別なもの (孤立したコミット) になるため、以前の「状態」を参照する方法はありません。
したがって、コミットを修正したい場合は、次のように簡単に実行できますgit commit --amend
。これにより、別のコミットを作成せずにコミットが変更されます。
最初からやり直したい場合は、リポジトリを削除して、.git
別のリポジトリを作成しますgit init
# Check out to a temporary branch:
git checkout --orphan TEMP_BRANCH
# Add all the files:
git add -A
# Commit the changes:
git commit -am "Initial commit"
# Delete the old branch:
git branch -D master
# Rename the temporary branch to master:
git branch -m master
# Finally, force update to our repository:
git push -f origin master
最初のコミットを編集したいだけかもしれません (git リポジトリには常に最初のコミットがあるため)。git commit --amend --reset-author
通常の の代わりに使用することを検討してくださいgit commit --amend
。
あなたができる別の方法は次のとおりです。
git checkout dev
git branch -D master
git checkout --orphan master
もちろん、これはすべてユースケースに依存しますが、複数のブランチがある場合、.git
ディレクトリを削除しても意味がありません。
他のブランチを保持したいが、例えば、master
他のブランチと共通の履歴なしでブランチを新たに開始する場合、これを達成するための安全な方法の 1 つは、新しいリポジトリを作成し、そのコンテンツを古いものにプッシュすることです。
cd ..
git init newrepo
cd newrepo
# make some initial commits
git push ../oldrepo master:newmaster
これによりnewmaster
、古いリポジトリにブランチが作成され、他のブランチとは共通しない履歴が作成されます。もちろん、 を で上書きすることもできmaster
ますgit push -f
。
すべてのブランチとすべての既存のコンテンツを破棄する場合は、実行するだけです
rm -rf .git/