質問
思ーから削除します。
による 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 rebase -p --onto SHA^ SHA
もちろん、あなたが取り除くしたい参照して、「SHA」を交換してください。 「^」は、そのコマンドでリテラルです。
行わなかった場合公開の変更は、最新のコミット出来るようにできてい
$ 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 HEAD
はreflog
を確認した後、最後だけ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^課程修士課程修了
今削除したいこのコミットして簡単なこ
段
最初にリセットの支店の親会社の現在のコミット
力しながら押し込んで、遠い。
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-編集」オプションを渡すことができます。
あなたがコミットを示す、歴史を維持したいと元に戻す場合は、あなたが使用する必要があります:
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
で上記イメージを削除したい元に戻す"試験の変更2"commit(SHA1ID: 015b5220c50e3dfbb1063f23789d92ae1d3481a2(取得できSHA1を使用 gitk
gitコマンドbash)).
めることが利用できます(すべての以下のコマンドの作業を地元だけます。必要なものを押した後に削除):
git reset --hard 515b5220c50e3dfbb1063f23789d92ae1d3481a2
//でりすることcommit(SHA1のID 試験の変更4 コミット 515b5220c50e3dfbb1063f23789d92ae1d3481a2)git reset --hard HEAD~1
//でアップする前に一つです。git reset --hard HEAD^
//去のコミットからgit
後削除:
私はすでにプッシュしています。バックremotlyいくつかのコミットを返す必要があります。 多くのバリエーションを試してみました、 しかしジャスティン<からのみこのに/ A> gitのブッシュを経由して私のために正常に動作してます:
git reset --hard $GIT_COMMIT_HASH_HERE
git push origin HEAD --force
gitの--hardリセット
--forceGitのプッシュ原点HEAD コミットの一つ以上がタグ付けされている場合は、
の、最初のタグ(複数可)を削除します。のそれ以外の場合はタグ付けされたコミットが除去されない。
あなたがリモートリポジトリにプッシュしていないと仮定すると、リポジトリを再クローンができます。これは、数回の選択の私の方法であった。