聲明:這是個人的喜好習慣和經(jīng)驗,目的是職業(yè)新人了解最少的命令捏鱼,最高效的管理代碼执庐。本文不涉及git的高級操作假設(shè)是在一個大公司里面工作,一個代碼庫里导梆,有master轨淌,A迂烁,B,C......等遠端分支递鹉。首先會通過命令獲取到代碼到本地盟步,假設(shè)下載下來當前分支是master。
1. 在master分支開發(fā)代碼并提交
? ? ? ? 寫代碼前和合代碼時都要對代碼進行g(shù)it pull操作更新躏结。中間寫代碼時發(fā)現(xiàn)別人合了代碼却盘,最好也更新一下,不讓等自己代碼調(diào)測完成合代碼時發(fā)現(xiàn)別人的改動波及自己的功能媳拴,那就得重改重測了黄橘。
????????git pull代碼沖突的時才需要做特殊處理,這時候代碼是pull不下來的屈溉,就先git stash -u把自己代碼全部暫存起來(建議只在更新代碼時用git stash塞关,正因為stash很方便,所以濫用的話stash里面會有很多你不認識的代碼子巾,我平時可能5分鐘就忘了當時stash的是什么代碼)帆赢,這時候git pull是不會沖突的,代碼更新到最新了砰左,然后git stash pop匿醒,再慢慢解決沖突。
? ? ? ? 因為這時候沖突的代碼有兩份夾雜在你的代碼編輯器里缠导,沖突少的時候可以很方便的解決廉羔,但是有時候沖突非常多,夾雜的兩份代碼讓你根本分不清楚僻造。這種情況就把當前代碼git reset --hard [pull前的代碼id]憋他。這時候stash里面因為沖突并沒有pop出來,git幫你保留了一份副本髓削,這時候再重新pop出來竹挡,再用最傳統(tǒng)的用比對工具合入代碼吧。
? ? ? ? 如果沖突不多的話立膛,就直接在代碼編輯器里面把代碼改成自己想要的代碼揪罕,然后git add -A,git commit 就可以合入代碼了宝泵。
2. 切換分支代碼開發(fā)
2.1 保存當前分支
? ? ? ? git stash -u的方法是很方便的好啰,但前面我說了最好不要用。正確的姿勢是git add -A儿奶,git commit -m框往,不要把代碼推送,只是暫時commit起來闯捎,代碼就肯定不會丟了椰弊。(注意:養(yǎng)成切換分支的時候许溅,本地一定是干凈的,git status沒有修改的文件)
2.2 切換分支開發(fā)
2.3 回到原分支取代碼
? ? ? ? 切回原分支后秉版,git reset [之前暫存的commitid的前一個id]贤重,就能得到之前的代碼了,然后就繼續(xù)開發(fā)代碼就好了沐飘。
3. git cherry-pick [commitid]
? ? ? ? 很好用的命令游桩,必學(xué)。
? ??????
4.其他的好習慣的點
● 每次用完stash耐朴,要保證stash是清空的借卧,否則下次你看stash的時候幾乎都會忘了之前的stash是什么內(nèi)容,刪也不敢刪筛峭。暫存代碼就用commit就好了铐刘,commit帶信息。雖然stash的時候也可以帶附加信息影晓,但是commit是在和當前分支對應(yīng)的镰吵。stash的空間卻是所有分支共用的。
● 分支時常做一下檢查挂签,沒用的分支要清理疤祭。特別是臨時分支。
● 做一個大需求的時候饵婆,可能周期比較長勺馆,代碼變動可能包含(重構(gòu),優(yōu)化侨核,bug解決草穆,新接口開發(fā),工具輔助函數(shù)搓译,第三方庫代碼)等悲柱,意思就是一些無害合入且基本已經(jīng)固定需要這樣修改的了,可以先合入些己。這樣你在開發(fā)代碼的時候就不至于看到一大片的改動豌鸡,你關(guān)心檢查的地方就會變少,因為你已經(jīng)把一些肯定正確的代碼合上去了段标,就少花了一部分精力在檢查這部分代碼上涯冠。另外還有一些代碼優(yōu)化,小重構(gòu)等怀樟,盡早合上去功偿,否則到時候可能會有很多沖突盆佣。即小步迭代往堡。這類似一個功能函數(shù)只做一件事械荷,不要一次代碼合入里面做了太多的事情,到時候代碼在哪次合入的都分不清楚虑灰,就失去了commit message的意義吨瞎。
● 新建的分支名寺晌,最好有一套自己的命名規(guī)則爷恳。臨時分支就加下temp,提醒自己記得把它處理掉然想,有的人創(chuàng)建分支時就很隨意对湃,隨便取個名字崖叫。對自己要求嚴格些,會產(chǎn)生意想不到的效率拍柒。
● 有的人習慣一天寫完代碼就commit一次心傀,到合入代碼時就有多次commit記錄。不要這樣做拆讯,commit要是有意義的一個里程碑脂男,而不是無意義的時間軸記錄。比如完成了接口編寫可以commit一次种呐,假如沒什么特別的意義宰翅,第二天來的時候,最好是git reset到上一個id爽室,繼續(xù)開發(fā)代碼汁讼。