it小白的命令行初體驗(yàn)
現(xiàn)在版本控制使用git的挺多圃伶,之前常用SVN她肯,偶爾使用Git也是使用可視化工具操作(sourcTree胆绊,IDE自帶的Git功能),之前不求甚解颜屠,所以對(duì)git的了解相當(dāng)淺薄辰妙,后來(lái)遇到問題只能一次一次去查資料,后來(lái)用的多了就覺得麻煩甫窟,所以整理一下git的相關(guān)命令行操作密浑,以備后用!因?yàn)榉种挡僮飨嚓P(guān)較多且稍復(fù)雜粗井,統(tǒng)一放在文章后面
git最常用的基本命令
1.查看當(dāng)前git版本(判斷是否安裝過git)
git --version
image.png
2.git下載代碼
gitclonehttp://gitlab.tech.xxx.com/xxx/backend-view.git
image.png
項(xiàng)目地址在gitlab項(xiàng)目地址復(fù)制粘貼即可(全局配置權(quán)限后以后即可不用輸入尔破,不再贅述)
3.修改編輯項(xiàng)目常用
// 查看當(dāng)前倉(cāng)庫(kù)文件狀態(tài)(常在提交文件之前查看,會(huì)顯示新增文件刪除文件背传,已修改文件等狀態(tài))git status// 添加文件gitadd.// 添加所有已修改文件gitaddfileName// 添加指定文件名的文件(可在git status返回中復(fù)制)// 提交修改說明git commit-m"修改的內(nèi)容"http:// 記錄當(dāng)前提交的主題 以便區(qū)分每次提交的內(nèi)容// 拉取代碼git pull// 拉取代碼? push之前pull一次代碼? (尤其多人開發(fā)一定注意push之前先pull)git pull origin<遠(yuǎn)程分支名>// 將遠(yuǎn)程指定分支 拉取到 本地當(dāng)前分支上git pull origin<遠(yuǎn)程分支名>:<本地分支名>// 將遠(yuǎn)程指定分支 拉取到 本地指定分支上git pull origin// 將與本地當(dāng)前分支同名的遠(yuǎn)程分支 拉取到 本地當(dāng)前分支上(需先關(guān)聯(lián)遠(yuǎn)程分支)// 推送代碼git push// 推送代碼到遠(yuǎn)程倉(cāng)庫(kù)git push origin<本地分支名>// 將本地當(dāng)前分支 推送到 與本地當(dāng)前分支同名的遠(yuǎn)程分支上(注意:pull是遠(yuǎn)程在前本地在后呆瞻,push相反)git push origin<本地分支名>:<遠(yuǎn)程分支名>// 將本地當(dāng)前分支 推送到 遠(yuǎn)程指定分支上(注意:pull是遠(yuǎn)程在前本地在后,push相反)git push origin// 將本地當(dāng)前分支 推送到 與本地當(dāng)前分支同名的遠(yuǎn)程分支上(需先關(guān)聯(lián)遠(yuǎn)程分支)git push--set-upstream origin// <本地分支名>將本地分支與遠(yuǎn)程同名分支相關(guān)聯(lián)
4.分支相關(guān)
git branch// 查看本地分支(名稱前面加* 號(hào)的是當(dāng)前的分支)git branch-a// 查看分支径玖,遠(yuǎn)程分支會(huì)用紅色表示出來(lái)(如果你開了顏色支持的話)git branch-vv// 查看本地分支和遠(yuǎn)程分支對(duì)應(yīng)關(guān)系git remote// 列出所有遠(yuǎn)程主機(jī)git remote update origin--prune// 更新遠(yuǎn)程主機(jī)origin(gitlab有新分支,本地查看分支無(wú)法查看到的時(shí)候使用)git branch-r// 列出遠(yuǎn)程分支git branch-vv// 查看本地分支和遠(yuǎn)程分支對(duì)應(yīng)關(guān)系git checkout-b dev origin/dev// 新建本地分支dev與遠(yuǎn)程dev分支相關(guān)聯(lián)
4.1 新建分支相關(guān)
git checkout-b newBranchgit push origin newBranch:newBranch// 把新建的本地分支push到遠(yuǎn)程服務(wù)器颤介,遠(yuǎn)程分支與本地分支同名(當(dāng)然可以隨意起名):
4.2 刪除分支相關(guān)
4.2.1 刪除本地分支
git branch-D newBranch// 刪除本地 newBranch 分支git checkout newBranch// 如果需要重新拉取遠(yuǎn)程的newBranch分支 執(zhí)行
4.2.2 刪除遠(yuǎn)程分支
git push origin:delBranchNamegit push origin--deletedelBranchName
// 切換分支,分支跟蹤梳星, 本地分支和遠(yuǎn)程分支的關(guān)系git branch branchName// 創(chuàng)建分支git checkout branchName// 切換分支git branch-d branchName// 刪除本地分支git branch-r-d origin/branch-name? git push origin:branch-name// 刪除遠(yuǎn)程分支// 如果遠(yuǎn)程新建了一個(gè)分支,本地沒有該分支,git checkout --track origin/ branchName 滚朵,這時(shí)本地會(huì)新建一個(gè)分支名叫? branchName冤灾,會(huì)自動(dòng)跟蹤遠(yuǎn)程的同名分支 branchName。git checkout--track origin/branchName// 如果本地新建了一個(gè)分支 branchName辕近,但是在遠(yuǎn)程沒有韵吨。這時(shí)候 push 和 pull 指令就無(wú)法確定該跟蹤誰(shuí),一般來(lái)說我們都會(huì)使其跟蹤遠(yuǎn)程同名分支移宅,所以可以利用 git push --set-upstream origin branchName 归粉,這樣就可以自動(dòng)在遠(yuǎn)程創(chuàng)建一個(gè) branchName 分支椿疗,然后本地分支會(huì) track 該分支。后面再對(duì)該分支使用 push 和 pull 就自動(dòng)同步糠悼。git push--set-upstream origin branchName// 合并分支(多人開發(fā)中届榄,經(jīng)常一人一個(gè)分支,各自在自己分支開發(fā)倔喂,開發(fā)完成以后合并到某一個(gè)指定分支铝条,沒有問題后最后合并到master主分支,我們的流程是各自在自己的develop開發(fā)席噩,開發(fā)完成以后合并到lastest分支班缰,沒有問題后提交合并申請(qǐng)到master分支,由leader審批是否統(tǒng)一合并到master悼枢,因?yàn)楹芏嘈氯瞬惶宄a的具體用途埠忘,所以講的稍微詳細(xì)點(diǎn),明白命令的實(shí)現(xiàn)目的能更好的掌握使用萧芙,后面會(huì)有具體的操作流程)1.本地代碼依次git statusgitaddgit commit-m""git pullgit push (develop-author分支给梅,即自己的開發(fā)分支)以后(把本地代碼推送到遠(yuǎn)程對(duì)應(yīng)分支)2.git checkout lastest (切換到lastest分支)3.git pull origin lastest? (先把遠(yuǎn)程lastest分支修改內(nèi)容拉取,多人開發(fā)双揪,需要把遠(yuǎn)程lastest上的代碼pull下來(lái))4.git? merge develop-author? (合并自己的分支到lastest)
image.png
image.png
image.png
image.png
5 git stash相關(guān)(臨時(shí)保存當(dāng)前工作區(qū)修改)
其實(shí)這個(gè)我并不經(jīng)常用动羽,所以理解可能不足,粗略講下自己的想法渔期, git stash 常用于 多人開發(fā)項(xiàng)目运吓,例如:正式環(huán)境代碼在master,自己開發(fā)在dev疯趟,當(dāng)你正在dev開發(fā)或修改時(shí)拘哨,正式環(huán)境有個(gè)緊急問題需要解決,但是你dev分支的修改只進(jìn)行了一半信峻,不方便提交時(shí)可以利用git stash 將工作區(qū)修改過的內(nèi)容臨時(shí)保存起來(lái)倦青,切換回master修改完緊急內(nèi)容會(huì)回來(lái)可以再取出來(lái)臨時(shí)保存的修改繼續(xù)操作(還是不太理解的話,再舉個(gè)不是很恰當(dāng)?shù)睦禹镂瑁热缒阌幸恍┪募谔囟ōh(huán)境下必須通過U盤拷到另一個(gè)電腦上产镐,只是舉個(gè)例子,別說說用qq藍(lán)牙郵件什么的傳輸踢步,但是U盤儲(chǔ)存空間不足以保存需要傳輸?shù)膬?nèi)容大小癣亚,也不能分批次傳輸,這種情況相信大家都能想到先把U盤已有的內(nèi)容剪切到電腦上获印,騰出空間儲(chǔ)存需要拷貝的資料述雾,等拷貝到目標(biāo)電腦以后再把U盤原有文件恢復(fù)到U盤即可,這個(gè)過程就相當(dāng)于 git stash最基本的用途)。說了這么多玻孟,看重點(diǎn)吧
(1)git stash save"save message":執(zhí)行存儲(chǔ)時(shí)唆缴,添加備注,方便查找取募,只有g(shù)it stash 也要可以的琐谤,但查找時(shí)不方便識(shí)別。(2)git stash list? :查看stash了哪些存儲(chǔ)(3)git stash show :顯示做了哪些改動(dòng)玩敏,默認(rèn)show第一個(gè)存儲(chǔ),如果要顯示其他存貯斗忌,后面加stash@{$num},比如第二個(gè) git stash show stash@{1}(4)git stash show-p:顯示第一個(gè)存儲(chǔ)的改動(dòng)旺聚,如果想顯示其他存存儲(chǔ)织阳,命令:git stash show? stash@{$num}-p ,比如第二個(gè):git stash show? stash@{1}-p(5)git stash apply:應(yīng)用某個(gè)存儲(chǔ),但不會(huì)把存儲(chǔ)從存儲(chǔ)列表中刪除砰粹,默認(rèn)使用第一個(gè)存儲(chǔ),即stash@{0}唧躲,如果要使用其他個(gè),git stash apply stash@{$num}碱璃, 比如第二個(gè):git stash apply stash@{1}(6)git stash pop :命令恢復(fù)之前緩存的工作目錄弄痹,將緩存堆棧中的對(duì)應(yīng)stash刪除,并將對(duì)應(yīng)修改應(yīng)用到當(dāng)前的工作目錄下,默認(rèn)為第一個(gè)stash,即stash@{0}嵌器,如果要應(yīng)用并刪除其他stash肛真,命令:git stash pop stash@{$num},比如應(yīng)用并刪除第二個(gè):git stash pop stash@{1}(7)git stash drop stash@{$num}:丟棄stash@{$num}存儲(chǔ)爽航,從列表中刪除這個(gè)存儲(chǔ)(8)git stash clear :刪除所有緩存的stash有時(shí)也可通過這種方法實(shí)現(xiàn)避免或解決沖突蚓让,當(dāng)你修改的內(nèi)容是最新的,但是你需要pull下來(lái)的代碼是需要被替換的讥珍,你pull的時(shí)候還是會(huì)沖突历极,可以先把你的修改stash臨時(shí)保存,pull完代碼以后在恢復(fù)stash的保存衷佃,即可替換pull下來(lái)的需要被替換的代碼趟卸,當(dāng)然不保存直接對(duì)比解決沖突也是可以的,看個(gè)人喜好了氏义。其他更好的用途相信在遇到更多問題的時(shí)候會(huì)慢慢發(fā)掘出來(lái)
暫時(shí)想到的常用的基本就這些了衰腌,關(guān)于多人開發(fā)沖突解決的有時(shí)候自己提交的時(shí)候 pull或push失敗 可以查看git status 是否多出了一些綠色的文件名稱,檢查文件沒有 ====的沖突提示以及修復(fù)沖突以后重新提交即可
<<<<<<<HEADCreatinganewbranchisquick&simple.=======CreatinganewbranchisquickANDsimple.>>>>>>>feature1
作者:霖深霧起不見你
鏈接:http://www.reibang.com/p/78246673c545
來(lái)源:簡(jiǎn)書
著作權(quán)歸作者所有觅赊。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處琼稻。