不可不知的版本控制系統Git No.1-本地數據庫中Git可以做到的事情?(上)
Git的簡介
在大多數的情況下,工作時會不斷地更新自己的資料,可能從index1 0824.html→index1 0831.html→index1 0905.html等等,不會刪除舊檔案,以便之後有問題可以去查看,但當更新10次、20次時,並不會記得每次更新都更新了甚麼內容,Git就是來解決這種問題的,透過Git來做版本控制,知道每次更新的內容,誰在甚麼時間去做了修改。
安裝Git
安裝後,找到並開啟 git Bash,就會有一個類似命令提示字元的視窗如下:
Git操作流程
Git本地數據庫
在操作Git的過程中,會發現檔案上傳到遠端數據庫(通常是GitHub),是需要經過幾個檔案儲存區域,才能成功上傳,下面利用六角學院流程圖加上我自己的理解來解釋,每個區域的工作是什麼。
上傳到遠端數據庫前的指令碼
確認安裝的Git版本
1
2$ git version (直接按Enter)
git version 2.24.0.windows.2 (Git Bash顯示的Git版本)創建本地數據庫前的基本指令碼介紹
- cd 檔案路徑 →前往該檔案
- mkdir 資料夾名稱 →創建資料夾
- touch 檔案名稱 →創建檔案
- clear 清空目前所有指令碼及回饋紀錄
更多基本指令碼參考:
高見龍-Git 教學:終端機及常用指令介紹
Zed Shaw-Command Line Crash Course
初始化
設定使用者的 Email 信箱以及使用者名稱
1
2$ git config --global user.name "Celeste"
$ git config --global user.email "celeste@email.com"- 查詢使用者的 Email 信箱以及使用者名稱建立明細
1
git config --list
- 查詢使用者的 Email 信箱以及使用者名稱建立明細
初始化資料夾,建立Git環境
1
$ git init
工作目錄區
工作目錄區(Working directory)的檔案,尚未上傳到索引區(Staging Area)內,下面有圖示↓
- 查詢檔案狀態
1
$ git status
- 建立檔案 index.html
1
$ touch index.html
- 建立檔案後,查詢狀態會顯示
1
$ git status
Untracked files:...
- 建立資料夾 css/,並在資料夾裡創建檔案比較創建空資料夾
1
2
3mkdir css
cd css
touch all.css1
2mkdir js
cd js - 創建資料夾後查詢狀態
Untracked files
裡只會顯示index.html
跟css/
,而空資料夾js/
不會被追蹤。
- 查詢檔案狀態
工作目錄區(Working directory)的檔案,上傳到索引區(Staging Area)內,下面有圖示↓
將檔案從工作目錄區(Working directory)上傳到索引區(Staging Area)
全部上傳
1
$ git add .
部分檔案上傳
1
$ git add index.html
$ git add
後,查詢狀態1
$ git status
會顯示
Changes to be committed:...
檔案資料新增、修改後(尚未再次上傳到索引區),想要回復到未修改前(上次上傳到索引區的檔案內容)的狀態
這個檔案之前一定要有過上傳到索引區,並且回復的檔案內容也是上次上傳到索引區的內容。部分還原
1
$ git checkout index.html
或是
1
$ git restore css/all.css
全部還原
1
$ git checkout .
或是
1
$ git restore .
其實在提交到索引區之後,再去修改檔案內容,再透過
$ git status
查詢狀態後,會發現Git Bash會出現提示use "git restore <file>..." to discard changes in working directory
,讓使用者知道可以使用$ git restore
來刪除工作檔案中有更變動的地方。
索引區
索引區(Staging Area)的檔案,上傳到本地數據庫(Local Repository),下面有圖示↓
- 上傳
1
$ git commit -m'註解'
- 查詢commit紀錄
1
$ git log
(在有了一次commit紀錄之後)在工作目錄區修改檔案並且上傳(git add)到索引區後,發現上傳檔案內容有誤,想要回復到未上傳到索引區的狀態。
- 取消上傳到索引區或是
1
$ git reset HEAD index.html
1
$ git restore --staged css/all.css
特別注意,
$ git reset HEAD
及$ git restore --staged
都只是將檔案回復到未上傳的狀態,並非回復到修改前的狀態,如果要回復到上一次(未修改前)的檔案狀態要再使用$ git checkout
或是$ git restore
。- 取消上傳到索引區
- 上傳
在Git不需要被追蹤的檔案
有些比較機密或者是編譯過程中產生的暫存檔之類的,其實是不需要進入版控(Git)的,哪些資料不需要進入版控的可以參考gitignore,裡面有許多不需要進入版控檔案的建議。
如何創造出不進入版控的檔案
1 | $ touch .gitignore |
在編輯器上編輯這個.gitignore的檔案,將不需要進入版控的檔案放進去裡面。
1 | *.html |