git使用簡要說明

工具下載安裝

  • git客戶端工具
  • 圖形化操作工具TortoiseGit
  • TortoiseGit漢化語言包

內部下載地址:ftp://192.168.3.2/版本管理/Git/ 帳號密碼:ftpdown down_888

  1. Git-2.12.2.2-64-bit
  2. TortoiseGit-2.4.0.2-64bit
  3. TortoiseGit-LanguagePack-2.4.0.0-64bit-zh_CN

開始干活

常用配置

通過TortoiseGit工具的設置,可以提高日常操作代碼倉庫的效率,請根據(jù)自己后續(xù)的需要回看此點進行配置.

git進入設置菜單

  1. 設置右鍵直接可以看到的菜單,比如拉取、提交边坤、推送痕貌、簽出等常用菜單項
  2. 設置隱藏菜單項,即在二級菜單中你都找不到的,可以防止干擾,使用一定時間后可以根據(jù)自己的需要干掉一部分,清爽舒心
  3. 查看差異及合并工具指定,此處強烈安利BCompare,自帶的工具讓人感到絕望
    具體配置項
克隆版本庫(下載代碼)

打開 公司內部代碼倉庫,定位參與開發(fā)的版本庫并打開到概況頁面(默認即進入概況頁)

克隆時選擇的網(wǎng)址

本地準備好存放代碼的目錄,右鍵克隆(git clone)并確認窗口內的目錄是否為想要存放代碼的位置,請一定按默認名稱存儲,防止多個項目的代碼搞混

工作目錄右鍵進行克隆

克隆地址設置
獲取最新代碼

首次克隆代碼,本地代碼倉庫為遠程倉庫設置的缺省分支的最新提交,若開發(fā)階段暫未啟用新分支的項目組可以不需要再次獲取代碼,否則通過右鍵菜單中的拉取(git pull)獲取最新提交的代碼.

拉取與獲取的區(qū)別签夭?(git pull & fetch

  • 拉取:獲取最新提交代碼 + 獲取
  • 獲取:僅獲取遠程倉庫最新分支、標簽等指針類信息
分支策略(項目經(jīng)理關注)

git帶有非常強大的分支管理能力,可以滿足各類研發(fā)或迭代項目的版本控制需要,很多靈活高級的用法可以根據(jù)項目的需要去調整,大家可以根據(jù)相關的教程模擬測試并應用,此處不再贅述.本次僅以最簡單常見的敏捷開發(fā)過程中如何保障發(fā)布版本與開發(fā)不相干擾.

網(wǎng)店管家(云端版)分支及標簽

單主干模式由于所有開發(fā)人員都在維護同一套版本代碼,如果沒有自動集成及自動化測試支撐,無法確保主干代碼的穩(wěn)定性.通常已發(fā)布的產品,至少會有兩個主分支,其中之一對應生產環(huán)境,另一支對應開發(fā)環(huán)境,線上問題的修正與快速迭代同步進行.

  • 默認創(chuàng)建的版本已存在master分支,此分支用于發(fā)布到生產環(huán)境,生產環(huán)境出現(xiàn)問題基于此分支創(chuàng)建新分支進行修復,修復完成后合并到master及開發(fā)分支.
  • 創(chuàng)建一個用于新功能研發(fā)的分支develop,每次新功能的發(fā)布都基于此分支,發(fā)布后的分支需要及時合并到master分支.

如果項目組中開發(fā)成員較多,可以再切割為更小規(guī)模的小組用于某獨立新功能的研發(fā).

日常研發(fā)是否需要分拆多個分支進行,取決與團隊的規(guī)模,通過人員或功能的劃分盡可能的減少多人改寫同一代碼單元的可能性,以減少日常沖突出現(xiàn)的幾率.

創(chuàng)建分支

項目經(jīng)理根據(jù)研發(fā)團隊版本控制需要創(chuàng)建對應分支,可以通過簽出(git checkout)時選擇create new branch或直接右鍵創(chuàng)建分支(create branch).
開發(fā)成員根據(jù)為避免沖突及代碼覆蓋,可以簽出時創(chuàng)建本地工作分支(原因見如何減少沖突部分).

分支選擇(成員關注)
  1. 研發(fā)角色
    根據(jù)項目經(jīng)理分配,管理與開發(fā)任務對應的開發(fā)分支,日常開發(fā)時,請確保分支選擇正確,每日開始工作前獲取最新代碼,確認分支名稱.

查看或查看分支名稱,通過菜單右鍵中的簽出(git check out)來操作或查看.

到需要提測發(fā)布階段時,從develop分支開出發(fā)布分支(release類型),系統(tǒng)測試完成后合并到developmaster分支并刪除該發(fā)布分支.

  1. 維護角色
    值班或其他排查問題的同事,需要將分支定位到master分支進行跟蹤,發(fā)現(xiàn)緊急問題基于master分支開出修復新分支(hotfix類型),修復后及時合并到主干及開發(fā)分支并刪除修正分支.
分支類型 命名規(guī)范 創(chuàng)建自 合并到 說明
feature feature/* develop develop 新功能
release release/* develop developmaster 一次新版本的發(fā)布
hotfix hotfix/* master developmaster 生產環(huán)境中發(fā)現(xiàn)的緊急bug的修復
提交代碼

提交與推送的區(qū)別(git commit & git push)
前置是提交到本地的代碼倉庫,后者是將本地代碼倉庫已提交的內容同步到遠程代碼倉庫

代碼做出更改后,右鍵選擇提交,備注本次提交變更的內容,或者在vs等ide中集成的工具直接提交.也可以提交并推送,推送時可能會遇到提示本地代碼倉庫版本較低或出現(xiàn)沖突的情況,具體處理見合并分支及沖突解決部分.

合并分支(merge)
  1. 開發(fā)成員的代碼合并

每個開發(fā)的電腦上都相當于有一套版本庫,在將代碼推送到遠程倉庫時,就涉及代碼合并.

原因說明
從遠程拉取最新代碼時,相當于建立了一個遠程分支的分支,并基于此分支做后續(xù)改動,而遠程的分支又有其他同事在同步改動,此時就出現(xiàn)兩個不同的分支,所以在拉取代碼時也相當于做了一次代碼合并,一旦代碼存在沖突就需要做合并

  1. 項目經(jīng)理的代碼合并

新功能的發(fā)布\生產環(huán)境bug修正,最終都需要合并到masterdevelop分支,如果功能劃分時重合度較高,此時合并代碼的工作量多\風險高.
具體合并的方法:

  1. 先簽出到目標分支上,拉取最新代碼.
  2. 操作合并(merge),選擇源分支(及需要合并到主干或開發(fā)分支的工作分支).
  3. 通過日志與合并前的最后一次提交做對比,復核代碼的正確性.
  4. 如果3中出現(xiàn)沖突,按下方解決沖突的方法處理.
沖突解決(resolve conflicts)

具體開發(fā)過程中會發(fā)現(xiàn),其實沖突做所難免,大家都需要知道如何正確的解決沖突.

  1. 何為沖突

多人在同時維護同一份代碼文件且git無法判斷是否改動不同的代碼塊時,就需要人工介入?yún)f(xié)助完成無法自動合并的內容.

發(fā)現(xiàn)沖突

沖突處理的可選方案

  1. 處理沖突

可以通過BCompare直觀的查看沖突的原因,從下圖中可以看出解決沖突涉及三個版本(BASE LOCAL REMOTE),其中BASE為沖突產生的兩個分支最近一次繼承的提交(都是從此出衍生而來).

解決沖突

根據(jù)實際情況整合得到正確的輸出在工作目錄下.

創(chuàng)建標簽(create tag)

標簽作用是定位到某個穩(wěn)定的版本,可以供發(fā)布時回滾或問題追溯,標簽的使用與分支基本一致,差別在于標簽不可再次提交改動,具體應用同如何簽出到某個分支.

  • 項目進入發(fā)布階段時,項目經(jīng)理需要及時對穩(wěn)定的developmaster分支打上標簽
  • 生產環(huán)境出現(xiàn)bug修復后及時給master分支加上新標簽
如何減少沖突

解決沖突是非常耗費精力且風險很高的一項工作,而我們通過一些技巧可以避開一些不必要的沖突.

  1. 合理劃分各開發(fā)成員維護代碼的范圍,盡可能的減少多人維護同一單元的情況出現(xiàn).可以通過模塊的劃分\公共單元特定人維護等工作任務分配時進行物理隔離.
  2. 合理拆分開發(fā)團隊,通過分支策略隔離日常開發(fā)過程中的沖突(注:不能解決發(fā)布時合并代碼的沖突).
  3. 開發(fā)成員在具體開發(fā)過程中,盡量自行在本機工作區(qū)再次建立工作分支,在專項工作完成后再合并到開發(fā)分支并推送到遠程倉庫.


    git日常開發(fā)分支管理

少量修正代碼,可以不新建分支再合并,可以直接調整完后不提交,使用貯藏(stash save)將當前的變更存儲起來,然后再次拉取最新代碼,再彈出貯藏(pop stash).
另外可以通過貯藏列表(stash list)查看多次貯存的內容

如何避免覆蓋他人代碼

當你若無其事的推送完一次代碼,不久后隊友發(fā)現(xiàn)令人絕望的事故---提交的代碼不見了!
沒有動過他們的代碼\沒看到有任何沖突的提示,為什么???
具體的原因基于git自動合并代碼的機制,合并代碼時基準版本是local而不是remote,當發(fā)現(xiàn)你本地的文件較新時(與本地操作系統(tǒng)的文件系統(tǒng)有關),它可能會認為你把部分代碼刪除了,然后他人所加的代碼自然被無情的覆蓋.
為了減少不必要的麻煩(可能整個團隊都要為此做一次代碼恢復...),大家最好參照如何減少沖突部分推薦的做法進行日常的版本維護(可能有其它更實用的辦法,集思廣益).另外再每次推送代碼到遠程倉庫后,請按開發(fā)規(guī)約review提交的代碼,如果發(fā)現(xiàn)自己提交中包含多個未改動的文件,及時找項目經(jīng)理協(xié)調解決減少對其他成員的影響.

如何恢復被覆蓋代碼
  1. 先定位到源頭,找到該成員提交前最后一位其他成員的提交
  2. 本地代碼拉取到最新狀態(tài),復原(revert to this commit)指定的提交(含工作區(qū)與倉庫索引項,最下面的選項)
  3. 推送到遠程倉庫,推送時把強制(force)選項中的 知道所有的變更(known changes) 勾選,確認后將強制把遠程倉庫的代碼恢復到此提交
  4. 所有項目成員檢查本地代碼倉庫,是否包含源頭中被覆蓋的提交
  5. 源頭及在被覆蓋的代碼基礎上做過代碼改動的成員,按如下步驟修復:
    5.1 確認所有內容提交后在此本地分支上建立一個新的分支
    5.2 將工作分支復原到未被影響的提交(可再拉取一次確保最新)
    5.3 將剛才新建的分支合并到工作分支,提交并推送到遠程倉庫

入門到精通(DIY)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末滩租,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子利朵,更是在濱河造成了極大的恐慌律想,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绍弟,死亡現(xiàn)場離奇詭異技即,居然都是意外死亡,警方通過查閱死者的電腦和手機樟遣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門而叼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人豹悬,你說我怎么就攤上這事澈歉。” “怎么了屿衅?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長莹弊。 經(jīng)常有香客問我涤久,道長,這世上最難降的妖魔是什么忍弛? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任响迂,我火速辦了婚禮,結果婚禮上细疚,老公的妹妹穿的比我還像新娘蔗彤。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布然遏。 她就那樣靜靜地躺著贫途,像睡著了一般。 火紅的嫁衣襯著肌膚如雪待侵。 梳的紋絲不亂的頭發(fā)上丢早,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音秧倾,去河邊找鬼怨酝。 笑死,一個胖子當著我的面吹牛那先,可吹牛的內容都是我干的农猬。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼售淡,長吁一口氣:“原來是場噩夢啊……” “哼斤葱!你這毒婦竟也來了?” 一聲冷哼從身側響起勋又,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤苦掘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后楔壤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹤啡,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年蹲嚣,在試婚紗的時候發(fā)現(xiàn)自己被綠了递瑰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡隙畜,死狀恐怖抖部,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情议惰,我是刑警寧澤慎颗,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站言询,受9級特大地震影響俯萎,放射性物質發(fā)生泄漏。R本人自食惡果不足惜运杭,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一夫啊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辆憔,春花似錦撇眯、人聲如沸报嵌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锚国。三九已至,卻和暖如春来候,著一層夾襖步出監(jiān)牢的瞬間跷叉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工营搅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留云挟,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓转质,卻偏偏與公主長得像园欣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子休蟹,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內容

  • Git 是目前最流行的分布式版本控制系統(tǒng)之一沸枯。 版本控制指的是,記錄每次版本變更的內容和時間等細節(jié)赂弓,保留各版本之間...
    神齊閱讀 1,425評論 0 7
  • 這篇博文是自己在學習git過程中的思考總結绑榴。本文僅僅代表個人的看法,如有不妥地方還請本文文末留言盈魁。 ?? 原文鏈接g...
    Ming_Hu閱讀 1,075評論 4 18
  • 多種多樣的工作流使得在項目中實施Git時變得難以選擇翔怎。這份教程提供了一個出發(fā)點,調查企業(yè)團隊最常見的Git工作流杨耙。...
    JSErik閱讀 4,403評論 2 8
  • 一赤套、基本概念: 注:對于git的分布式概念及其優(yōu)點,不重復說明珊膜,自己百度或谷歌容握。本文中涉及到指令前面有$的,在cm...
    大廠offer閱讀 1,425評論 0 3
  • 今夜,我走過廣場 如走過無數(shù)次的故鄉(xiāng) 大雁塔竹祷,千年守望 守望一個遙遠的夢想 鼓角爭鳴介蛉,秧歌瘋狂 腰肢扭曲,燈火輝煌...
    楊林柯閱讀 1,276評論 2 4