研究ノートは--- Gitの変更を元に戻します

当然、あなたはミスをすることはありません。しかし、今2午前中に、あなたは、あなたが仕事のレポートをキャッチしているreadme.txt行を追加します。

$猫のreadme.txt 
Gitは分散型バージョン管理システムです。
GitはGPLの下で配布されるフリーソフトウェアです。
Gitは、ステージと呼ばれる可変率を有しています。
Gitは、ファイルの変更を追跡します。
私の愚かなボスはまだSVNを好みます。

  

あなたはコーヒーのカップが、あなたは突然発見した役割果たして提出する準備ができている前にstupid boss、あなたが今月のボーナスを失わせることを!

エラーが非常にタイムリー見つかったので、あなたは簡単にそれを修正することができます。手動で状態のバージョンにファイルをリストアし、最後の行を削除することができます。もしgit status見て:

$ gitの状態
分岐マスターで
コミットの上演ていない変更:
  (使用コミットがどうなるかを更新するために、「gitのは、<ファイル> ...追加」を)
  (「Gitチェックアウト- <ファイル> ...」を使用する作業の変更を破棄しますディレクトリ)

	修正:README.TXT 

変更がコミットするために添加していないが(「gitのは、-aをコミット」「gitの追加」および/または使用)

  

あなたは、Gitはあなたを教えてくれる、見つけることができgit checkout -- fileますが、ワークスペースを変更するに廃棄することができます。

$ git checkout -- readme.txt

コマンドがgit checkout -- readme.txt入れ、ということを意味しreadme.txt、ワークスペースを変更取り消されたすべての文書を、2つのケースがあります。

一つは、readme.txt一時記憶領域に配置され、そして今、背中とまったく同じ状態のリポジトリに変更を元に戻すされていない変更から。

一つは、readme.txtポストは、ステージングエリアに追加されている修飾されており、現在のステージングエリア後の状態に加えた変更を元に戻すに戻ります。

要するに、それは戻って、最後にファイルを作ることですgit commitgit addの状態。

今、見てreadme.txtファイルの内容:

$猫のreadme.txt 
Gitは分散型バージョン管理システムです。
GitはGPLの下で配布されるフリーソフトウェアです。
Gitは、ステージと呼ばれる可変率を有しています。
Gitは、ファイルの変更を追跡します。

  

案の定、ファイルの回復の内容。

git checkout -- fileコマンドは--、非常に重要であるではありません--、それはコマンドが「別のブランチに切り替えて、」私たちは、後に枝管理に再び会う予定git checkoutのコマンド。

 

今仮定3:00である、あなたは、いくつかのナンセンスを書いた、だけでなく、git addステージング領域へ:

$猫のreadme.txt 
Gitは分散型バージョン管理システムです。
GitはGPLの下で配布されるフリーソフトウェアです。
Gitは、ステージと呼ばれる可変率を有しています。
Gitは、ファイルの変更を追跡します。
私の愚かなボスはまだSVNを好みます。

$ gitのは、README.TXTを追加します

  

幸いなことに、でcommit前に、あなたが問題を見つけます。git status見て、ちょうどステージング領域に変更を加える、まだ提出されていません。

$ gitの状態
分岐マスターオン
:コミットする変更
  (unstageする「GitのリセットHEAD <ファイル> ...」を使用)

	修正:readme.txtを参照して

  

Gitは、コマンドがあることを語ってくれたgit reset HEAD <file>バックワークスペースに、失効(unstage)のオフステージング領域を変更することができます。

$ gitのリセットHEADのreadme.txt 
リセット後Unstaged変更:
M README.TXT

  

git resetコマンドは、いずれかのロールバックバージョン、また戻って作業領域に落下する一時領域を変更することができます。私たちが使用している場合HEAD、それは最新のバージョンを示します。

そしてgit status今、面積はクリーンワークスペースの編集であるステージング、見て:

$ gitの状態
分岐マスターで
コミットの上演ていない変更:
  (使用コミットがどうなるかを更新するために、「gitのは、<ファイル> ...追加」を)
  (「Gitチェックアウト- <ファイル> ...」を使用する作業の変更を破棄しますディレクトリ)

	修正:README.TXT

  

それは、ワークスペースを変更するに廃棄する方法を覚えていますか?

$ gitのチェックアウト-のreadme.txt 

$ gitの状態
分岐マスターに
コミットすることは何も、きれいな作業ツリー

  

最終的には静かな全世界!

 

さて、あなたはそれを行う方法、また、リポジトリに提出ゼロから何かの間違いをしないだけと仮定しますか?覚えているバージョンのロールバック 1はいますか?あなたは、以前のバージョンにフォールバックすることができます。しかし、これはつまり、あなたがリモートに自分のローカルリポジトリをプッシュする必要はありません、条件付きです。Gitは分散型バージョン管理システムです覚えていますか?あなたは一度私たちは、リモートリポジトリを戻ってくるstupid bossリモートリポジトリにプッシュを提出あなたは本当に悲惨な、......

概要

彼は要約時間に行ってきました。

シナリオ1:あなたは、ファイル混沌ワークスペースの内容を変更するコマンドを使用して、ワークスペースを変更する直接破棄しますgit checkout -- file

シナリオ2:あなたは、ファイルワークスペースの内容を混乱もステージングエリアに追加し、2つの段階で変更を破棄し、最初のステップのコマンドだけでなく、変更git reset HEAD <file>、シーン1に戻って、シーンによって第2工程を1つの操作。

シナリオ3:あなたは、あなたがこの投稿を撤回したい、リポジトリを参照の不適切な変更を提出したバージョンのロールバック 1を、しかし、前提は、リモートリポジトリにプッシュされていません。

おすすめ

転載: www.cnblogs.com/saryli/p/11368003.html