Git 是一個最基本專案版控的方法, 只需使用幾個指令就有效的保護我們的專案避免不可復原的災難(也能追查製造災難的兇手)。
除此之外, 我們還能將專案保存在網絡上的保存庫外以達到更高彈性與協作。
以下內容將會簡單介紹常用到的指令並且是以 Console 進行執行, 不會依賴工具執行專案的版控管理。
概述
Git 是一個最基本專案版控的方法, 只需使用幾個指令就有效的保護我們的專案避免不可復原的災難(也能追查製造災難的兇手)。
除此之外, 我們還能將專案保存在網絡上的 Repository 外, 並且專案也能達到更高彈性與協作。
以下內容是我日常使用的指令, 我將會簡單介紹常用到的指令並且是以 Console 進行執行, 不會依賴工具執行專案的版控管理。
內容
基本操作
Git Console 是 Git 最簡單進行專案版控的方法, 並且我們在下載安裝後, 即可在本機進行基本使用。只能可能會使用的如下:
Version
安裝 Git 後, 我們需要確認電腦是否有安裝 Git 時, 可以執行以下指令確認目前是否有安裝。
git --version
若電腦有完成安裝 Git, 將會顯示 Git 的版本。
Config
列出 Git 資訊內容, 裡面含常用的 User Name 與 User Email 資訊
git config --list
調整資訊內容
設定名稱 - git config user.name "名稱"
設定郵件 - git config user.email "郵件"
若需要全域就在指令上加上 --global
設定名稱 - git config --global user.name "名稱"
設定郵件 - git config --global user.email "郵件"
設定資訊的目的是為了後續 Commit 內容至遠端 Repository 時可知道是由哪位仁兄 Commit 外, 遠端存放的 Repository 也會根據 Email 判斷是否為被允許之電子郵件以達到權限管理。
Init
建好專案後, 我們即可在專案下第一層執行以下指令
git init
該指令將會建立有關 Git 版控的相關內容。有些開發軟體或開發語言在預設建立時就會連同 Git 版控一同建立。
這裡有兩個比較特別的衍生物, 一個是 Readme.md,另一個是 .gitignore。 這兩者有時會隨著開發軟體或開發語言一同產出,或者也能自行手動建立。
Readme - 該 Markdown 檔案一般被用來記錄專案資訊。
Gitignore - 忽略某些檔案或內容。 主要執行存放在遠端的 Repository 時, 將會主動忽略設定內容。 依照不同的程式語言或開發工具具有不同的忽略物。
Add
主要是選定需要進行記錄的文件, 但是一般我會直接針對全部檔案進行記錄
針對全部檔案 - git add .
針對單一檔案 - git add readme.md
針對類型檔案 - git add *.txt
Commit
主要針對選定之內容進行註記與儲存異動內容
git commit -m "註記內容"
Commit 時, 我認為有些人有不好的習慣, 像是無論專案是否可以執行, 想到 Commit 就 Commit, 或者是開發者已完成了大量開發後再執行 Commit。
以上都可能在專案管理上有機會造成負擔, 像是復原時不好選擇復原點, 或者是取得版本是異常的。
故我建議是在可正常運行並可接受的狀況下, 以每次修改的變數或一項 Function 的開發為一個 Commit。
這樣 Commit 資訊好寫外, 在遇到問題時也可以方便選擇版本。
基本協作
我們處理本機進行版控外, 我們可能因為團隊開發, 而需要進行協作。
以下將是協助時, 我們將會用到的基本指令。
Clone
取得遠端 Repository 之專案
簡單 - git clone 遠端路徑
改名 - git clone 遠端路徑 "新名稱"
Pull
取得遠端 Repository 專案之新資料
git pull
若本機 Repository Commit 與遠端 Repository Commit 同一個位置具有不一樣的內容將會造成衝突。
該狀況除了注意分工外,與是否習慣 Push 與 Pull 有關。
Push
將本機的 Commit 推送至遠端的 Repository 上
git push "本機 Repository Branch" "遠端 Repository Branch"
若在本機 Push 至遠端前, 遠端 Repository 已新增新的 Commit 將會造成錯誤, 故建議 Push 前先執行 Pull 更新目前本機的專案內容。
進階協作
除了預設使用 main (遠端常用 master)外, 在協作上我們還可以利用 Branch 與 Merge 進行管理開發以達到良好的開發專案管理。
比方說 Main 僅提供佈板所需的版本, 其他可以開發功能可是以獨立的支線記性存放 Commit。 若開發功能開發完成後, 再進行將開發好的版本合併至主線即可。
這樣將會降低開發時造成專案損壞的狀況。
Branch
主要是進行 Branch 管理,如顯示, 建立,更名或刪除等。
顯示支線 - git branch
建立支線 - git branch 名稱
更換名稱 - git branch -m 舊名稱 新名稱
刪除支線 - git branch -d 名稱
Branch 之間不會互相影響, 如 A Branch Commit 後, 內容不會出現在 B Branch 內, 故可以很好管理開發版本
Checkout
確認 Branch 名稱後, 可以依賴 Checkout 進行更換路線
git checkout 名稱
Merge
兩個 Branch 可能是不同的開發功能, 若開發完成後我們可以使用 merge 將兩個 Branch 進行合併。
git merge "將被合併的 Branch Name"
執行 Merge 需要留意的是:若需合併的 Branch 已有修改, 但被合併的 Branch 卻不是以最新內容, 這將會造成衝突, 故需要小心。
以上是我經常使用的 Git Console。 當然除了開發專案外,其實我們也能運用在文件管理上。
參考
- Git 文件 - https://git-scm.com/docs
- 學習資料 - https://backlog.com/git-tutorial/tw/
- Gitignore - https://github.com/github/gitignore