# 一 、 GIT101 簡短指令
###### tags: `GIT101` `進度筆記` `Lidemy心得``2020六月第三週`
先從 https://git-scm.com/download/win 官方網站上下載,對應 OS 的 Git , 裡面會附贈 Git Bash 。
一人版本控制, 以前做報告會有好幾版, 都會想保存不同版的報告, 就有檔名區隔, 但小規模的時候很難看到區別; Git 就可以專門做版本控制, 團隊的版本控制, 版本 > 版本加新功能, 但同時 PM 跟你說有 BUG 要修>那就會在出一個 bug hotfix 。

Git:可以幫你做版本控制, 和管理版本, 歷史紀錄 。
### 從資料夾到 Github:
如果做版本控制, 不能只改檔名, 如果用資料夾 V1 V2 V3 V4, 接著個別改資料夾內的檔案就能跑個別版本 。
如果有檔案, 設定檔, 系統檔案, 就需要不要把檔案加入版本控制, 多人協作的時候, 假設大家拿到 V2, 但我做了 V3, 同事也做了 V3, 但內容就不一樣, 也不能用資料夾的流水號個別控制, 如果兩個人都用亂數作為資料夾名稱絕對不會重複, 那大家的版本就不會衝突, 我要怎麼知道哪個是最新的版本和順序, 就可能說好創一個資料夾是 new, 和放順序 。
需要新版本:開一個資料夾; 不想加入版本控制:就不要加入資料夾; 避免版本衝突: 就用看似亂數的東西當作資料夾名稱; 知道最新版本就用一個檔案來存 。
`git init`, 下指令開始對這個專案做版本控制, 會出現 Initialized empty Git repository in `路徑`, 同時你在的資料夾內會多隱藏的 git dir, 會把需要的東西存在隱藏的 git 內, 也可以用 rm -r .git刪掉 .git 隱藏資料夾 。
`git status` 可以看狀況; `git add 檔案名稱` 決定是否加入版本控制, 如指令 `git add 檔案名稱`, 則會把檔案 staged 並加入版本控制, 有修改過還沒正式加入新版本; Untracked files: 則是還未被加入版本控制的, 如果用 `git rm --cached <file>...` to unstage; `git add.` 會把所有檔案版本控制 。
"git commit" 新建一個版本, (一開始要 git config --global user.name "your name" 和 git config --global user.email "youremail", 來設定帳號和密碼) 。
而輸入 "git commit -m" (m for messager) 會顯示出 files changed(表示這些dirs被commit) ; 這時再用 git status 下去看會發現原來的四個file已被commit如下圖:

---

---
`git log` 可以看 commit 的獨一無二編號, 每一次 commit 都可以看做是多拉一個資料夾, 然後再資料夾內改東西(版本控制), 那如果我改變一個檔案, 這時再用 `git status` 下去看會發現 modified: 你剛剛改的檔案出現紅字(如果你用 `git store` 則可以恢復檔案道上一個狀態), 然後再輸入一次指令 `git add 檔案名稱`, 再用 `git status` 看就會發現綠字體, modified, 如果再用 `git commit -m "second"` 然後再用 `git status` 下去看則會看到 只剩一個 untracked files, 則代表你有了兩個版本; 也就是說每一次git commit -m "數字或分類" 前, 你要修改過檔案( `vim 檔案` ), 再用 git add 檔案名稱後, 才可以再進行 `git commit -m "專案名稱"`, 然後再用 `git log` 下去看你就會有數個版本 。
"git checkout" 可以回到某版本, 而 `git log --one line` 會顯示比較簡短的 log, commit ID 的前面七碼, 可以切換到過去的版本, 如果用 `git checkout 七碼(或是完整碼)`, 可以在不同版本切換, 而 `git checkout master` 可以切換到最新的狀態 (可以用 `git log` )看看 。
".gitignore" 把想要忽略的檔案放在裡面, 可以把檔案忽略掉, `touch .gitignore` 後, `vim .gitiginore` 就可以 輸入你的檔案名稱在裡面, 再用 git status下去看就會發現, untracked files 會多了一個 .gitiginore, 可以忽略系統檔案 個人檔案, 個人資料之類的, 再用 `commit -m "數字或分類"`, 就能把 gitiginore 加進去版本控制, `git commit -am"數字或分類"` 會把所有已經修改過文字的檔案加入 stage 區, 但新建立的檔案則不會被加入 。 
 再用git status 看, 後用 `git commit -am ' '` , 就會被加入版本控制 。
[](https://lidemy.slack.com/app_redirect?channel=U014VGFNE6S)
[](www.linkedin.com/in/jhen-yu-shih-082b29129)
[](https://www.instagram.com/haku2zas/?hl=zh-tw)