回答:
自分がいるブランチを削除するだけです。git branch -D
これはこれを行うことに対する安全性チェックがあるので使用できません。update-ref
これを行うために使用できます。
git update-ref -d HEAD
他のすべてのブランチとリセットしようとしているブランチを含むリポジトリ全体が完全にワイプされるため、このようなものは使用しないでくださいrm -rf .git
。
.gitignore
。git add .
、git commit -m "initial commit"
、git update-ref -D HEAD
、作成.gitignore
Gitはまだ無視すべきことは、以前追加されたファイルを見ていることを、通知を。つまりgit update-ref -d HEAD
、最初のコミット前の状態に戻ることはありませんでした。
git reset --hard HEAD~1
他のすべてのコミットで追加されたファイルを削除します。明らかに問題は、そのコマンドが他のすべてのケースで機能するのと同じ状態にどのように到達するかです。ソリューションが機能しないことを証明するために、この要旨を参照してください 。gist.github.com
git update-ref -d HEAD
ん実際に初期のコミット元に戻すが、インデックスに追加されたすべての以前にコミットの変更を保持します。これらの変更も削除したい場合は、以下を実行してくださいgit reset --hard
。不完全であっても、この回答は確かに最良の回答です。そのため、使用することは避けてくださいrm -fr .git
(自分が何をしているかを理解していない限り)。
HEADを削除してリポジトリを新しい状態に復元し、新しい初期コミットを作成できます。
git update-ref -d HEAD
新しいコミットを作成した後、すでにリモートにプッシュしている場合は、以前の初期コミットを上書きするために強制的にリモートにコミットする必要があります。
git push --force origin
この質問はこのブログ投稿からリンクされており、Gitの新しいバージョンに対して代替ソリューションが提案されました。
git branch -m master old_master
git checkout --orphan master
git branch -D old_master
このソリューションは、以下を前提としています。
master
ブランチにコミットが1つしかないold_master
ので、その名前を自由に使用できます既存のブランチの名前をに変更しold_master
、孤立した新しいブランチmaster
(新しいリポジトリ用に作成されるような)を作成します。その後、自由に削除できますold_master
...またはできません。あなた次第。
注:gitブランチを移動またはコピーすると、reflog(このコードを参照)が保持されますが、新しいブランチを削除してから作成すると破棄されます。履歴のない元の状態に戻したいので、おそらくブランチを削除する必要がありますが、他の人はこの小さなメモを検討したいと思うかもしれません。
質問で規定された条件の下で:
git init
、git add
操作、git commit
、これらの前提条件が満たされている場合、最初のコミットを元に戻す最も簡単な方法は次のとおりです。
rm -fr .git
あなたがしたディレクトリからgit init
。その後、をやり直してgit init
Gitリポジトリを再作成し、最初に行わなかったことを後悔していると思われる変更を加えて追加をやり直し、最初のコミットをやり直すことができます。
危険!これにより、Gitリポジトリディレクトリが削除されます。
どこかにバックアップがない場合を除き、Gitリポジトリディレクトリを永久的かつ回復不能に削除します。前提条件の下では、リポジトリに保持したいものは何もないため、何も失うことはありません。追加したすべてのファイルは、まだ変更しておらず、削除していない場合など、作業ディレクトリで引き続き使用できます。ただし、これは、リポジトリに他に何もない場合にのみ安全です。「リポジトリを初めてコミットする-後悔する」という質問で説明されている状況では、安全です。しかし、多くの場合、安全ではありません。
これを行って、不要なクローンリポジトリを削除しても安全です。クローン元のリポジトリには影響を与えません。コピーで行ったことはすべて破棄されますが、元のリポジトリには影響しません。
注意してください。ただし、前提条件が満たされている場合は安全で効果的です。
保存したいリポジトリで他のことを行った場合、これは適切な手法ではありません。リポジトリは、これが適切であるための前提条件を満たしていません。
できません。そう:
rm -rf .git/
git init
git add -A
git commit -m 'Your new commit message'
git reset --hard
ので、なぜ彼はgit add -A
?
結局私のために働いたものを投入します。隔離されたデータが誤って配置されていたため、リポジトリの最初のコミットを削除する必要があり、コミットはすでにプッシュされていました。
現在正しいブランチにいることを確認してください。
git checkout master
git update-ref -d HEAD
git commit -m "Initial commit
git push -u origin master
これで問題を解決できました。
重要
これは、公開されていない内部リポジトリにありました。リポジトリが公開されている場合、元に戻す必要があるものがすでに他の誰かによってプルダウンされていると想定してください。
「修正」が提案されておらず、@ damkratによって取り消されているのはなぜでしょうか。修正は、初期コミットがないという目的がないため、間違ったコミットを修正するという根本的な問題を最も効率的に解決するための正しい方法として私に表示されます。コミット。一部の人が強調したように、リポジトリのクローンを誰も作成していない場合は、マスターのような「パブリック」ブランチのみを変更する必要があります...
git add <your different stuff>
git commit --amend --author="author name <author.name@email.com>"-m "new message"
git reset --hard変更を加えてから
git add -A
git commit --amend --no-edit
または
git add -A
git commit --amend -m "commit_message"
その後
git push origin master --force
--forceは、最初のステップでリセットしたコミットを書き換えます。
VCSシステム、特にgitの全体的な考えに反対しようとしているので、これを行わないでください。唯一の良い方法は、新しいブランチを作成し、不要なブランチを削除することです。git help branch
情報を参照してください。
git status
、そして驚いたことに、gitは言ったfatal: Not a git repository (or any parent up to mount point ...)
!