想從添加秘鑰看起請點擊:在macOS 上首次使用 Git 的基礎教程
查看本地Git配置信息
git config --local --list 查詢當前Git配置
git config user.name
git config user.email 查詢當前的 用戶名 /郵箱
查看項目的所有分支情況
git branch -a 查看本地+遠程的所有分支
與分支相關的操作
git branch //查看當前所有的分支(當前所在的分支會 標綠加* )
git branch newBranch-001 //新建一個名叫《newBranch-001》的分支
git checkout newBranch-001 //當前分支切換至《newBranch-001》分支
//上面兩句可以合并忆矛,靈活使用
git checkout -b newBranch-001 //先new再切換到此新分支上
git branch -d Issue-001 //刪除《Issue-001》分支
git branch -r -d Issue-001 //刪除《origin/Issue-001》的遠程分支
以遠端倉庫為準,拉取遠端內容
git pull --rebase origin master 在遠端的基礎上拉取最新內容催训,用于首次 push 不成功的情況
最常用操作
git status 最常用的漫拭,查看當前工作區(qū)|緩存區(qū)
git diff balabala.text 查看《balabala.text》文件工作區(qū)與緩存區(qū)的不同地方
git add balabala.text 把當前工作區(qū)的《balabala.text》文件添加到緩存區(qū)
git commit -m "老板是煞筆" 把當前緩存區(qū)的全部內容提交為一個版本
//以上兩步(git add\ git commit)可以合并為(git commit -m -a "描述"),但強烈不推薦2勺ぁ!膳叨!
//(因為它只會把默認更新提交痘系,“新增默認不存入緩存區(qū)” 不會被提交!A倨住奴璃!)
//(簡單理解就是一部分文件[往往最重要!]不會被提交,具體百度或者自己嘗試一次就懂了)
//git commit -m "描述" -a //把當前“變更” [但不包含增加]添加到緩存區(qū)并進行提交
//如果在 push之前發(fā)現(xiàn) commit 描述文字錯誤苟穆,或單純修改上次提交的文字描述
git commit --amend 查看并修改最近一次的提交內容
//這里可以使用vi修改 (把"老板是煞筆" 修改為 "老板加雞腿")
---
---
//確認本地需要提交的信息無誤后
git push 把本地倉庫推送到遠程倉庫
查看歷史操作
git log --pretty=oneline //打印所有歷史操作雳旅,可以快捷查看每個操作的縮略碼
git reflog 打印所有的命令記錄(主要是從未來回到過去后,用log無法找到未來的id)
git log --graph --pretty=oneline --abbrev-commit //以縮略圖形式攒盈,展示分支合并信息
后悔藥,reset-- hard 操作僵蛛,慎用迎变!
git reset --hard (6位id值) 回退到某一ID對應的版本(既可以是過去,也可以是未來)
對緩存區(qū)的操作
git rm bala.text //刪除緩存區(qū)內的《 bala.text》文件
git checkout -- bala.text
//用緩存區(qū)的《bala.text 》文件替換工作區(qū)對應《bala.text 》文件的內容驼侠。
//就這一點來看,可以有“刪除當前內容”和“回退之前內容”兩層含義倒源。
//未add時相速,刪除當前工作區(qū)的內容很容易理解;
//回退 的話要與 git reset --hard (過去正確的版本id) 聯(lián)合使用,
//先回退版本突诬,再checkout該文件,就回退到了該文件還存在的時刻绒极。
-
合并分支 (不要讓新手合并代碼J呓荨!V芄铡)
就像不要讓新手去寫css
需要先搞清楚一個基本道理:
假設:
主分支用[master]表示; 次要分支用[issue]表示
則:
要把 issue 合并到 master 之上妥粟,就首先把當前分支切換至目標分支——master上,再在master上merge issue勾给。
很自然,也很基本脓钾。但我們平時開發(fā)總是在issue上的開發(fā)桩警,檢查好要往主分支合并時,新手很容易合并反握截,直接在issue 上merge other了柱蟀,搞得亂七八糟的蚜厉。
merge合并語句
git merge Issue-001 把《Issue-001》分支內容合并到當前分支之中
//merge 后一般就刪除分支了
git branch -d Issue-001 刪除《Issue-001》分支
git branch -r -d Issue-001 刪除《origin/Issue-001》遠程分支
合并時解決沖突
可以使用vim 直接操作,建議使用术瓮。Vim 語法傳送門
也可以進入工程文件手動更改。
vi a.rtf
在需要的地方 dd (刪除)
最后 :wq (保存并退出)
解決完沖突就可以繼續(xù)提交代碼了
//注意嘍胞四,這里可都是在develop分支上的操作
git status
git add aaa.text //之前沖突的文件
git commit -m "解決1.03版本沖突"
git push
以縮略圖形式辜伟,展示分支合并信息
git log --graph --pretty=oneline --abbrev-commit //以縮略圖形式,展示分支合并信息
高階玩法 (有風險导狡,慎用!6览伞C渡摹)
把本地分支嫁接到某一遠端分支節(jié)點
git fetch
git reset --hard origin/isuue-100
最后記錄一下版本合并的原則。
Origin 遠端倉庫贪婉,不解釋
Master 權高位重料皇,可以認為是“成熟版本”的記錄者,它的每一次節(jié)點的更替鬼譬,都意味著一個“經得起線上檢驗的”版本逊脯。面向版本,而不是面向功能军洼。
Develop 戰(zhàn)線最長,面向功能避乏「噬#可以認為是“完整新功能”的記錄者歹叮,它的每一次節(jié)點更替铆帽,意味著一個“完整的功能”。一個版本可以有若干新舊功能萨螺。
Future 一般用于打某幾個功能的較完整的測試包愧驱。比如開發(fā)周期為兩周,第一周只完成ABC三個功能冯键,D功能完成一半惫确,就先把ABC merge 到Future中,查看整體效果改化,或用于展示。最終Future將在功能測試后銷毀揍鸟,不建議合并至Develop中!
Issue 分支阳藻,面向功能模塊谈撒,(或者說面向文件,盡可能只修改某一功能所涉及的某幾個文件啃匿,盡量避免因不同的Issue修改同一文件而造成的合并沖突)可能包含一個或多個近似功能實現(xiàn)。需要就開辟夹厌,棄用即銷毀裆悄,完成就rebase merge 到Develop中,實現(xiàn) “某一功能開發(fā)完成”或南,或“針對性修改某一單一功能”的目的。