天天看點

git 未添加檔案_Git(一):基礎操作

git 未添加檔案_Git(一):基礎操作

Git, 作為一款先進的版本控制工具,已經越來越多被大家才采用。但是由于其學習成本不小,阻攔的不少人,這裡推薦廖學峰老師的Git入門教程部落格

本部落格是對廖雪峰老師部落格中的Git指令的簡版概述,便于日常使用查詢

一、Git 入門

1.1 Git 安裝

從官網下載下傳安裝Git,然後執行下述指令看是否輸出版本資訊,驗證Git是否安裝成功,

git --version
           

1.2 Git 配置

配置使用者資訊, 分别執行下述指令,設定您的全局使用者名和郵箱資訊

git config --global user.name "Aaron Zhu"
git config --global user.email "[email protected]"
           

1.3 基本指令

  • 檢視目前目錄 Git 版本庫狀态
git status
           
  • 檢視各版本的 commit message 、 commit id
git log
           
  • 檢視操作Git 的指令曆史記錄. 版本回退後, git log指令顯示的是目前版本之前的版本資訊和commit id,無法檢視目前版本之後版本的commit message、commit id。故可以使用如下指令,檢視之後版本的commit id
git reflog
           
  • 比較工作區中檔案的修改變化
git diff a.java     // 比較 a.java 檔案的改動
           

二、版本庫基本操作

2.1 建立版本庫

在項目檔案夾(無須為空檔案夾)下,執行下述指令建立版本庫,執行成功後會在該目錄下建立一個.git的隐形檔案夾

git init        // 建立 Git 版本庫
           

2.2 添加新檔案、檔案修改

使用指令git add 将新檔案、檔案修改 添加到暫存區Stage, 注意,可反複多次使用,添加多個檔案、修改

git add main.c      // 添加 目前目錄下的 main.c 檔案
git add folder1/    // 添加 目前目錄下的 floder目錄中的所有檔案(包含子目錄檔案)
git add *             // 添加 目前目錄下的 所有檔案 (包含子目錄檔案)
           

2.3 檔案删除

删除檔案操作,對于Git而言,本質上也是一種檔案修改。是以在磁盤删除檔案後,可以使用git add指令添加删除檔案的修改到 Stage,同時Git也提供了下述指令用于添加 删除操作的檔案修改

git rm text.c       // 添加 text.c 檔案 删除操作
           

2.4 送出

對于 Stage 中的新檔案、檔案修改,使用指令git commit -m ,完成送出. Note: 版本的備注資訊 message一般不建議省略,否則後期很難追溯

git commit -m "Frist Commit"
           

三、檔案修改的撤銷

對于某些 檔案修改,我們可能并不想,甚至不能送出上去,那麼該如何撤銷呢?

檔案修改的撤銷,有兩種場景: -

工作區的檔案修改

,即,欲撤銷的檔案修改未 add到 暫存區Stage中 -

暫存區的檔案修改

,即,欲撤銷的檔案修改已經被 add到 暫存區Stage中

3.1 工作區中檔案修改的撤銷

工作區中檔案修改的撤銷 ,即,

此修改發生在工作區中,但是未被添加到暫存區Stage中

對于工作區的

未添加的檔案修改

, 可以使用下述指令進行撤銷。其撤銷結果有 2 種情況:

- 如果該

未添加的檔案修改

是在 git add 後修改的,即之前修改了若幹次加入Stage後 ,然後又發生了修改,則撤銷後,恢複為Stage中的版本 - 如果該

未添加的檔案修改

過程中,從未添加到Stage中,則恢複為版本庫中的版本

即:該檔案的撤銷結果,為最近一次 git add 或 git commit 的檔案狀态。即,

該狀态之後發生了任何未添加的修改都将被撤銷
git checkout  -- filename.c     // 丢棄 filename.c 檔案 在 工作區 的修改
           
Note:

該用法中(工作區中檔案修改的撤銷),指令中的

--

不可省略,否則意為 切換分支

3.2 暫存區中檔案修改的撤銷

暫存區中檔案修改的撤銷, 即,

檔案修改,被意外的add到了暫存區

使用下述指令,将暫存區的檔案修改,重新放回工作區,同時暫存區清空。執行後可以看到,檔案狀态為被修改,且未被添加到暫存區。此時,工作區中的檔案修改,你可以繼續編輯、添加、送出,也可以繼續撤銷,對于工作區中檔案修改的撤銷,請參考上文

git reset HEAD main.js      // 撤銷 暫存區中 main.js 檔案件修改,重新放回工作區,清空暫存區
           

四、版本復原

4.1 回退到之前

在Git中,用

HEAD

表示目前版本,也就是最新的送出版本。上一個版本就是

HEAD^

,上上一個版本就是

HEAD^^

,以此類推……當然往上100個版本寫100個^比較容易數不過來,是以寫成HEAD~100

git reset 指令 回退到之前的版本

git reset --hard HEAD^     // 回退到上一個版本
git reset --hard HEAD^^   // 回退到上一個版本
git reset --hard xxxx         // xxxx 為之前版本的commit id的前幾位
           

4.2 回退到之後

代碼回退到之前的版本後,如果想繼續回退到之後的版本,則無法使用上文HEAD辨別回退到未來的版本,但可以使用commit id的方法進行回退

git reset --hard commitId  // 回退到之後的 commit id 版本
git reset --hard 1c23bc    // 回退到 commit id 為 1c23bc ... xxxx 的版本;commit id 數字串較長,一般取前6位即可區分,如果不夠,可以再多取幾位
           
  • 如果git bash視窗未關閉,可以通過視窗記錄,找到并使用之後版本的 commit id進行回退
  • 如果git bash視窗重新打開了,也可以使用下述指令找到你 操作Git 的指令曆史記錄,進而找到之後版本的commit id
git reflog
           

五、标簽

在Git中,不同版本的代碼是以commit id作為版本号進行區分的,但是由于commit id是Git計算生成,不便記憶。故可在指定版本上添加上自定義标簽,便于使用(相當于給某個版本代碼,取個易于記憶的别名,友善日後取用)。

5.1 添加标簽

  • 可以使用如下指令給目前所在版本添加标簽
git tag tagName      // 在目前版本添加标簽 tagName
git tag v1.0        //  在目前的版本,添加标簽 v1.0
           
  • 如果想給之前的某個版本添加标簽,無須回退到該版本,隻需在上述指令後添加該版本的commit id即可
git tag tagName commitId    // 在指定commit id的版本上添加标簽 tagName    
git tag v0.8 3cbd33         // 向commit id為3cbd33的版本添加标簽 v0.8
           
  • 像送出版本添加備注資訊便于日後追溯一樣,在添加标簽時,同樣也可以添加關于該标簽的注釋資訊
git tag -a tagName -m <message>                     // 在目前的版本上添加标簽 tagName,備注資訊為message
git tag -a v1.1 -m "version 1.0 Final"              // 在目前版本上添加标簽 v1.1,備注資訊為version 1.0 Final

git tag -a tagName -m <message> commitId            // 在指定commit id的版本上添加标簽 tagName,備注資訊為message
git tag -a v0.3 -m "version 0.8 SNAPSHOT" 2caf9b    // 在commit id為 2caf9b 的版本上添加标簽 v0.3 tagName,備注資訊為version 0.8 SNAPSHOT
           

5.2 檢視标簽

  • 使用下述指令檢視目前已經添加的所有的标簽名
git tag     // 顯示所有添加的标簽名
           
  • 使用下述指令檢視指定标簽版本的資訊,包括commit id、時間 ...
git show tagname       // 檢視指定标簽名的版本資訊
git show v0.8         // 檢視标簽v0.8的版本資訊