2012-05-06 8 views
0

私はコードベースを壊しました。最後のコミットにロールバックしたいのですが、最初に壊れたバージョンを保存したいので、後で分析することができます。この状況ではどのようなコースが最適ですか?Git保存と復旧

(私は実際にちょうどそれは長い1日だったいくつかの手holding-を探して、何かを試していませんし、私はこれを台無しように感じることはありません。)

答えて

5

することができますいくつかのものがありますdo:

おそらく最も良いことは、この壊れたコードをコミットする別のブランチを作成し、そのブランチにコミットすることです。

git checkout -b my-broken-branch # creates a new branch called my-broken-branch 
# commit as usual... 
git checkout - # return to the last branch you were on 

あなたは、戻ってそのコードに行きたい

git checkout my-broken-branchがそのブランチに切り替えるために行います。あなたが行うことができます


迅速な事はあなたの作業内容を保存しますgit stash、ですし、後でそれを再適用することができます

git stash 

あなたが戻ってそれらの変更を取得したい場合は、あなたがgit stash applyを行うことができます最後に行った変更を適用します(ただし、隠しリストに情報を保存します)。

コメントに記載されているように、git stash popを行うこともできます。これにより、最小限の変更が適用され、スティッシュリストから削除されます。

stashingでもっと多くのことができます。なぜなら、複数のstashを行い、それらを選択的に適用できるからです。あなたはスタッシュ上の深い多くを取得したいとき

はここで、より詳細な説明です:http://gitready.com/beginner/2009/01/10/stashing-your-changes.html

+0

注通常、 'Gitのスタッシュにリセットする前にちょうどレポにそれをコミットし、

git reset --hard <tag/branch/commit id> 

をあなたの現在のバージョンを保存するには: –

+0

@AndrewMarshall - true、true - これはすでにヤリンの情報過負荷になっている場合、どれだけの情報を捨てなければならないか、あまりにもわかりませんでした。 – birryree

+0

理解しやすい。また、あなたは答えがあるので、あなたのコメントを削除することもできます。 (ああ、 'git checkout-'はおそらく 'git checkout master'よりも優れています)、 –

1

あなたがコミットまたはこの壊れたコードで新しいブランチを行うことができます。その後、作業コードをチェックアウトします。

git log -1 

コミット名(shaコード - 最初の7文字にすることができます)をメモしてください。

git checkout -b broken 
git add -A 
git commit -m "Broken code" 

戻るあなたのブランチに壊れたコードのための新しいブランチを作成し、作業コードチェックアウト :

git checkout featureX 
git checkout abc1234 

これを行うもう一つの方法は、あなたの変更を隠しておくと、あなたのコードをチェックアウトすることです。その後、ファイルをポップして作業することができます。あなたは古いもの

+0

コミットシャーを使用しないのはなぜですか? 'git checkout -'は前のブランチをチェックアウトします。 –

+0

2番目のブロックが表示されたら、ブランチのチェックアウトとコミットの2番目のチェックアウト(文字と数字の短いシーケンス)が表示されます。 – rcdmk

2

は、コミットcertianにGitのレポをリセットしますpop()は、stashのリストからstashを削除するので、apply(apply)よりも便利です。これにより、隠ぺい指数が肥大化するのを防ぐことが容易になります。
+2

破壊的なコマンドを与えた後、コマンドを与えた後の作業*を保存するための指示は賢明ではないようです。 –

関連する問題