無論是不是初次學習Git,使用Git的第一步就是要在本機(自己電腦)建立一個新的Git檔案儲存庫(repository):
$ git init
入門基本指令
前置作業 - Git環境變數設定
如果只特別針對一個專案設定Git的環境變數(例如專案開發者名稱、email等),可用以下指令(會覆蓋全域環境設定):
# 設定開發者名稱 (GIT_AUTHOR_NAME)
$ git config user.name "作者名"
# 設定開發者email (GIT_AUTHOR_EMAIL)
$ git config user.email "作者email"
# 檢視區域環境變數設定
$ git config --list --local
若要對所有使用Git的專案設定作者、email,可用全域環境設定(能當作所有使用Git專案的預設環境設定):
# 設定全域開發者名稱
$ git config --global user.name "作者名"
# 設定全域開發者email
$ git config --global user.email "作者email"
# 檢視全域環境變數設定
$ git config --list --global
# 修改預設輸入編輯器
git config --global core.editor "vim"
開始使用Git
以下是入門Git最常用到的幾個基本指令:
# 檢視Git儲存庫狀態
$ git status
# 修改檔案後, 要新增檔案到Git儲存庫的暫存區(index), 讓Git追蹤檔案狀況
# 可只新增指定檔案(檔名)或一次新增全部未被追蹤的檔案(.)
$ git add 檔名
$ git add 檔名1 檔名2 檔名3
$ git add .
# 提交暫存區檔案到儲存庫, 意即讓Git記錄本次檔案修改狀況
$ git commit -m "提交訊息"
# 檢視目前分支完整或精簡(--oneline)的所有提交紀錄
$ git log (即 git log HEAD)
$ git log --oneline
# 檢視所有分支送交紀錄
$ git log --all
常用指令
暫存
暫存很適合用在「還不想提交(commit)目前檔案狀態」,卻必須切換分支或做其他事情的時候,這時候可以用 git stash
暫存目前檔案狀態:
# 暫存目前檔案狀態
$ git stash
# 取出並套用(最新一個@{0})暫存紀錄
$ git stash pop
# 套用(最新一個@{0})暫存紀錄(不會從stash刪除這個紀錄)
$ git stash apply
# 取出並套用特定一個暫存紀錄
$ git stash pop stash@{index}
# 套用特定一個暫存紀錄(不會從stash刪除這個紀錄)
$ git stash apply stash@{index}
# 檢視暫存紀錄
$ git stash list
# 刪除特定一個暫存紀錄
$ git stash drop stash@{index}
# 清除所有暫存紀錄
$ git stash clear
遠端
與遠端儲存庫(e.g., GitHub, GitLab, bitbucket, etc)建立連線、上傳與下載遠端儲存庫的專案等的指令
# 與遠端儲存庫建立連線
# origin只是常用的遠端分支名稱, 可改成其他名稱
$ git remote add origin 遠端容器位址
# 複製遠端儲存庫專案
git clone remote_repository_address
# 上傳專案至遠端儲存庫
# 若遠端沒有分支會同時新增遠端分支
$ git push 遠端容器別名 本地分支名
$ git push origin new_dev
$ git push -u origin local_branch
# 從指定的本地分支上傳專案至遠端儲存庫的指定分支
$ git push 遠端容器別名 本地分支名:遠端分支名
$ git push origin new_dev:remote_new_dev
# 抓取遠端容器的最新資訊以檢視
$ git fetch
# 抓取並合併遠端容器的紀錄(即 git fetch + git merge/rebase)
$ git pull
分支
# 檢視分支
$ git branch // 檢視本機端分支
$ git branch -r // 檢視遠端分支
$ git branch -a // 檢視所有分支
# 新增分支
$ git branch 分支名
$ git branch 分支名 目前分支某個commit
# 切換分支
$ git checkout 分支名
$ git checkout -f 分支名 // 強制切換
# 新增並切換分支
$ git checkout -b 分支名
# 切換分支並合併目前未提交的檔案狀態(可能有合併衝突要處理)
$ git checkout -m 分支名
# 合併分支(要先切換到要合併其他分支的那個分支A)
$ git merge 要被合併的分支B // 分支B會被合併至分支A
# 刪除分支
$ git branch -d 分支名 // (--delete)
$ git branch -D 分支名 // 強制刪除(--delete --force)
# 修改分支名稱
$ git branch -m oldBranchName newBranchName
直接用Git查看常用指令
# 檢視常用命令
$ git
# 檢視所有指令
$ git help --all
# 檢視所有子指令
$ git help subcommend
$ git subcommend --help
# 檢視git版本
$ git --version
檔案補交、重寫commit訊息
檔案補交、復原commit後的檔案等動作都只適合用在還沒上傳到遠端儲存庫的commits;若既有的commits已上傳遠端儲存庫,為避免影響協作,建議還是將藥補交的檔案另外新增一個commit,不要合併到目前既有的commits。
補交檔案
# 補交檔案且不用修改commit訊息(要先git add 檔案)
$ git commit --amend --no-edit
# 補交檔案並且修改commit訊息(要先git add 檔案)
$ git commit --amend
重寫commit訊息
# 重寫最新(最後)一個commit訊息
$ git commit --amend -m "最新一個commit的新訊息"
# 用rebase重寫某一commit的訊息
# 在rebase介面,把要更改訊息的commit前面pick改成reword,並在commit之後改成新的訊息
$ git rebase -i HEAD~n
reword commit new_commit_message