質問

思ーから削除します。

による delete, というのは、なんだかんだことをコミットし、い場合は、また、を倒して離すと、その未来、私の変更に押しリモートです。

を読み込みまgit、と思い、コマンドを使えばいいか迷っていは git reset --hard HEAD.すが、いかがでしょうか?

役に立ちましたか?

解決

注意: git reset --hard を削除する作業ディレクトリの変更.ください 隠せて、変更したい ランニング前にはこのコマンドです。

といったコミットし、このコマンドwackで...

git reset --hard HEAD~1

HEAD~1 ことをコミット前です。

または、きの出力 git log, のコミットメントのidコミットしたいバックアップをしています:

git reset --hard <sha1-commit-id>

すでに触れ、押しそうになる必要のない力で押しくで...

git push origin HEAD --force

しかし, 場合、その他が撤退しているので、そうすると出ます。ないときは、きだけだと思いますが合併し、業務まで押し戻されます。

すでに押されているとされておく方が良いかもしれない使用 git revert, を"ミラーイメージ"コミットが取り消しに変わります。しかし、約束するoff.............


参考までに-- git reset --hard HEAD は大きな進行中のプロジェクトなのです。でリセットする最近のコミットし、消去すべての変化ワーキングツリーとインデックスで指定されます。


最後に、あなたが必要べきコミットする"削除"で通常は存在し git reflog なければゴミ収集した貴リポジトリ

他のヒント

あなたはまだどこにもコミット押されていない場合は、

は、削除する git rebase -i に使用することができますそれはコミット。まず、(約)そのコミットどの程度まで戻っている見つけます。その後の操作を行います。

git rebase -i HEAD~N

~Nは(Nは、例えばNの番号でなければならない)最後HEAD~10がコミットリベースを意味します。その後、あなたはGitがコミット問題を削除するにはあなたに提示したファイルを編集することができます。あなたは、削除が存在していなかったかのようにそのファイルを保存するには、Gitはその後、以下のすべてのコミットを書き換えます。

Gitのブックは写真でのリベースの良いセクションがあり、例ます。

あなたがのHAVE の何かを変更した場合ので、

は、このかかわらには注意してくださいあなたは力のプッシュを行うことを計画している場合を除き、別のアプローチが必要とされるであろう、他の場所でプッシュされます。

別の可能性は、私の個人的な好みのコマンドのいずれかです。

git rebase -i <commit>~1

これはインクルードはあなたが強打したいコミットする直前の時点で対話モードの-iでリベースを開始します。エディタはそれ以来、コミットのすべてをリストアップを開始します。あなたがファイルを消し去るし、保存したいコミットを含む行を削除します。コミットのみを削除し、ログに戻し、他のすべてを再生、残りの作業を行いますリベースます。

だけ作業をコミットしようとしたことのある人が使用しているため、いくつかの間違いのすべてのその仕事を削除する理由私は見ていないので、私はこの答えを追加してるのGit!

このコマンドをコミットしている、あなたの仕事を維持したいと単に「元に戻す」の場合(あなたがレポにプッシュする前にキャッチ)

git reset --soft HEAD~1

あなたは進行中の作業を破壊する場合を除き、最後のコミット以降の --hard のフラグを使用しないでください。

行わなかった場合公開の変更は、最新のコミット出来るようにできてい

$ git reset --hard HEAD^

(ご注意このことは取り外しもすべての未確定の変更使用ます。

また、既に公開するコミットを削除、利用 gitに戻る

$ git revert HEAD
git reset --hard commitId

git push <origin> <branch> --force

PS:CommitIdはあなたが戻っ

に戻したいものを指し、

言いたい削除を犯2&4から呼ぶ。

commit 0 : b3d92c5
commit 1 : 2c6a45b
commit 2 : <any_hash>
commit 3 : 77b9b82
commit 4 : <any_hash>

注意: が必要管理権限のレポ 以降のご利用 --hard-f.

  • git checkout b3d92c5 精算の最終使用可能。
  • git checkout -b repair 新しい支店ます。
  • git cherry-pick 77b9b82 実行を通じてコミット3.
  • git cherry-pick 2c6a45b 実行を通じてコミット1.
  • git checkout master 精算。
  • git reset --hard b3d92c5 リセットのマスターに使用可能。
  • git merge repair 合併当社の新しい支店を修正します。
  • git push -f origin master 押しマスターはリモート呼ぶ。

を強制的に変更履歴

で行く、あなただけの最後のコミットを削除する必要はありませんが、あなたは、最後のnはコミットの特定のコミットを削除したいと仮定すると、 あなたが最後の5つのコミットを表示したい場合は、

git rebase -i HEAD~<number of commits to go back>、そうgit rebase -i HEAD~5ます。

は、その後、テキストエディタ内のすべての隣pickするワードdropを変更するには、削除したいコミット。保存し、エディタを終了します。出来上がり!

を付加的に変更履歴

git revert <commit hash>を試してみてください。 は新しいコミットするを作成します戻しますそれはコミット指定取り消します。

あなたがアップ修正したい場合は、

最新のコミット、あなたがコミット元に戻すことができ、そして実行して、その中のファイルをunstageます:

git reset HEAD~1
Gitはファイルを上演するコマンドを追加する前に

このはその状態にリポジトリを返します。あなたの変更が作業ディレクトリになります。 HEAD〜1は、ブランチの現在の先端の下にコミットを指します。

あなたはNがコミットuncommitが、あなたの作業ディレクトリ内のコードの変更を維持したい場合:

git reset HEAD~N
あなたがコミットし、コードの変更を維持する必要はありません最新のを取り除くしたい場合は、

は、「ハード」リセットを行うことができます。

git reset --hard HEAD~1

同様に、あなたは最後のNがコミットし、コードの変更を保持しない破棄したい場合:

git reset --hard HEAD~N
git rebase -i HEAD~2

ここでは「2」あなたがリベースしたいコミットの数です。

'git rebase -i HEAD`

あなたはすべてのコミットをリベースしたい場合。

次に、これらのオプションのいずれかを選択することができるようになります。

p, pick = use commit

r, reword = use commit, but edit the commit message

e, edit = use commit, but stop for amending

s, squash = use commit, but meld into previous commit

f, fixup = like "squash", but discard this commit's log message

x, exec = run command (the rest of the line) using shell

d, drop = remove commit

これらの行は、再注文することができます。彼らは上から下に実行されます。  あなたがCOMMITここで行を削除すると失われます。  あなたはすべてのものを削除する場合は、リベースが中止されます。  空のコミットがコメントアウトされていることに注意してください。

あなたは、単にそれはオプション「d」を使用してコミット削除するか、あなたのコミットを持っている行を削除することができます。

タグ、ローカルブランチに削除使用するには
git reset --hard HEAD~1

リモートブランチに削除するには、

git push origin HEAD --force

ここでこれを行うための別の方法です。

当時にローカルの作業用コピーをリセットし、あなたが元に戻したいブランチをチェックアウトし、リモートサーバー上の最新のものになりたいことをコミット(それはバイバイを行く後にすべてのもの)。これを行うには、SourceTreeに私が上で右クリックし、「このコミットにBRANCHNAMEのリセット」を選択しました。私は、コマンドラインだと思います:

git reset --hard COMMIT_ID
あなただけのリモートから自分のブランチをチェックアウトしているので、

、あなたが失うことを心配するローカルな変更を持っているつもりはありません。あなたがした場合しかし、これはそれらを失うことになる。

次に、あなたのリポジトリのローカル・ディレクトリに移動し、次のコマンドを実行します:

git -c diff.mnemonicprefix=false -c core.quotepath=false \
push -v -f --tags REPOSITORY_NAME BRANCHNAME:BRANCHNAME

これはあなたのローカルリポジトリ内の現在の1の後にだけその1つの枝のすべてのコミットを消去されます。

間違います:

私は(のWindows用のGitHub のデフォルトのビューは、それが全体だ隠れて、マスターとの比較である)。git rebase -i --root'ed > 900回の+コミットが崇高に身をロードしながら、

私はシリコンバレーのひげを伸ばしました。変更せずに終了、私はすべての900 +個人がさりげなくリベースコミットとして、剃ることを進んその後、私のバッテリーを充電 - 。今まで自分のコミット回数をリセットする

Gitリポジトリを倒すと、元の時間を維持するために決定、私はこのローカルリポジトリを削除し、リモートから再クローン化されます。

今では再び追加最新の不要な、私は削除することを望んだマスターするためにコミットしていたので、そのように進めます。

のオプションを排出します:

私はgit revertしたくなかった - それはGitリポジトリに優位を与え、コミット追加を作成します。

git reset --hard HEADreflogを確認した後、最後だけHEADはクローンで、何もしなかった - Gitは勝利

最新のSHAを得るために、私はgithub.comでリモートリポジトリをチェックする - 。マイナーな勝利

git reset --hard <SHA>が働いていた考えた後、私はマスターと1に別のブランチを更新... 2 ...パッと消えます!コミット戻っていた - Gitは勝利

言うのは悲しい、無駄に...その後の行を削除し、git rebase -i <SHA>をしようとするバックマスター、時間にチェックアウト。 「あなたはを失われることCOMMITここで行を削除する場合は、を」。ああ... の<のhref = "https://www.dropbox.com/s/swukg8jqui0wc69/2.8.3.txt" のrel = "noreferrer" でのN00Bを荒しの新機能をオーバー練り> 2.8.3リリースはのノートます。

ソリューション:

git rebase -i <SHA>その後、d, drop = remove commitます。

を確認するには、私は別のブランチにチェックアウト、出来上がり - 何の隠ぺいは、マスターからプル/フェッチするためにコミットしていない

https://twitter.com/holman/status/706006896273063936する

あなたに一日良います。

上記のすべてのコマンドは、彼らがコミット行う前にあったように、あなたの作業ツリーとインデックスの状態を復元するが、リポジトリの状態を復元しません。あなたがそれを見れば、それは単に現在のブランチの先端に一つではない、実際には削除されませんコミット「削除」。

私はhref="http://git-scm.com/book/ch9-1.html">磁器のコマンドをgit prune --expire -nowを実行することです。

ソース: https://gist.github.com/sagarjethi/c07723b2f4fa74ad8bdf229166cf79d8

削除の前回のコミット

例えば、前回のコミット

git push原点+aa61ab32^課程修士課程修了

今削除したいこのコミットして簡単なこ

  1. 最初にリセットの支店の親会社の現在のコミット

  2. 力しながら押し込んで、遠い。

git reset HEAD^ --hard

git push origin -f

特定をしたいリセットは以下の

git reset bb676878^ --hard

git push origin -f

あなたは自分の最後のコミット台無しにした場合と使用しない理由公衆レポにそれをプッシュする前にそれを修正したい(間違ったメッセージを、いくつかの変更を追加するのを忘れ)

git commit --amend -m "New message here"
あなたが新しく変更を上演している場合は、

彼らは、それがコミット置き換えられます(あなたがを取り除くためにしようとしていることを)最後のコミットと組み合わせることでしょう。

あなたは、あなたがそれをプッシュした後にコミットを改正場合それが意味を理解するようにしてくださいますので、もし

もちろん、あなたが歴史を書き換えています。

あなたは以前のコミットメッセージを使用することを好む場合は、

また、代わりに「-m」の「--no-編集」オプションを渡すことができます。

ドキュメント: http://git-scm.com/docs/git-commit.htmlする

あなたがコミットを示す、歴史を維持したいと元に戻す場合は、あなたが使用する必要があります:

git revert GIT_COMMIT_HASH

を説明するメッセージを入力し、なぜあなたは、その後戻すとされます:

git push  

あなたが両方表示されますgit log発行すると、「間違っている」はコミットログメッセージを戻すます。

あなたはすでに次を実行し、その後、あなたはHEAD の($ GIT_COMMIT_HASH_HERE)のでなりたいコミットを見つける最初、プッシュした場合:

git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force

次に、各場所のレポは実行し、クローン化されています:

git reset --hard origin/master

私がコミットしてプッシュするとき、私は通常、何(誰が押された場合、彼はこの問題を解決するコミット):

git reset --hard HEAD~1

git push -f origin

このヘルプを願っています。

ローカルブランチにリセット

git reset --hard HEAD~<Number of commit> So git reset --hard HEAD~3

原点に強制プッシュ

git push -f origin

一時フォルダへのあなたのコードのバックアップを取ります。以下のコマンドは、サーバーと同じリセットされます。

git reset --hard HEAD
git clean -f
git pull

変更を維持し、最近のコミットを削除したい場合は、

git reset --soft HEAD^
git pull

delete local commit

で上記イメージを削除したい元に戻す"試験の変更2"commit(SHA1ID: 015b5220c50e3dfbb1063f23789d92ae1d3481a2(取得できSHA1を使用 gitk gitコマンドbash)).

めることが利用できます(すべての以下のコマンドの作業を地元だけます。必要なものを押した後に削除):

  1. git reset --hard 515b5220c50e3dfbb1063f23789d92ae1d3481a2 //でりすることcommit(SHA1のID 試験の変更4 コミット 515b5220c50e3dfbb1063f23789d92ae1d3481a2)
  2. git reset --hard HEAD~1 //でアップする前に一つです。
  3. git reset --hard HEAD^ //去のコミットからgit

後削除:

after delete commit

私はすでにプッシュしています。バックremotlyいくつかのコミットを返す必要があります。 多くのバリエーションを試してみました、 しかしジャスティン<からのみこのに/ A> gitのブッシュを経由して私のために正常に動作してます:

git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force

gitの--hardリセット

--force

Gitのプッシュ原点HEAD コミットの一つ以上がタグ付けされている場合は、

、最初のタグ(複数可)を削除します。のそれ以外の場合はタグ付けされたコミットが除去されない。

// display git commit log    
$ git log --pretty=oneline --abbrev-commit

// show last two commit and open in your default editor
// then delete second commit line and save it
$ git rebase -i HEAD~2

参考:

、ローカルおよびリモートのにはgitにコミットを削除する方法

あなたがリモートリポジトリにプッシュしていないと仮定すると、リポジトリを再クローンができます。これは、数回の選択の私の方法であった。

scroll top