自己用Git有一段時間了,隨著項目越來越多,功能分支也隨之增加,從簡單的基礎命令到隨心所欲,需要自己不斷地去嘗試總結,下麵來分享一下我的Git使用總結。 本章基礎篇主要講解一些Git代碼提交流程和Git基礎命令的使用。 一、Git版本分支管理 以下是一個比較基本的分支管理示範,每個公司的項目管理運作 ...
自己用Git有一段時間了,隨著項目越來越多,功能分支也隨之增加,從簡單的基礎命令到隨心所欲,需要自己不斷地去嘗試總結,下麵來分享一下我的Git使用總結。
本章基礎篇主要講解一些Git代碼提交流程和Git基礎命令的使用。
一、Git版本分支管理
以下是一個比較基本的分支管理示範,每個公司的項目管理運作不同,分支管理也有各自的特色,但萬變不離其宗。
1) dev分支用於日常開發
2) 當有新版本需要發佈時,把dev代碼合併到release分支做集成測試,並等待發佈
3) release分支進入bug修複階段
4) 如果在release分支發現bug,那麼在release分支進行修改,並使用git cherry-pick把修複bug的commit合併到release分支上
(cherry-pick與merge不同,它的合併是以commit為單位而非整個branch)
完成後,release分支上所有代碼改動(除版本號之外)都應該已經合到了dev分支上
5) release分支測試完成後,發佈到線上環境
6) 並且打上tag,合併到master分支上
7) 如果線上上出現bug,那麼在master上hot fix修複
8) 出現hot fix並修複後,需要重新把hot fix的代碼合併到dev以及release分支中去使代碼保持一致
二、Git基本命令彙總
1.查看本地文件狀態
git status —-查看本地、本地倉庫、緩存(stash)的文件修改狀態
—紅色 代表本地工作空間的文件修改
—藍色 代表提交到本地倉庫中的文件(git add .)
2.切換版本/覆蓋當前修改文件
git branch - 查看當前版本
git branch -a 查看所有版本
git checkout XXX(版本名) —-切換到遠程庫中XXX版本
git checkout filepath —覆蓋當前修改的文件
git checkout . -覆蓋當前所有修改文件
3.從遠程庫獲取最新代碼
git remote -查看遠程庫名稱
git remote -v
git remote show XXX(遠程庫名)
git fetch — 從remote端拉取最新代碼
git pull XXX(遠程庫名) XXX(分支名) -把拉取的最新代碼跟當前工作空間合併
git rebase —把遠程拉回的代碼和本地合併
4.緩存本地代碼
當要切換到其它版本時,想保存在當前版本修改的文件:在切換前做
git stash —-把本地修改過不需要提交的文件放入緩存
git checkout XXX(版本) —切換庫版本
切回原來的庫,把文件從stash緩存中拿出來
git stash pop — 從緩存中拉出
5.提交遠程庫
git add .
git commit -m ''
git remote 查看遠程關聯名稱
git push remote的名稱 本地master
6.處理衝突
git fetch 拉取最新工程
git pull XXX(遠程庫名) XXX(分支名) -把拉取的最新代碼跟當前工作空間合併
衝突產生後,去工作空間修改後,>>>新代碼===老代碼<<<,保留最終代碼,刪除提示符,重新提交。
7.把本次提交的內容提交到其他分支(比如發佈時bug的修改)
git cherry-pick commitId
8.建議執行順序
git status 查看修改狀態
git checkout filename 放棄某文件的修改。
git stash 儲存修改
git fetch 拉取最新工程
git rebase 與本地分支合併
git stash pop 彈出儲存文件,此時新文件可能會與你的文件產生衝突,解決衝突。
git add filename 添加某個修改文件
git add . 提交所有加點
git reset HEAD filename 回滾指定文件,回滾所有加點:"git reset HEAD . "
git commit -m''
git push 本地remote遠程分支名,本地分支名
例我的本地分支為master 遠程remote 別名為 origin 則提交為git push origin master
9.切換HEAD
git reflog --查看HEAD記錄
git reset --hard HEAD^ //切換到之前一個HEAD
git reset --hard fad4462 // 切換到某個已經回退的HEAD
10.刪除 local branch
git branch -d <branch_name>