Git - fantasy0107/notes GitHub Wiki
- gitflow 各種類分支的意思?圖長怎麼樣?實際建出來
- commit?pull?push?Fetch?branch?merge?stash?discard?tag?各別意義?實際操作
- 穩定、隨時可上線的版本
- 通常也會在這個分支上的 Commit 上打上版本號標籤
- 當線上產品發生緊急問題的時候,會從 Master 分支開一個 Hotfix 分支出來進行修復,Hotfix 分支修復完成之後,會合併回 Master 分支,也同時會合併一份到 Develop 分支
- Develop 分支夠成熟了,就可以把 Develop 分支合併到 Release 分支,在這邊進行算是上線前的最後測試
- 測試完成後,Release 分支將會同時合併到 Master 以及 Develop 這兩個分支上
- 。Master 分支是上線版本,而合併回 Develop 分支的目的,是因為可能在 Release 分支上還會測到並修正一些問題,所以需要跟 Develop 分支同步,免得之後的版本又再度出現同樣的問題
- 所有開發的基礎分支
- Feature 分支都是從這個分支切出去
- Feature 分支的功能完成後,也都會合併回來這個分支
- .gitignore 會忽略掉檔案
- 小功能或小改進或修一個 bug 為一單位
- unit test 在同一個 commit
- 無相關不再同一 commit
- 語法錯誤或半成品不能 commit
- 第一行摘要
- 有需要實際寫放在第三行
- 參考自己的文章
- git status - 狀態
- git commit -m "FirstCommit" - 送出訊息
- git log - 歷史訊息
- git add file.extension - 追蹤檔案(unstaged -> staged file)
- git merge - 合併分支到當前分支
- git merge --no-f - 合併分支
- git tag - 列出標籤
- git pull - 合併遠端數據庫的分支的修改內容 = fetch + merge
- git push - 遠端數據庫建立分支/push修改內容到分支
- git stash- 儲藏將修改完成(working)的放到這裡面
- git discard - 取消修改內容
- git tag -a v1.4 -m 'my version 1.4' - 新增標籤和附加訊息
- git fetch - 抓取遠端但沒有合併
// 分支相關指令
git branch - 顯示分支
git branch branch_name - 建立分支
git checkout branch_name - 切換分支
git branch -m old_branch new_branch - 修改分支名
git branch -d branch_name - 刪除分支
git checkout -b branch_name -會切換分之如果沒有會建立後切換過去
// 切換到 master 並且合併cat分支
git checkout master
git merge cat
- 分支只是一個指向某個 Commit 的指標。
- 刪錯分支想救回
使用 rebase 合併
時機: 通常在還沒有推(Push)出去但感覺得有點亂(或太瑣碎)的 Commit,我會先使用 Rebase 分支來整理完再推出去
從字面上來看,「rebase」是「re」加上「base」,翻成中文大概是「重新定義分支的參考基準」的意思。
ex: 在 cat 分支上
git rebase dog
我,就是 cat 分支,我現在要重新定義我的參考基準,並且將使用 dog 分支當做我新的參考基準
合併衝突
- 開發新功能
ssh-keygen -t rsa -b 4096 -C [email protected]
輸入檔案名稱後一直按enter
Host github.com
User your_name
IdentityFile C:/Users/<yourname>/.ssh/<filename> (是private key file)
Account -> Settings -> SSH and GPG Keys 下新增SSH key
填入 title 和 public key 的內容
ssh -T [email protected]
git revert -m 1 <SHA-1>
git merge --abort