246

git で最初のコミットを削除する方法に興味があります。

何かをコミットする前のリビジョンとは何ですか? このリビジョンには名前またはタグがありますか?

4

9 に答える 9

455

私にとって、最も安全な方法は次のupdate-refコマンドを使用することです。

git update-ref -d HEAD

名前付き参照 が削除されるHEADため、現在のブランチのすべてのコミットがリセットされます (静かに、作業が失われることはありません) 。

最初のコミットを 2 番目のコミットとマージしたい場合は、次のrebaseコマンドを使用できます。

git rebase -i --root

最後の方法は、孤立したブランチ (同じ内容でコミット履歴のないブランチ) を作成し、新しいコンテンツをそこにコミットすることです。

git checkout --orphan <new-branch-name>
于 2015-09-24T15:55:31.933 に答える
44

すべてのコミットは親コミットを参照しているため、最初のコミットの前には何もありません。これにより、最初のコミットが特別なもの (孤立したコミット) になるため、以前の「状態」を参照する方法はありません。

したがって、コミットを修正したい場合は、次のように簡単に実行できますgit commit --amend。これにより、別のコミットを作成せずにコミットが変更されます。

最初からやり直したい場合は、リポジトリを削除して、.git別のリポジトリを作成しますgit init

于 2012-06-06T09:27:31.373 に答える
13
# 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
于 2017-07-28T10:47:37.553 に答える
6

最初のコミットを編集したいだけかもしれません (git リポジトリには常に最初のコミットがあるため)。git commit --amend --reset-author通常の の代わりに使用することを検討してくださいgit commit --amend

于 2013-05-02T20:27:48.527 に答える
3

あなたができる別の方法は次のとおりです。

  1. 保持したいブランチ (dev など) にチェックアウトします。git checkout dev
  2. 次に、リセットするブランチを削除しますgit branch -D master
  3. 次に、同じ名前で空のブランチを作成しますgit checkout --orphan master

もちろん、これはすべてユースケースに依存しますが、複数のブランチがある場合、.gitディレクトリを削除しても意味がありません。

于 2013-08-08T16:57:08.907 に答える
2

他のブランチを保持したいが、例えば、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/
于 2012-06-06T09:31:12.107 に答える