参考リンクします。https://www.liaoxuefeng.com/wiki/896043488029600/897884457270432
トラックと管理ではなく、ファイルよりも、修正することですので、Gitは他のバージョン管理システムよりも優れて設計された理由は、Gitはあります。
たとえば、あなたは、変更された行を追加した行を削除し、一部を削除し、修正され、いくつかの文字を変更し、変更し、いくつかの追加、変更された、あるいは新しいファイルを作成している、も考慮されています変更。
エクササイズ(理解する経営者は、ファイルが変更されていません)
運動結論:各変更、いない場合はgit add
、ステージングエリアに、それが追加されることはありませんcommit
中。
ファイルが二回改訂され、その後、第1の変形例を追加し、我々はそれがリポジトリに文書を提出することを知っている(第2の時間を追加しない)憲法修正第2条がコミットにした後、最初にコミットし、その後追加する必要があります私たちは、この演習の私たちのタスクは、Gitの管理は、第2の変形例を追加しませんコミット、2番目の変更は追加されません、ファイルではなく、変更することで区別することがあることを思い出してください。
最初のステップは、そのような単一の行を追加するように、README.TXT変更を行います。
その後、追加します。
$ gitのは、readme.txtを追加 $ gitのステータス 支店マスターの# コミットする#の変更を: #(unstageに"GitのリセットHEAD <ファイル> ..."を使用する) #1 #は変更:README.TXT #
その後、README.TXTを変更します。
提出:
中国は二重引用符で囲む必要がありλのgitの-mコミット"Gitのtrackes(トラッカー)の変化" [マスター22ccc69] gitのtrackes(トラッカー)の変更 1つのファイルは、2個の挿入(+)に変更、削除1。。( - )
そして、(提出されていない第2の改正でなければなりません)提出のステータスを表示
λのgitの状態 分岐マスターで コミットの上演ていない変更: (使用がコミットされるかを更新するために、「gitのは... <ファイル>を追加」) (使用「Gitチェックアウト- <ファイル> ...」作業中に変更を破棄しますディレクトリ) 修正:README.TXT 変更がコミットするために添加していないが(「gitのは、-aをコミット」「gitの追加」および/または使用)
理由:
最初のリビジョン- > git add
- >憲法修正第2条- > git commit
あなたは、私たちは、Gitの管理は、使用時に変更さについて話しましたが、参照git add
コマンドを、ステージング領域に配置されたワークスペースの第1の変形例では、提出する準備ができて、しかし、作業領域の第二の改正ではありませんので、記憶領域に入れてgit commit
最初の修正である、提出ステージングエリアを変更する責任のみが送信され、第2の変形例に提出されることはありません。
で、提出されたら、git diff HEAD -- readme.txt
最新バージョンの内部のワークスペースとリポジトリとの違いを確認するためのコマンド:
λGitの差分HEAD - README.TXT 差分--gitのA / README.TXT B / README.TXT インデックスdb28b2c..9a8b341 100644 --- A / README.TXT +++ B / README.TXT @@ -1、 4 +1,4 @@ Gitは、分散バージョン管理システムです。 GitはGPLの下で配布されるフリーソフトウェアです。 Gitは、ステージと呼ばれる可変率を有しています。 -Gitは、変更を追跡します。 \ファイルの末尾に改行 + Gitは、ファイルの変更を追跡しません。 \ファイルの末尾に改行ません
それの第2の変形例を提出する方法は?
どのように第二修正を提出していますか?あなたが続けることができgit add
、再びgit commit
、あなたはの第1変形例に提出心配することはできませんgit add
第二変更、その後git commit
、合併後に改訂された二回を提出することと等価です:
最初のリビジョン- > git add
- >憲法修正第2条- > git add
- > git commit
変更の取り消し
シナリオ1:あなたは、ファイル混沌ワークスペースの内容を変更するコマンドを使用して、ワークスペースを変更する直接破棄しますgit checkout -- file
。
シナリオ2:あなたは、ファイルワークスペースの内容を混乱もステージングエリアに追加し、2つの段階で変更を破棄し、最初のステップのコマンドだけでなく、変更git reset HEAD <file>
、シーン1に戻って、シーンによって第2工程を1つの操作。
シナリオ3:あなたは、あなたがこの投稿を撤回したい、リポジトリを参照の不適切な変更を提出したバージョンのロールバック 1を、しかし、前提は、リモートリポジトリにプッシュされていません。
参考リンクします。https://www.liaoxuefeng.com/wiki/896043488029600/897889638509536
改正1)作業領域の失効
マニュアルソリューションは、テキスト自体を編集することができます。手動状態のバージョンにファイルを復元
Gは、it checkout -- file
修飾されたワークスペースを廃棄することができます。
コマンドがgit checkout -- readme.txt
入れ、ということを意味しreadme.txt
、ワークスペースを変更取り消されたすべての文書を、2つのケースがあります。
一つは、あるreadme.txt
改変がいるから、一時的な記憶領域に配置されていない、今変更を元に戻すために戻ってリポジトリはまったく同じです状態。
一つは、あるreadme.txt
ポストは、ステージングエリアに追加されている、それが修正されており、現在、あなたが変更取り消しバックステージングエリアにに追加される状態を。
要するに、それはファイルを作ることです戻って、最後にgit commit
かgit add
の状態。
注意を払います
git checkout -- file
コマンドは--
、非常に重要であるではありません--
、それはコマンドが「別のブランチに切り替えて、」私たちは、後に枝管理に再び会う予定git checkout
のコマンド。
2)ステージング領域(ステージ)の変更取り消します
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の状態 分岐マスターに コミットすることは何も、きれいな作業ツリー
さて、あなたのものだけでなくミスを仮定するだけでなく、からリポジトリへのステージング領域の提出、どのようにそれを行うには?バージョンは、右をロールバック覚えていますか?あなたは、以前のバージョンにフォールバックすることができます。しかし、これはつまり、あなたがリモートに自分のローカルリポジトリをプッシュする必要はありません、条件付きです。Gitは分散型バージョン管理システムです覚えていますか?あなたは一度私たちは、リモートリポジトリを戻ってくるstupid boss
リモートリポジトリにプッシュを提出あなたは本当に悲惨な、......