Git 指令

把一些會用到的指令都紀錄在這裡。

幫助你理解的小提示

Git 把檔案分成兩種:

  • Untracked 不加入版本控制(可想成是代表「檔案還沒被放到資料夾」裡面)
  • Staged 加入版本控制(可想成是代表「檔案已經放到資料夾」裡面了)

設定縮寫

1
2
3
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.st status

如果想刪除的話可以到 ~/.gitconfig 中做修改。

基本指令

git init,初始化。初始化後 Git 就會知道我們要對這個專案做版本控制

.gitignore ,要忽略的檔案(不要加入版控的檔案)。它自己也應該要加到版控裡面,這樣別人才知道有哪些檔案被忽略。

git status,查看目前的狀態

git add,把檔案加入版本控制(每一次都要做的動作。可想成是把檔案放到 temp 資料夾)
git add .,把目前資料夾底下所有檔案都加入版本控制

git rm --cached,我現在又不想要對 xx 檔案做版本控制(從 Staged 變成 Untracked)

git commit,新建一個版本(可想成是「用亂數幫資料夾命名」的動作,代表這個版本建立完成。)
git commit -am,一個快速提交的方法。可以同時執行加入版本控制與提交的動作。但要注意,這不適用於「新建立的檔案」,換句話說就是「只有被更改或刪除的檔案」才適用)

git restore,不要保留更新的內容

git log,查看歷史紀錄(你建立了幾個版本)
git log --oneline,比較簡短的資訊(內容太長會被 terminal 腰斬)

git reflog 查看 HEAD 經過的每個版本,可以利用這個來查詢所有的 commit 紀錄(HEAD 只要走過,必留痕跡)
git reflog --grep-reflog=<patter> 用關鍵字來搜尋

git checkout,回到某一個版本(切換到某個資料夾)。要切換版本時,可以指定每個版本號碼的前 7 碼就行了(因為也很難重複)

git checkout master,回到 master 這個分支的最新版本(注意是 master 這個分支的最新版)

git diff,看這一次跟上一次的差別。如果沒有指定檔案的話會顯示所有被更新的檔案(注意,只有「在 commit 之前」才可以查看。)

分支指令

git branch -v,查看目前 Git 中的所有分支,參數 -v 是附上每條分支的 HEAD 所在版本

git branch <branch-name>,建立新的分支

git branch -d <branch-name>,刪除分支

git branch -m <new-name> 更新分支名稱

git checkout <branch-name>,切換到哪個分支(就跟切換 commit 版本的概念一樣)

git checkout -b <branch-name> 建立分支後直接切換過去

git merge <branch-name>,把 xx 分支「合併進來」。

關於合併的觀念做個補充。如果單看合併這個字,你可能會搞不太清楚意思。

假設現在有兩個分支,master 跟 new-feature,而你人在 master 分支上。那合併可能會有兩種情況:

  1. 把 master「合併出去」
  2. 把 new-feature「合併進來」

而 git merge 實際上是採用第二種作法,也就是「合併進來」,所以 master 會把 new-feature 合併進來。

進階指令

git merge <branch> 合併分支

git rebase <base> <merged branch> 合併

git rebase -i <基準點> 使用互動模式來更改歷史紀魯

遠端指令

git remote add origin https://github.com/,新增遠端的 repository,這邊是建一個叫做「origin」的遠端(你也可以取其它名字,但是簡單的事情,不要搞得太複雜)。

至於連結的部分是用來表示 origin 這個遠端 repository 的「位置」(畢竟它不是你本機的東西,所以你總要告訴 Git 你要把它放在哪裡吧)。

git push origin master,把「本地端」的 master 推到 origin 上並建立 master 分支(遠端)
git push origin master:cat,把「本地端」的 master 推到 origin 並建立 cat 分支(遠端)
git push orign :cat 把「遠端」的 cat 分支移除

git pull origin master,把「origin」的 master 拉下來,跟目前我所在的分支內容同步

關於 push 跟 pull 要注意兩件事:

  1. 搞清楚 push 跟 pull 的差別: push 的 master 是指「本地端的 master」,pull 的 master 是指「遠端的 master」
  2. 如果 pull 下來的檔案跟本地的檔案有修改到同樣的內容,那也會發生 Conflict。(可以把 pull 想成是把遠端的 master 跟本地的 master 做合併,提到合併,就會有可能引發 Conflict)
  3. push 可以指定你要 push 哪一個分支到遠端,所以你不一定要在那個分支上才能 push,但是 pull 一定要在你要同步的那個分支上。

參考資料

Git 教學:如何 Push 上傳到 GitHub?
連猴子都能懂的 Git 入門指南

Git hook 使用 Git 遠端功能時可能會碰到的問題
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×