 ### Git 1. **分散式版本控制系統** 2. **Git** != **Github** --- ### Install > 善用Homebrew 進行Mac && Linux 安裝(可以集合式管理套件版本) > https://brew.sh 1. Mac ``` ~ $ brew install git ``` 2. Linux ``` $ brew install git ``` --- ### SSH 建立 1. 取得ssh key ``` $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` > id_rsa.pub:公開金鑰 (可以讓大家都知道) > id_rsa:私密金鑰 (無論如何不能洩漏) ``` eval "$(ssh-agent -s)" ``` ``` ssh-add ~/.ssh/id_rsa ``` ``` cat ~/.ssh/id_rsa.pub ``` 3. 將publish key -> Github > 1. https://github.com/settings/keys > 2. New SSH key ``` ssh -T git@github.com ``` --- ### Git config ``` $ git config --global user.name "使用者名稱" $ git config --global user.email "使用者電子郵件" ``` --- ### 指令介紹 1. 初始化當前目錄 ``` $ git init ``` > 在當前位置新增 .git 隱藏資料夾,也就是建立 Git Repository(檔案庫)。目的是初始化這個目錄,讓 Git 對這個目錄做版本控管。 2. 檢查當前版本狀態 ``` $ git status ``` > 未進入版本控管(Untracked)、新增檔案(New File)、刪除檔案(Deleted)、檔案已修改(Modified)等。是會經常使用的指令。 3. 加入版本控制 ``` $ git add ``` > 可以單獨加入git add XXX 或者 git add . 直接全部加入 4. 新建版本控制 ``` $ git commit ``` > 可以直接使用git commit -m "新建內容" 用來建立新的版本 5. 查看版本紀錄 ``` $ git log ``` > 從新到舊列出,內容分別是版本號碼、提交者、提交時間。 6. 切換分支 ``` $ git checkout ``` > 這邊是切換現有的版本 git checkout "分支" or git checkout -b "建立新分之並且切換" b == branch,請習慣性建立Dev 7. 建立並跳到該分支 ``` $ git branch -D ``` > 偷懶的話基本上用commit -b 就可以達到了 8. 修改分支名稱 ``` $ git branch -m XXX SSS ``` > 基本上很少用到 9. 回到過去版本 ``` $ git reset --hard ``` > 1. git reset --hard HEAD #上一個 > 2. git reset --hard HEAD^ #上上個 > 3. git reset --hard HEAD~2 #上上個 > 4. git reset --hard "id number" #回到指定id 的版本 10. 本地端同步遠端分支 ``` $ git pull ``` > 這個作法基本上是很重要的,在每一次修改程式碼要習慣性pull,讓本地端跟遠端分支的內容一樣 11. 建立遠端連線 ``` $ git remote add upstream github儲存庫位置 ``` > 這個部分是為了讓clone 下來的專案能夠與遠端上建立連線 > 若要刪除remote -v 的origin ``` git remote remove XXX ``` 12. 上傳本地端至遠端 ``` git push ``` > git push -u origin 分支名稱 也可以這麼做確認指定分支 13. 刪除本地分支 ``` $ git branch -d branch名稱 ``` 刪除遠端分支 ``` git push origin -d branch名稱 ``` > d == delete * 補充: > 1. fork == 拷貝一份到自己的除存庫 > 2. clone == 從遠端下載到本地端 ### GIT flow >通常gitflow有以下幾個:master, devlope, release,hotfix,feature * master: 用來擺放穩定上線的版本 * develope: 用來開發用的 * release: 用來做最後上線前的測試版本, 沒問題後會一併合到master以及develope * hotfix: 用來處理緊急錯誤 結束後會合併到develope * feature: 用來開心功能, 測試完會合併到develope * how to use? ``` brew install git-flow-avh ``` 通常開啟功能 再來切換到develop merge進去 再來就是release 再來就是push 初始化git流程 ``` git flow init ``` 開啟git-flow 一致化 ``` git flow XXX[flow-name] start XXX ``` ``` git flow XXX[flow-name] start XXX ``` 這邊舉例開發一個新功能到部署到main的過程 ``` git flow feature start feature-name ``` >這個命令會自動從 develop 分支創建一個新的 feature/feature-name 分支,並且切換到這個分支。 ``` git add . ``` ``` git commit -m "" ``` ``` git push -u origin feature-name ``` > 目的是讓別人能夠看到, 若有嚴格PR需求, 可以這樣使用 ``` git flow feature finish feature-name ``` >1. 切換到 develop 分支。 >2. 將 feature/feature-name 分支合併到 develop。 >3. 刪除 feature/feature-name 分支。 ``` git push origin develop ``` >如果團隊其他人需要這些修改,你可以將合併後的 develop 分支推送到遠端 ``` ```bash= git flow feature start feature-name git add . git commit -m "feat: 加入 xxx 功能" git push -u origin feature/feature-name 去到github PR-->develop git checkout develop git pull origin develop git branch -d feature/feature-name git push origin --delete feature/feature-name ``` --- ``` git flow release start version-number ``` >version-number 是準備發佈的版本號,例如 1.0.0。這個命令會自動從 develop 分支創建一個 release/version-number 分支。 ``` git add . ``` ``` git commit -m "" ``` ``` git flow release finish version-number ``` >1. 將 release/version-number 分支合併到 main 分支。 >2. 在 main 分支上打上一個 v1.0.0 的標籤。 >3. 將 release/version-number 分支合併回 develop,以確保修正同步到開發分支。 >4. 刪除 release/version-number 分支。 ``` git push origin main git push origin develop git push --tags ``` >將 main 和 develop 分支推送到遠端以便於發佈 --- :accept: 有效建立協作能力 :accept: 增加團隊開發效率 :ghost: 下一章--> **Docker? 容器化技術** ©Copyright © 2023 by CHUNG HONG HAO. All Rights Reserved.
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.