私はgitがどのように機能するかについてあまり詳しくありません。誤ってコミットをプッシュし、元に戻したい。私はやった
git reset --hard HEAD~1
Fellow Googlersに注意してください:これはコミットを元に戻すだけでなく、すべてのファイル変更を破棄します!
そして今、プロジェクトは私のマシンで元に戻されますが、githubでは元に戻されません。このコードをプッシュしようとすると、「コミットは1コミットで「Origin/master」の背後にあり、早送りできます」というエラーが表示されます。このコミットをgithubから削除するにはどうすればよいですか?
できるよ git Push --force
しかし、あなたは履歴を書き換えていることに注意してください。レポを使用している人は誰でもこの問題を抱えています。
この問題を回避したい場合は、リセットを使用せず、代わりにgit revert
この記事には、優れた説明がありますさまざまなシナリオ(プッシュORプッシュの前の単なるコミット)と同様にコミットが行われた場合):
http://christoph.ruegg.name/blog/git-howto-revert-a-commit-already-pushed-to-a-remote-reposit.html
記事から、最も簡単なコマンド私が見たコミットIDによって以前のコミットを元に戻しました、だった:
git revert dd61ab32
または、git revert http://www.kernel.org/pub/software/scm/git/docs/git-revert.html を使用して試すこともできます。 git revert HEAD~1 -m 1
は、最後のコミットを取り消します(まだ最後のコミットである場合)。
他の回答についてコメントすることはできませんが、追加情報を少し提供します。
最後のコミットをrevert
したい場合は、git revert head
を使用できます。 head
は、ブランチ内の最新のコミットを指します。
reset
を使用するときにhead~1
を使用する理由は、Gitに「後のコミットのすべての変更を削除する」(reset --hard
)「前のコミット」(head~1
)。
reset
istoコミット、revert
isonコミット。
AmpTが指摘したように、head
からどれだけ離れているかをカウントするのではなく、コミットSHAを使用して識別することもできます。 SHAはログ(git log
)およびその他のさまざまな方法で見つけることができます。
また、Gitの他のポインターをいつでも使用できます。例えばタグまたはブランチ。また、これらの楽しい他のすべての方法を使用してコミットを参照することもできます https://www.kernel.org/pub/software/scm/git/docs/git-rev-parse.html#_specifying_revisions
復帰コミットをプッシュする必要があると思います。 githubからのpull
(元に戻すコミットを含む)を再度使用し、git revert
および結果をプッシュします。
他の人のgithubリポジトリのクローンが壊れていることを気にしない場合は、reset
:git Push Origin :master
。