1. 程式人生 > >git - 常用命令和常見問題和反思

git - 常用命令和常見問題和反思

git reset –hard HEAD^ // 回退至上一個版本
git reset –hard 323232323 // 通過git log 回退到指定版本號
Git branch
Git branch -r //
Git branch -a // git pull以後,輸入命令檢視為包含遠端全部分支
Git checkout -b 170801 feature/origin/170801 // 新拉分支,本地分支名
//本地分支改名,git branch -m [oldBranch] [newBranch]
git branch -m remotes/origin/dev dev
Git status // 檢視程式碼改動
Git diff XXX // 檢視檔案改動差異
// 不衝突更新程式碼
git stash // 快取本地修改檔案
git stash list // 檢視快取檔案的記錄
git pull // 更新程式碼
git stash pop

[email protected]{0} // 更新程式碼後彈出快取修改的檔案,{ x }, x為記錄序號
Git commit XXX -m ‘message’ // 提交單個檔案,m為資訊
Git commit -am ‘message’ // 提交所有檔案,m為資訊
Git push // 推到遠端
Git add XXX // 新增單個新增檔案
Git add . // 新增所有新增檔案
Git checkout XXX // 切換分支
// 刪除分支
git branch -d origin/20170822 // 本地刪除
git push origin :origin/20170822 // 推到遠端
修改遠端分支名:
git branch -m old_branch new_branch # Rename branch locally

git push origin :old_branch # Delete the old branch
git push –set-upstream origin new_branch # Push the new branch, set local branch to track the new remote
檢視遠端分支:
git remote show origin
刪除本地與遠端不同步的分支
git remote prune origin
git分支加版本管理
1、分支:
master-主幹分支,受保護僅做程式碼的合併和拉取,不做程式碼提交;
feature-常規版本,一般為一個迭代
bugfix-bug修復版本,迭代週期內的版本
一般來講:並存的開發分支不要超過3個,多了容易出現合併問題造成程式碼比較亂
2、合併:每次程式碼釋出在當前開發分支,本地更新分支資料後,切到master,merge 開發的分支,然後將合併後的master分支合併程式碼未釋出的分支上。
3、打tag, master合併後, // tag儲存分支版本資訊,便於回滾查程式碼
git tag v1.1.0 -am ‘feature/180713 v1.1.0’
git tag // 檢視tag的list
git push origin v1.1.0 // tag推到遠端
4、將釋出後的分支受保護,如果沒有問題解除前個分支然後刪除,保持分支幹淨;
5、版本號,可在專案package.json中寫每個分支的版本號以便管理。

一些sense:
Git合併兩個分支機制
1、檔案較新的修改時間預設會覆蓋舊的時間,
2、如果合併的兩個分支程式碼有出現格式不一致則發生衝突表現出來,
3、合併應在發版後一天早上及時合併,必要時鎖分支合併;(一般採取新時間取代舊時間方法,如果出現衝突一定要比對檔案,並且問對應開發,
4、儘量做到一個開發負責一個檔案,如果出現多個人開發同一個檔案,合併時候可能存在改同一個檔案,然後就不知道哪個是需要的;
5、合併一定要小心分析,不要隨意刪除程式碼;

注意程式碼的加減,儘早合併、衝突看歷史、儘量一人開發一檔案;
6、合併程式碼前需要考慮合併的必要性,假如7.3快開發版回滾之前的版本程式碼而0705不變的情況,則不需要合併;假如是為了修復問題則0703需要合併到0705
7、合併分支不要跨版本拉分支開發,比如,master分支,0705,從master拉的0719,假如同一段程式碼master和,0719都是false,0705改為了true,但是0705還沒發,可能出現開發剛好改了這塊0719的程式碼,然後0705發完後被合併到0719,可能會被0719覆蓋了0705的程式碼,可能發生衝突解決階段使用了0719的,因此不要跨常規版本拉分支;

Git Hook:
https://www.jianshu.com/p/935409ce4c9a