Gitの最初のコミットを削除する方法に興味があります。
何かをコミットする前のリビジョンは何ですか?このリビジョンには名前またはタグがありますか?
私にとって、最も安全な方法はupdate-ref
コマンドを使用することです:
git update-ref -d HEAD
名前付き参照HEAD
を削除するため、現在のブランチのすべてのコミットをリセット(ソフトに、作業を失うことはありません)になります。
最初のコミットを2番目のコミットにマージする場合は、rebase
コマンドを使用できます。
git rebase -i --root
最後の方法は、Orphanブランチを作成することです。このブランチは、同じコンテンツであるがコミット履歴がないブランチで、新しいコンテンツをコミットします:
git checkout --Orphan <new-branch-name>
すべてのコミットは親コミットを参照しているため、最初のコミットの前には何もありません。これにより、最初のコミットが特別になり(孤立したコミット)、以前の「状態」を参照する方法がなくなります。
したがって、コミットを修正したい場合は、単純にgit commit --amend
を実行できます。これにより、別のコミットを作成せずにコミットが変更されます。
最初からやり直したい場合は、.git
リポジトリを削除し、git init
で別のリポジトリを作成します
git checkout-孤立したTEMP_BRANCH
git add -A
git commit -am "初期コミット"
git branch -Dマスター
git branch -m master
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
ブランチが作成されますが、その履歴は他のブランチのいずれにも一般的ではありません。もちろん、git Push -f
でmaster
を上書きすることもできます。
すべてのブランチとすべての既存のコンテンツを破棄する場合は、実行するだけです
rm -rf .git/
コミットしたがプッシュしていない場合は、。gitディレクトリとgit init
を再度削除してください...
質問に対する答えは、次のことによって異なります。
ブランチの最初のコミットのみを削除したい(他のブランチをそのままにしておく)か、または
あるブランチの最初のコミットを削除し、その後のコミット(および他のブランチ)を「そのまま」残します。
これらの2つ目は比較的単純です。基本的にルートにリベースする必要があります-ここでの答えのほとんどは、これを行う方法に関するものです。
2番目の操作(1番目のコミットを削除し、ブランチからのみコミットし、他のブランチはそのままにしておく)は困難です。または、少なくとも、特にそれが発生し、変更がGitHubまたはBitbucketに反映されるようにする場合はさらに難しくなります。 Gitには、コミットせずにブランチをプッシュまたはプッシュする方法はまったくありません(私が知る限り)。また、GitHubまたはBitbucketのいずれにも、コミットされていない新しい空のブランチを作成する方法はまったくありません(ここでもわかります)。したがって、完全に空のブランチを作成するには、新しいリポジトリを作成し、@ user1338062の回答に従って、必要なブランチ(必要なコミットを含む)を追加し直す必要があります。
ですから、この答えが明白ではなかったかもしれないことを明確にすることを願っています-両方 OPが要求することを完全にマスターするために、できること。