剛開始學 git 的時候東一篇西一篇就是不知道完整的流程,每個步驟都要上網查,光這篇文章的資訊可能就分散在四五個不同頁面很浪費時間,一開始只想先能動,之後遇到問題再說,所以這篇以能動起來為原則,並且給出多個基礎指令,至少出現問題知道怎麼查。
原理篇
Git 是一個版本管理工具,實際使用時有三個層面,分別是你的硬碟、本地儲存庫 (git)、遠端儲存庫 (github/gitlab)。你的硬碟什麼版本都不知道只放檔案當前狀態,儲存庫儲存所有版本,遠端儲存庫是最後同步共享的地方。
撰寫程式時,commit 提交到本地儲存庫,push 到遠端讓大家看。
檔案狀態(可先跳過)
以下修改自官方說明:三種狀態
Git 會把你的檔案標記為三種主要的狀態:已修改modified、已預存staged、已提交committed。
- 己修改 => 檔案被修改但尚未預存(處於工作目錄 working directory 中)。
- 已預存 => 檔案將會被存到預存區,準備被提交(git add 後放在預存區 staging area)。
- 已提交 => 檔案己安全地存在你的本地儲存庫(commit 後的狀態)。
版本狀態(可先跳過)
Git 可以看作一顆樹,每次 commit 都有獨一無二的 hash,並且指向上次的 commit 以紀錄每次版本變更,可新建分支功能,作為功能開發/修復緊急 bug 使用。
基礎指令篇
1. 初始化
|
|
2. 索引檔案
|
|
3. 提交版本並附註
到這步就可以跑起基本的 git 了。
|
|
4. 查看狀態
|
|
5. 還原(重要)[1]
這是使用度非常高的指令
|
|
6. 分支(可先跳過)
當你工作變複雜一條分支不夠用就會用到這些。
|
|
上傳到遠端儲存庫
最常見的遠端儲存庫就是 Github 了,這裡以 Github 為例。
1. SSH
Github 已不支援帳號密碼登入,只能用 SSH 認證。
- 產生ssh金鑰,官網教學寫的非常詳細。
- (選用) 隱藏信箱Setting>Email勾選 "Block command line pushes that expose my email",如要隱藏信箱,請到
https://api.github.com/users/你的github名稱
查看下面需要的 ID。 - 設定名稱及信箱,如不需隱藏信箱則直接打自己的信箱
|
|
- 上傳
git push -u origin main
- (選用) 新建的 git 連接既有的 github repo
|
|
2. GPG
(選用) 請直接看 利用 GPG 簽署 git commit 的教學。
如果要隱藏信箱在 GPG 設定時需使用剛剛設定的 noreply 信箱。
如果已經有 GPG key,可以用以下指令刪除:
|
|
3. 遠端常用指令
|
|
正式工作篇
By 码农高天
一開始都一樣
|
|
因為遠端更新,所以回到 main branch 同步遠端的新 commit,之後 rebase[2] main branch,這樣就可以push。
|
|
接下來可以:
- Pull request 請求合併
- Squash and merge 合併並整合為一個commit
- Delete branch 刪除合併完的分支
遠端都處理好剛剛的分支後,刪除 branch 再同步 main branch。
|
|
別用 git pull?
By Philomatics
原理是避免 git pull 產生一堆無用的 merge conflict。其實這和码农高天的用法是一樣的,只是合併成 git pull --rebase。如果沒衝突那很好,有衝突則 git rebase --abort 回復再做一般的 git pull。