Rollback旧Gitコミット公開レポ
-
18-09-2019 - |
質問
かつのおかげで、特定のコミットgit?
最良の答えを誰かがった利用 git revert
Xの時代まで、目標値に到達するコミットする
しましょうと言いたいのに帰属するコミットするの20を犯しいで20倍。
あくるのか?
利用できないリセットがこのリポジトリで公開します。
解決
これを試してください:
git checkout [revision] .
[revision]
(たとえば:12345678901234567890123456789012345678ab
)コミットハッシュです。
、最後に非常に重要な.
を忘れないでください。これは、ツリー全体に変更を適用します。あなたはgitのプロジェクトのルートでこのコマンドを実行する必要があります。あなたが任意のサブディレクトリにある場合、このコマンドは、現在のディレクトリ内のファイルを変更します。次に、コミット、あなたは良いことがあります。
は、
により、これを元に戻すことができますgit reset --hard
それは、作業ディレクトリとステージングエリアからすべての変更を削除します。
他のヒント
具体的にロールバックするにコミットします:
git reset --hard commit_sha
10回のコミットをバックロールバックするには:
git reset --hard HEAD~10
あなたは歴史を書き換えたくない場合は、次の記事でとして「Gitの元に戻す」を使用することができます。
まあ、私はあなたには、「ロールバック」によって何を意味するか、疑問があると思いますか?それは公共のだとあなたはそのままコミットの歴史を維持したいので、あなたがreset
ことができない場合は、あなただけのコミットの特定を反映するために、あなたの作業コピーをしたい意味ですか? git checkout
とコミットハッシュを使用します。
編集:ブランチを指定せずにgit checkout
を使用して、コメントで指摘されたように「ノーブランチ」の状態であなたを残します。ブランチにチェックアウト、または現在のブランチにチェックアウトするgit checkout <commit> -b <branchname>
するgit checkout <commit> .
を使用します。
元のポスター:
最良の答えを誰かがった利用
git revert
Xの時代まで を希望す。しましょうと言いたいのに帰属するコミットするの20を犯しい である20。
あくるのか?
利用できないリセットがこのレポ-レートが公開。
必要がないために利用 git revert
Xます。 git revert
受け入れ可能で
コミット範囲の引数は、どうするために必要な一度ご使用いただければこのに戻すには範囲を
のを設定します。 例えば、たい場合に戻すには最後の20犯:
git revert --no-edit HEAD~20..
のコミット範囲 HEAD~20..
は HEAD~20..HEAD
, を開示することで、開始から20th 親会社のヘッドをミッ戻すべての犯後までとなってヘッド"
ることに戻りますが、過去20犯, と仮定しない統合 を設定します。 がある場合併する為の、元に戻すことはできませんそのすべてを一つのコマンドにする必要がありますに帰属しま
git revert -m 1 <merge-commit>
また、私は試験用範囲 git revert
gitを使用版1.9.0. 使用している場合は、古いバージョンのgitを使用範囲 git revert
はうまく動かない場合もあります。
この場合、 git revert
は優先 git checkout
.
この この答えというの利用 git checkout
, git revert
実際に削除ファイルに追加された任意の犯ん
帰, で、この方法に戻すの範囲を修正します。
文書
ステップ1: フェッチの一覧を犯:
git log
しょリストのようなこの例:
[Comp:Folder User$ git log
commit 54b11d42e12dc6e9f070a8b5095a4492216d5320
Author: author <author@gmail.com>
Date: Fri Jul 8 23:42:22 2016 +0300
This is last commit message
commit fd6cb176297acca4dbc69d15d6b7f78a2463482f
Author: author <author@gmail.com>
Date: Fri Jun 24 20:20:24 2016 +0300
This is previous commit message
commit ab0de062136da650ffc27cfb57febac8efb84b8d
Author: author <author@gmail.com>
Date: Thu Jun 23 00:41:55 2016 +0300
This is previous previous commit message
...
ステップ2: コピーに必要なコミットのハッシュペーストしたアウト:
git checkout fd6cb176297acca4dbc69d15d6b7f78a2463482f
ることはありません。
git read-tree -um @ $commit_to_revert_to
それを行います。それは "Gitのチェックアウト" が、HEADを更新せずにいます。
は、
と同じ効果を得ることができますgit checkout $commit_to_revert_to
git reset --soft @{1}
あなたが糸引き利便性を好む場合は、コマンドを一緒ます。
これらが所望の状態でごworktreeとインデックスであなたを残して、あなただけの終了するgit commit
ことができます。
私が変更さわからないんだけど、私はオプション--detach
せずにコミット特定をチェックアウトすることができません。私のために働いた完全なコマンドは:
git checkout --detach [commit hash]
私は自分のローカルブランチをチェックアウトしなければならなかったデタッチ状態から戻って取得するには、次のgit checkout master
あなたがプロジェクトに一日かそこら後に仕事しましょう。あなたは一つの特徴は、まだあなたにエラーを与えているに気づきます。しかし、あなたは、エラーの原因となった変更かわかりません。だから、以前の作業コミットを魚に持っています。具体的に戻すにコミットします:
git checkout 8a0fe5191b7dfc6a81833bfb61220d7204e6b0a9 .
は、[OK]を、ので、あなたのための作品をコミットしています。これ以上のエラーがありません。あなたは、問題を正確に指摘しました。今、あなたがコミット戻って最新に行くことができます:
git checkout 792d9294f652d753514dc2033a04d742decb82a5 .
そして、それは(私の場合には、私は例Gemfile.lockを使用)、エラーの原因となった前に、特定のファイルをチェックアウト:
git checkout 8a0fe5191b7dfc6a81833bfb61220d7204e6b0a9 -- /projects/myproject/Gemfile.lock
そして、これはあなたが後になるまでエラーを実現することなくコミットで作成されたエラーを処理する一つの方法です。
HEAD切り離さモード?
をしたいですあなたは戸建てHEAD(あなたが台無しに何もできないという意味)でコミット一定にX時間をロールバックしたい場合は、すべての手段によって、以下を使用します:
(あなたが戻って行くことを望むどのように多くのコミットとXを置き換える)
git checkout HEAD~X
すなわち。戻って1コミットます:
git checkout HEAD~1
ここ
これを行うには例があります cd /yourprojects/project-acme
git checkout efc11170c78 .
きのコミットidに関連コミットをする為のGitHub/BitBucket/Gitlab.その非常に簡単で、dirコミットid 5889575 その場合に戻りたいこのコードでその要求にタイプ
git checkout 5889575 .
これまでにその時点コード.