Git在工作中的常見使用(一)

1.前言


版本控制系統(tǒng)對于每一個開發(fā)人員而言肯定不會陌生词疼。其實任何人在工作中都會遇到需要合作或迭代的時候,有個工具管理勞動成果是件很有意義的事咐旧。你可以清晰地知道每次工作的內(nèi)容恩静,每個人的工作劃分和進度,甚至可以判斷大家工作的積極性等拉岁。代碼便是開發(fā)人員的工作內(nèi)容,實現(xiàn)的功能以及較之前的改進便是工作成果惰爬,而且它還是文件形式喊暖,所以一個能管理文件變化的系統(tǒng)就是所需的版本控制系統(tǒng)。目前主流的有SVN和Git撕瞧,但兩者之間的區(qū)別和優(yōu)缺點不是本文的重點陵叽。下面來講一講如何目的清晰地使用Git的常見功能狞尔。

2.結(jié)構(gòu)劃分


Git包含兩個區(qū)域,一個叫工作區(qū)巩掺,另一個叫版本庫偏序。前者就是開發(fā)中編寫代碼的區(qū)域,也是被管理的文件存放的區(qū)域胖替;后者則是隱藏的.git目錄研儒,內(nèi)部存儲了工作區(qū)文件每個版本的信息,以及版本間的變化独令。當(dāng)用git命令操作時端朵,實際就是對版本庫信息的改變,記錄工作區(qū)內(nèi)容的變化燃箭。

git_log.png

上圖是從Android Studio中截取的逸月,里面的每個名詞都可以拿出來講一講。這是版本控制文集的第一篇遍膜,后續(xù)的文章將會詳細講解對應(yīng)的含義及相關(guān)操作。先看那三個彩色的內(nèi)容瓤湘,HEAD是一個指針瓢颅,指向當(dāng)前工作區(qū)文件所處的版本,改變它的指向?qū)凑瞻姹編斓挠涗浉淖児ぷ鲄^(qū)的文件弛说。版本管理除了按時間先后迭代外挽懦,還可以按功能劃分。develop表示本地分支(默認是master木人,由于是內(nèi)部開發(fā)用而改名)信柿,通常按功能劃分,是開發(fā)的基礎(chǔ)醒第,工作區(qū)中的文件同樣根據(jù)當(dāng)前所在分支發(fā)生改變渔嚷。origin/develop則指的是遠程倉庫的分支在本地的位置,代碼文件托管在服務(wù)器上稠曼,只有拷貝到本地才能與本地分支進行比較形病,從而執(zhí)行更新或合并操作。

3.本地的版本控制


Git最大的特色在于擁有的.git版本庫霞幅,不是每次提交都得依賴遠程倉庫漠吻。當(dāng)僅需管理自己提交的代碼時,可以在不聯(lián)網(wǎng)的情況下一直使用司恳。若需要與他人合作途乃,則可以將版本庫與遠程倉庫同步即可。

3.1.添加變化

不管是對代碼的增加扔傅、刪除或修改耍共,都需要將變化添加到版本庫中來完成通知烫饼,所以最基本的操作便是添加變化。具體步驟為一下四個部分:

  • git status划提,用來查看文件狀態(tài)枫弟。未修改之前,工作區(qū)的文件與版本庫記錄的一致鹏往。當(dāng)修改后淡诗,使用此命令可以看到差異的文件。
  • git diff伊履,用來查看差異文件的變化內(nèi)容韩容。通過行首的---+++符號來表示增加、刪除和修改的位置唐瀑。
  • git add群凶,用來添加變化到暫存區(qū)。添加的文件變化有兩種哄辣,其一是以前存在请梢,后被修改過的;其二是以前不存在力穗,后新加入的毅弧。
  • git commit,用來將暫存區(qū)的內(nèi)容全部提交到某個分支上当窗,并清空暫存區(qū)够坐。需注意的是,分支是代碼功能上的區(qū)分崖面,是修改代碼的基礎(chǔ)元咙;而版本是某分支在時間上的變化
3.2.撤銷變化

當(dāng)覺得修改的文件有問題想撤銷時巫员,需根據(jù)變化傳遞的位置來做不同處理庶香。通過上面的一節(jié)可以知道分為四種情況:

  • 變化還在工作區(qū),通過git checkout简识,將工作區(qū)還原到版本庫記錄的那樣脉课。通常用.表示所有文件,若僅對某個文件财异,可以后加文件名倘零,其它命令符同理
  • 變化位于暫存區(qū)戳寸,通過git reset呈驶,移動變化回工作區(qū)。通常參數(shù)為HEAD疫鹊,先把工作區(qū)的代碼還原到HEAD所指向版本袖瞻,即修改前的版本司致,再添加撤回的變化。
  • 變化在本地分支聋迎,也是通過git reset脂矫。由于HEAD表示當(dāng)前版本,即分支最新版本霉晕,所以參數(shù)為HEAD^HEAD^^表示上一個或上上一個版本庭再,或HEAD~n(n為數(shù)字),表示回退n個版本牺堰。同理暫存區(qū)為空拄轻,所以不會有變化移到工作區(qū)∥昂可是恨搓,若已經(jīng)提交很多次,記不住哪一次修改了什么筏养,怎么辦斧抱?git log可以按時間由近到遠查看提交日志,其中一長串SHA1的字符串就是commit id渐溶,唯一標識某次提交辉浦,用它(前七位足夠了)代替HEAD就可以切換到任意版本。
  • 撤銷版本回退掌猛,是一件麻煩的事。由于git log不會顯示HEAD之后的commit id眉睹,所以無法切換到HEAD之后的版本荔茬。這時需git reflog查詢自己所有的操作以及對應(yīng)版本的commit id,便又可以git reset了竹海。

4.遠程的版本控制


Git是分布式的版本控制系統(tǒng)慕蔚,由上面可知,分布式體現(xiàn)在每個本地節(jié)點都可以獨立完成版本控制斋配,但總還是需要Master節(jié)點來協(xié)調(diào)的孔飒。遠程倉庫便是Master節(jié)點,通過同步各個本地節(jié)點的變化到倉庫服務(wù)器艰争,從而合并所有的變化坏瞄,形成最新的代碼。
  由于這節(jié)內(nèi)容較多甩卓,放到下一篇文章中具體分析說明鸠匀。

5.總結(jié)


對于版本控制一定要抓住變化傳遞這個點。每個版本之間的區(qū)別就是彼此間的變化逾柿,版本庫中存的也是變化缀棍,而不是每個版本的所有變化文件宅此,那樣太浪費磁盤空間了,尤其是項目特別大時爬范。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末父腕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子青瀑,更是在濱河造成了極大的恐慌璧亮,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狱窘,死亡現(xiàn)場離奇詭異杜顺,居然都是意外死亡,警方通過查閱死者的電腦和手機蘸炸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門躬络,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搭儒,你說我怎么就攤上這事穷当。” “怎么了淹禾?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵馁菜,是天一觀的道長。 經(jīng)常有香客問我铃岔,道長汪疮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任毁习,我火速辦了婚禮智嚷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纺且。我一直安慰自己盏道,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布载碌。 她就那樣靜靜地躺著猜嘱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嫁艇。 梳的紋絲不亂的頭發(fā)上朗伶,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機與錄音步咪,去河邊找鬼腕让。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纯丸。 我是一名探鬼主播偏形,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼觉鼻!你這毒婦竟也來了俊扭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤坠陈,失蹤者是張志新(化名)和其女友劉穎萨惑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仇矾,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡庸蔼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了贮匕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姐仅。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖刻盐,靈堂內(nèi)的尸體忽然破棺而出掏膏,到底是詐尸還是另有隱情,我是刑警寧澤敦锌,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布馒疹,位于F島的核電站,受9級特大地震影響乙墙,放射性物質(zhì)發(fā)生泄漏颖变。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一听想、第九天 我趴在偏房一處隱蔽的房頂上張望腥刹。 院中可真熱鬧,春花似錦哗魂、人聲如沸肛走。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至邻吞,卻和暖如春组题,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抱冷。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工崔列, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓赵讯,卻偏偏與公主長得像盈咳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子边翼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git鱼响,從https:/...
    落魂灬閱讀 12,651評論 4 54
  • 前幾年在深圳學(xué)習(xí)個人形象設(shè)計課程,一同學(xué)住7天酒店组底,那時候看到7天酒店的環(huán)境還很新丈积,感覺特別好! 現(xiàn)在輪到我住的時...
    Mary妹善閱讀 227評論 0 0
  • 每一段青春都藏著一個夢 那些生命里認真走過的人债鸡,你們是否安好江滨。 歲月帶走了我們的年少輕狂。 曾經(jīng)的夢想厌均, 你們唬滑,是...
    紫蘇00閱讀 125評論 0 0
  • 1. 一階導(dǎo)數(shù)應(yīng)用:圖像的梯度 1) 用途: 在圖像處理中, 常用梯度求取圖像的...
    xieyan0811閱讀 2,569評論 0 4
  • 在一個女人接近三十歲的同時,結(jié)婚就突然變成一道必選題莫秆。 看了一篇愛情兜兜轉(zhuǎn)轉(zhuǎn)的文章间雀,剛開始我也被故事的情節(jié)感動了,...
    沁木閱讀 243評論 0 2