研究ノート--- Gitのバージョンの復帰

 

 

我々は正常に送信し、readme.txtファイルを追加して、我々は次のように変更し、readme.txtファイルを修正し続けるように、今、作業を継続する時間ですしています。

Gitは、分散バージョン管理システムです。
Gitはフリーソフトウェアです。

さて、実行git status結果を確認するためのコマンドを:

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

	修正:README.TXT 

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

git statusコマンドは、私たちは常にリポジトリの現在の状態を把握することができ、上記のコマンドの出力を教えてくれる、readme.txt変更はなく、まだ送信を修正する準備ができてきました。

Gitは、私たちに教えますがreadme.txt修正されていますが、我々は具体的にどのようなコンテンツへの変更を見ることができれば、自然は良いです。

そこで、我々は、使用する必要がありますgit diff表示するには、このコマンドを:

$ gitの差分のreadme.txt 
差分--git A / Bのreadme.txt / readme.txtを
インデックス46d49bf..9247db6 100644 
--- A / readme.txtを
+++ B / readme.txtを
@@ -1,2 +1 、2 @@ 
-Gitは、バージョン管理システムです。
+ Gitは、分散バージョン管理システムです。
 Gitはフリーソフトウェアです。

 

git diff違いを見ている名前が示すように、表示形式が一般的なUNIX diff形式で、あなたは上記のコマンドの出力から見ることができ、我々は最初の行追加したdistributed単語を。

知るためにreadme.txt変更が行われたものを後にして、より多くの倉庫心配に提出し、変更をコミットし、新しい文書が同じ2つのステップで提出し、最初のステップですgit add

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

 また、出力なし。第二段階ではgit commit、我々は、実行する前にgit status倉庫の現在の状態を見て:

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

	修正:readme.txtを参照して

git status変更が含まれるように提出されることを教えてくれるreadme.txt次のステップを、あなたが安全に提出することができます:

$ gitのは、 "分散追加" -mコミット
[マスターe475afc]を分散追加
 1つのファイルは、1つの挿入(+)、1件の削除を変更( - )

提出されたら、私たちはその後、git statusリポジトリの現在の状態を確認するためのコマンド:

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

Gitはある(作業ツリークリーン)現在提出する必要があり、作業ディレクトリがクリーンであることではないモディファイを教えて。

概要

  • 作業領域の状況に遅れないようにするには、使用してgit statusコマンドを。

  • 場合git statusあなたとファイルが、変更されている必要があり語ったgit diff変更内容を表示することができます。

 

バージョンロールバック

今、あなたはファイルを変更することを学んだこと、そして今、Gitのリポジトリに変更し、再度練習し、次のようにreadme.txtファイルを変更します。

Gitは、分散バージョン管理システムです。
GitはGPLの下で配布されるフリーソフトウェアです。

 そして、コミットしてみてください:

Gitはreadme.txtを追加$ 
$ gitのは-m "はGPLを追加し、"コミット
[マスター1094adb] GPL追加
 1つのファイルには、1つの挿入(+)を変更し、1つの削除( - )

このように、あなたは常にRPGのゲームをプレイするよう、各ゲームが自動的に過去のオフではないいくつかの場合、あなたも読むことを選択することができ、パスを通じて状態を保存し、ファイルに変更を加え、その後、リポジトリへの変更をコミットし続けます離陸状態の前に。ボスと戦うために障害が発生した場合には、あなたが最も近い場所から再起動することができるように時々 、ボスを再生する前に、あなたは、手動で保存されます。Gitは、あなたがある程度ファイルの変更を感じるたびに、同じである「スナップショットを保存」することができます。このスナップショットは、Gitの中で呼ばれていますcommitあなたは混沌の変更、または誤って削除したファイルを提出するだけでなく、最近からいったんcommit回復した後、むしろ失われた仕事の数ヶ月の結果よりも、作業を続けます。

今、私たちは見てreadme.txt倉庫に提出されたGitリポジトリの複数のバージョンが存在するファイル:

版本1:readmeファイルを書きました

Gitはバージョン管理システムです。
Gitはフリーソフトウェアです。

  

バージョン2:追加の配布

Gitは、分散バージョン管理システムです。
Gitはフリーソフトウェアです。

  

バージョン3:GPLを追加

Gitは、分散バージョン管理システムです。
GitはGPLの下で配布されるフリーソフトウェアです。

もちろん、実際には、我々は、各ファイルの数千行が何を変更した、またはバージョン管理システムを行う方法を私の心覚えているでしょう。バージョン管理システムは、コマンド履歴をGitの中で、我々が使用する、私たちに伝えることができている必要がありますgit logViewコマンドを:

git logコマンドは、我々は最近、3提出を見ることができる最も遠いから最新のコミットログを表示するためにappend GPL、最後の時間をadd distributed、最初の1でしたwrote a readme file

出力あまりにも多くの情報は、まばゆいばかりの表示された場合は、追加しようとすることができます--pretty=onelineパラメータを:

 

$ gitの=としてoneline --prettyログイン
GPLを追加- 1094adb7b9b3807259d8cb349e7df1d4d6477073(>マスターHEAD)
の分散を追加e475afc93c209a690c39c13a46716e8fa000c366 
eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0は、readmeファイルを書きました

必要なヒントが同様の長いリストが見ていることである1094adb...であるcommit id(バージョン番号)、およびSVN、Gitのと同じではありませんがcommit id1,2,3ない......増分数が、非常に大規模から計算SHA1デジタル、16進数、あなたが見commit idて、私は確かにあなたの対象に好きではありません。なぜcommit id我々はそれを表す数字のような文字列を使用する必要がありますか?Gitは分散型バージョン管理システムであるため、誰もが、バージョン番号として...... 1,2,3を使用している場合、我々は同じリポジトリに仕事に戻って人々を勉強しなければならない、それが紛争に確かです。

それぞれの新しいバージョンを提出し、実際には、Gitは自動的にそれらが一緒にタイムラインをつなぎ入れます。あなたがGitの履歴を表示する視覚化ツールを使用している場合は、我々はより明確に歴史のタイムラインの提出を見ることができます:

まず第一に、Gitはどのバージョンの現在のバージョンを知っている必要があり、Gitの中で、使用がHEAD提出した、最新である、現在のバージョンを表し、1094adb...(私の提出IDを書き留めて、あなたは確かに同じではありません)、以前のバージョンがありHEAD^、以前のバージョンでありHEAD^^、もちろん、100のライトアップ100バージョンは^そう書かれ、カウントすることが容易ですHEAD~100

今、私たちは、現在のバージョンが欲しいappend GPLバック以前のバージョンに落下しadd distributed、使用することができ、git resetコマンドを:

$ gitのは--hard HEAD ^リセット
HEADが、今でe475afc分散追加することです

見てくださいreadme.txtコンテンツはバージョンではありませんadd distributed

$猫のreadme.txt 
Gitは分散型バージョン管理システムです。
Gitはフリーソフトウェアです。

 

案の定、それが復元されました。

あなたは、以前のバージョンにフォールバックし続けることができwrote a readme fileますが、ちょっと待って、その後、我々はgit log、リポジトリの現在の状態を見てみましょう。

$ gitのログ
e475afc93c209a690c39c13a46716e8fa000c366コミット(HEADを- >マスター)
著者:マイケル・遼<[email protected]> 
日付:金5月18日21時03分36秒2018 0800 

    分散アドオン

eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0コミット
著者:マイケル遼<[email protected]> 
日付:5月18日20時59分18秒2018 0800金は、

    readmeファイルを書きました

  

最新バージョンappend GPLを参照してきました!21世紀は19世紀に来たから、あなたはタイムマシンのように座って、すでに戻って戻りたい、腫れですか?

道それは限り、上記のコマンドラインウィンドウが無効になっていないとして、あなたがフォローアップし、検索や、ああ検索、その発見することができ、まだそこにあるappend GPLcommit id市を1094adb...、ので、彼は将来のバージョンを指定するために戻すことができます。

$ gitの--hard 1094aのリセット
GPLを追加83b0afeで今HEADをされます

バージョン番号は、全体、その上に最初の数を記述する必要はありません、Gitは自動的に探します。もちろん、Gitは複数のバージョン番号を見つける可能性があるため、あなたがあるかを判断することができない、唯一の最初の1か2を書きません。

その後、慎重に見てreadme.txt内容:

$猫のreadme.txt 
Gitは分散型バージョン管理システムです。
GitはGPLの下で配布されるフリーソフトウェアです。

  

案の定、背面I胡閑山。

Gitは内部の現在のバージョンにポイントがあるので、Gitのバージョンのロールバック速度は、非常に高速であるHEADあなたは、時間のバージョンをロールバックポインタが、Gitは単にHEADポイントからですappend GPL

 

┌────┐
│HEAD│
└────┘
   │
   └──> ○ append GPL
        │
        ○ add distributed
        │
        ○ wrote a readme file

を指すようにadd distributed

┌────┐
│HEAD│
└────┘
   │
   │    ○ append GPL
   │    │
   └──> ○ add distributed
        │
        ○ wrote a readme file

その後、方法は、ドキュメントワークスペースを更新します。だから、あなたが得るHEADどのバージョン番号、あなたがポジショニングの現在のバージョンを入れている点。

さて、あなたが戻ってバージョンにフォール、コンピュータの電源を切り、あなたは次の日の朝、それを後悔し、実行する方法の新バージョンに戻すしたいと思いますか?新しいバージョンを見つけることができませんcommit id行う方法を?

Gitのでは、それは食べることができ後悔常にあります。あなたが使用するときに$ git reset --hard HEAD^バックに後退add distributedリリース時に戻りたいappend GPLあなたが見つけなければならない、append GPLコミットIDを。Gitは、コマンド提供しgit reflog、あなたのすべてのコマンドを記録しました:

$ gitのREFLOG 
e475afcのHEAD @ {1}:リセット:HEADに移動^ 
1094adb(HEAD - >マスタ)は、ヘッド@ {2}:コミット:GPL追加
{3} e475afcヘッド@を:コミット:分散追加
{4} eaadf4eヘッド@を:(初期)のコミット:readmeファイルを書きました

 最後に、我々は、出力から見ることができ、ため息append GPLidは市コミット1094adb、今、あなたが戻って未来にタイムマシンに乗ることができます。

概要

要約すると:

  • HEAD監督バージョンは、現在のバージョンは、それゆえ、Gitはコマンドを使用し、歴史のバージョン間のシャトルに私たちを可能にされますgit reset --hard commit_id

  • シャトルの前に、とgit logコミットの歴史フォールバックするバージョンを判断するために、表示することができます。

  • で、未来に戻るにはgit reflog、あなたが将来のバージョンに戻したいかを決定するために、viewコマンド履歴。

 

おすすめ

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