常用命令
git status // 查看本地代碼狀態
git add fileName.cpp // 添加代碼到緩存區
git commit -m '提交內容的備註' // 提交代碼到本地倉庫
git checkout -b branchName // 不加-b就是普通切換分支
git fetch -p // 同步遠端分支狀態
git pull -r origin branchName // fetch遠端代碼到本地,並且以rebase的方式合併代碼
git push origin branchName // 更新本地代碼到遠端
- 分支命名規範 ownerName/featureName (e.g. haroldyao/watchaddfriends)
- 建議較多頻次的提交代碼到本地倉庫,以便能夠更靈活的保存或撤銷修改。(應付需求更改)
開發流程
git init
git checkout -b haroldyao/watchaddfriends
git status
git add fileName.cpp // 挑選需要提交的文件,或者全部提交*
git commit -m '提交備註'
git push origin haroldyao/watchaddfriends
- 如果功能開發完成,可以發起一個CodeReview流程
- 如果代碼測試通過,合併到 master,然後準備上線
// 冗餘版 合併到 master
git checkout master
git pull -r origin master
git checkout qixiu/newFeature
git rebase master // 處理衝突
git checkout master
git merge qixiu/newFeature
git push origin master
// 精簡版 合併到 master
git checkout qixiu/newFeature
git pull -r origin master // 將master的代碼更新下來,並且rebase處理衝突
git push origin master // 將本地代碼更新到遠端
- 不要在master合併代碼,保證master的可用性很重要。
- 確保在正確的分支執行正確的操作。
- 無論是處理衝突還是更新遠端代碼,請保有敬畏之心。
其他實用git技巧
1. git reflog,查看操作記錄
2. 壓縮提交記錄
- 使用 git log 找到起始 commitID
- git reset commitID,切記不要用 --hard參數
- 重新 git add && git commit
- git push -f origin branchName,因爲會有衝突,所以需要強制覆蓋遠端分支,請務必謹慎。
- 合併到 master 中,然後更新遠端 master。
3. pull request,方便CodeReview
4. git merge與 git rebase區別
- git merge(一股腦)使用merge命令合併分支,解決完衝突,執行git add .和git commit -m’fix conflict’。這個時候會產生一個commit。
- git rebase(交互式)使用rebase命令合併分支,解決完衝突,執行git add .和git rebase --continue,不會產生額外的commit。這樣的好處是,‘乾淨’,分支上不會有無意義的解決分支的commit;壞處,如果合併的分支中存在多個commit,需要重複處理多次衝突。