git 命令行(一)-版本回退


1. 版本回退

在實際工作中,我們腦子里怎么可能記得一個幾千行的文件每次都改了什么內容,不然要版本控制系統干什么。版本控制系統肯定有某個命令可以告訴我們歷史記錄,在Git中,我們用 git log 命令查看:

 

退出git log命令行是: q

Git提供了一個命令 git reflog 用來記錄你的每一次命令:

 

如果我們要實現回退, Git必須知道當前版本是哪個版本,在Git中,用 HEAD 表示當前版本,也就是最新的提交009befc...711741(注意我的提交ID和你的肯定不一樣),上一個版本就是HEAD^ ,上上一個版本就是 HEAD^^ ,當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100

現在,我們要把當前版本回退到上一個版本,就可以使用 git reset 命令:

 

 

我們也可以是使用 commit_id 來在不同版本之間回退

使用 git commit命令將文件添加到本地倉庫,要撤銷文件修改,可以使用如下命令:

git reset --hard commit_id

 

2. 版本庫(Repository)

工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫。

Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD

 

前面講了我們把文件往Git版本庫里添加的時候,是分兩步執行的:

第一步是用 git add 把文件添加進去,實際上就是把文件修改添加到暫存區;

第二步是用 git commit 提交更改,實際上就是把暫存區的所有內容提交到當前分支。

 2. 撤銷修改

    1. 在Git中,git checkout -- file 可以丟棄工作區的修改

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作區的修改全部撤銷,這里有兩種情況:

一種是readme.txt自修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是readme.txt已經添加到暫存區后,又作了修改,現在,撤銷修改就回到添加到暫存區后的狀態。

總之,就是讓這個文件回到最近一次 git commit  git add 時的狀態。

git checkout -- file 命令中的 -- 很重要,沒有 --,就變成了“切換到另一個分支”的命令,我們在后面的分支管理中會再次遇到git checkout命令。

2. 如果我們修改了文件還 git add 到暫存區了,慶幸的是,在commit之前,你發現了這個問題。用git status查看一下,修改只是添加到了暫存區,還沒有提交:

Git同樣告訴我們,用命令 git reset HEAD file即撤銷git add 命令修改的文件可以把暫存區的修改撤銷掉(unstage),重新放回工作區:

   git reset命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用HEAD時,表示最新的版本。再用git status查看一下,現在暫存區是干凈的,工作區有修改:然后按照第一步的方法回退。總結如下:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM