Git では、差分比較コマンドとバージョン ロールバック コマンドを使用して、ファイル間の差異を表示し、以前のバージョンにロールバックできます。
これらの操作について簡単に説明します。
差分比較:git diff
コマンドを使用して、ワークスペース内のファイルとステージング領域またはコミットされたバージョンのファイル間の違いを比較できます。次のコマンドを実行して、ファイルの違いを表示します。
git diff
これにより、ワークスペースとステージング領域の違いが表示されます。ワークスペースとコミットされた最新バージョンとの違いを比較したい場合は、パラメーターを追加できます。
git diff HEAD
このコマンドは、ワークスペースと HEAD (最新のコミット) の差分を表示します。
バージョンのロールバック: 以前のバージョンにロールバックする必要がある場合は、git checkout
またはgit reset
コマンドを使用してそれを実現できます。
このコマンドを使用してgit checkout
、指定したバージョンのファイル コンテンツをワークスペースに復元します。次のコマンドを実行します。
git checkout <commit号> <文件名>
<コミット番号> は、フォールバック先の特定のコミットの識別子であり、 git log コマンドを通じて表示できます。<filename> はロールバックするファイル名です。
git replace コマンドを使用して、特定の送信とその後のすべての送信を取り消し、コード ベースを指定されたバージョンに復元します。次のコマンドを実行します。
git reset <commit号>
<コミット番号> は、ロールバック先の特定のコミットの識別子です。
注: git replace コマンドを使用してバージョンをロールバックすると、取り消された送信とその後の送信レコードが削除され、復元することはできません。パブリック コード ベースへの不可逆的な影響を避けるために、このコマンドはローカル開発環境で使用することをお勧めします。
補足: バージョンのロールバック操作を実行する前に、現在のバージョンの安定した状態を維持するために、ブランチを作成し、このブランチに切り替えることを推奨します。次のコマンドを使用してブランチを作成し、切り替えることができます。
git branch <分支名>
git checkout <分支名>
こうすることで、メイン ブランチや進行中の他の作業に影響を与えることなく、新しいブランチでバージョン ロールバック操作を実行できます。
06. GITローカル操作 - 差分比較
目標
使用 git diff来比较暂存区、本地库与工作区的内容
コンテンツ
vim コマンドを使用して readme.txt ファイルを編集し、コードの 2 行目を追加し、wq を使用して終了します。
-
ワークスペースのステージング領域の比較
命令:git diff readme.txt
-
ワークスペースのローカル リポジトリの比較
命令:git diff HEAD readme.txt
-
ステージングエリア内のローカルライブラリの比較
命令:git diff --cached readme.txt
ここではキャッシュはローカル ライブラリと変わらないため、コンテンツはありません。
- 補足:ステージングエリアとローカル倉庫への2回目の提出は可能です
まとめ
-
ワークスペースとステージング領域の比較
git diff ファイル名
-
ワークスペースとネイティブ ライブラリの比較
git diff head ファイル名
-
ステージングエリアとローカルライブラリを比較するとどうなるか
git diff --キャッシュされたファイル名
07. GIT ローカル操作 - バージョンのロールバック
目標
掌握 git log、git reflog、git reset 作用
コンテンツ
ステージング領域からローカル ウェアハウスに送信すると、現在送信されたバージョンに問題があることがわかりました。指定したバージョンにロールバックしたい場合は、どうすればよいでしょうか?
vim コマンドを使用して readme.txt を編集し、「コードの 3 行目です」を追加します。
命令:git add readme.txt 提交到暂存区
命令:git commit -m '第三次提交' 提交到本地仓库
git が提供する view log コマンドを使用して、送信されたログを表示できます。
命令:git log 查看当前提交日志
これまでにローカル倉庫で 3 回提出したことがわかります。つまり、3 つの異なるバージョンが存在します。その中で、最新バージョンにはマークが付いています: HEAD-> master これは、現在のブランチをマークする現在のバージョンの場所です 現在の場所が表示されない場合は、次のコマンドを使用して表示できます。
命令:git log --decorate 查看当前提交日志,且显示当前分支的当前版本所在位置
ログの各バージョンの前に、乱数の長い文字列があります: b44a10787c2b2bcc7ceb9c39cf06309065518d4b, これは各送信のコミット IDであり、SHA1 アルゴリズムを通じて取得された値です。Git はこの一意の ID を使用して各送信を区別します。
-
以前のバージョンにロールバックする
命令:git reset --hard HEAD^ 回归到上一个版本,Git通过HEAD来判断当前所在的版本位置。那么上一个版本,就用HEAD^标示,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
現時点では、ログ git log を確認できます。
バージョンが 2 つしかないことがわかりました。ファイルの内容を確認してみましょう
-
指定されたバージョンにフォールバックします
まず使用します
命令: git reflog 查看所有操作
見つかったら、次のコマンドを使用して、指定したバージョンにロールバックできます。
命令:git reset --hard 版本号 回退到指定版本
3 回目のコミットに戻り、今回はファイルを調べます。
まとめ
-
現在のログを表示する方法
git log は現在の操作のみを確認できます
-
すべての操作ログを表示する方法
git reflog すべての操作ログを表示する
-
以前のバージョンに戻す方法
gitリセット --ハードヘッド^
-
指定したバージョンにロールバックする方法
git restart --ハードバージョン番号