Git代碼管理工具的使用及注意事項(xiàng)

Git是一款免費(fèi)、開(kāi)源的分布式?版本控制系統(tǒng)?饲窿,用于敏捷高效地處理任何或小或大的項(xiàng)目蔽午。

這里推薦使用GIT的項(xiàng)目管理工具soucetree等晌柬,當(dāng)然已經(jīng)深入了解的可以使用git命令行直接操作刺下。

Git初始化绑嘹,一般代碼倉(cāng)庫(kù)會(huì)自動(dòng)生成。會(huì)在該倉(cāng)庫(kù)生成一個(gè).git隱藏文件夾橘茉,不能修改該文件夾下的任何內(nèi)容。

Git倉(cāng)庫(kù)分為三個(gè)區(qū):工作區(qū)姨丈、暫存區(qū)畅卓、倉(cāng)庫(kù)區(qū)

工作區(qū):日常我們編寫(xiě)代碼的地方,一般是本地工作的目錄就叫工作區(qū)蟋恬。

暫存區(qū):暫時(shí)存儲(chǔ)的區(qū)域翁潘,在git中,代碼不會(huì)直接從工作區(qū)提交到倉(cāng)庫(kù)區(qū)歼争,而是需要先從工作區(qū)提交到暫存區(qū)拜马,然后才能從暫存區(qū)推送到倉(cāng)庫(kù)區(qū)渗勘。暫存區(qū)的目的是避免誤操作。

倉(cāng)庫(kù)區(qū):一般是遠(yuǎn)程倉(cāng)庫(kù)(如GitHub俩莽、碼云-開(kāi)源中國(guó)等旺坠,遠(yuǎn)程倉(cāng)庫(kù)本質(zhì)本地倉(cāng)庫(kù)拓展而成的,所以也可以自己搭建)扮超,也有少部分是本地倉(cāng)庫(kù)取刃。將保存在暫存區(qū)域的內(nèi)容推送存儲(chǔ)到 Git 倉(cāng)庫(kù)中,同時(shí)生成版本號(hào)可以在版本節(jié)點(diǎn)添加標(biāo)簽備注信息出刷。對(duì)于倉(cāng)庫(kù)的版本節(jié)點(diǎn)我們可以任意切回滾到指定節(jié)點(diǎn)的代碼狀態(tài)璧疗。

Git的常見(jiàn)操作:

克隆(clone):從遠(yuǎn)程倉(cāng)庫(kù)URL加載創(chuàng)建一個(gè)與遠(yuǎn)程倉(cāng)庫(kù)一樣的本地倉(cāng)庫(kù)?

標(biāo)簽:倉(cāng)庫(kù)中每個(gè)節(jié)點(diǎn)的備注信息,一個(gè)分支可以有多個(gè)標(biāo)簽。

文件忽視:忽視某個(gè)文件的修改,往往用于配置文件馁龟,一般在倉(cāng)庫(kù)的根目錄下的.gitignore中崩侠,改文件中存儲(chǔ)忽視文件的路徑(文件的修改不會(huì)被添加,文件未被刪除)坷檩。

丟棄:本地文件中修改(添加)的東西會(huì)刪除啦膜,注意不是文件 。

移除:直接刪除本地文件淌喻。(可以通過(guò)拉取獲得git服務(wù)上的該文件)?

提交:把修改的內(nèi)容提交到暫存區(qū)僧家,暫存區(qū)內(nèi)在下一次推送前可進(jìn)行多次提交,每次提交都需要附加一個(gè)標(biāo)簽信息裸删,以區(qū)別或者記錄這次提交的內(nèi)容八拱。

添加(add):添加文件到緩存區(qū)?

暫存(git stash):保存工作現(xiàn)場(chǎng)?

拉取:把倉(cāng)庫(kù)中所在節(jié)點(diǎn)分支的最新信息拉取到暫存區(qū)

推送:把暫存區(qū)的內(nèi)容推送到所在的節(jié)點(diǎn)分支,并成為該節(jié)點(diǎn)分支的最新節(jié)點(diǎn)涯塔。

回滾:回滾一次提交肌稻。

分支(branch):創(chuàng)建/修改/刪除分枝?

檢出(checkout):切換不同分支?

變基:在有同一父節(jié)點(diǎn)的分支基礎(chǔ)上,將提交到某一分支上的所有修改都移至另一分支上匕荸,并在當(dāng)前分支上創(chuàng)建一個(gè)新的下一次的節(jié)點(diǎn)爹谭。

查看歷史:查看倉(cāng)庫(kù)的分支節(jié)點(diǎn)的提交信息。

工作流(Git Flow):團(tuán)隊(duì)工作時(shí)榛搔,每個(gè)人創(chuàng)建屬于自己的分枝(branch)诺凡,確定無(wú)誤后提交到master分枝?

Git分支的使用和說(shuō)明锅论。

舉個(gè)分支使用例子勤讽。假如你有一項(xiàng)任務(wù)。給你2箱水言询,一箱可樂(lè)和一箱雪碧尔觉,現(xiàn)在你需要把這2箱水搬到地點(diǎn)B并放入倉(cāng)庫(kù)記錄凉袱。但是一個(gè)人只能搬動(dòng)一箱水。那我們就可以指派一個(gè)人搬雪碧到地點(diǎn)B,列為分支①专甩;指派另外一個(gè)人搬可樂(lè)到地點(diǎn)A钟鸵,列為分支②。在他們搬的過(guò)程可能有很多種涤躲,可能會(huì)耗時(shí)棺耍、或者磕磕絆絆、又或者繞路等等篓叶,當(dāng)最終2個(gè)人都把水搬到地點(diǎn)B的時(shí)候烈掠,這2個(gè)人的任務(wù)就結(jié)束了,我們需要搬到可樂(lè)和雪碧放入倉(cāng)庫(kù)記錄完成最終結(jié)果缸托,這就相當(dāng)于分支操作中我們把分支①和分支②的結(jié)果合并了左敌。

從上面的舉例可以看出。分支的好處在于俐镐,當(dāng)我們有一個(gè)多任務(wù)并發(fā)進(jìn)行的需求時(shí)或者多人合作開(kāi)發(fā)時(shí)矫限,可以使這些任務(wù)或者開(kāi)發(fā)者互不干擾的進(jìn)行各自的工作,達(dá)到最終的目的后再合并各自的結(jié)果佩抹,從而達(dá)到最終目的叼风。當(dāng)然這里講的比較簡(jiǎn)單,合并過(guò)程中可能會(huì)出現(xiàn)的一些不可避免的如代碼沖突等棍苹,這些是需要人為解決的无宿。

一般我們會(huì)把分支分為主分支和其他分支。其他分支上的任務(wù)最終使用會(huì)合操作合并并到主分支上枢里。在平時(shí)的開(kāi)發(fā)使用過(guò)程中孽鸡,我們需要了解到自己所處的分支屬于哪個(gè)分支,任務(wù)目的是什么栏豺,避免分支過(guò)多引起的誤操作彬碱。

單一分支的使用和說(shuō)明

上面我們說(shuō)了多分支的情況奥洼,現(xiàn)在我們來(lái)講一下單一分支的操作和使用巷疼。在實(shí)際的開(kāi)發(fā)使用中我們常常也會(huì)遇到這樣的需求。同一項(xiàng)任務(wù)幾個(gè)人一起開(kāi)發(fā)灵奖,因?yàn)橹芷谶^(guò)短嚼沿,內(nèi)容也比較簡(jiǎn)單,這個(gè)時(shí)候我們?cè)偈褂梅种У脑?huà)就會(huì)比較繁瑣桑寨。因?yàn)槿绻龅揭粋€(gè)任務(wù)我們就使用分支的話(huà)伏尼,會(huì)使整個(gè)項(xiàng)目到處都充滿(mǎn)分支,看起來(lái)比較亂尉尾,維護(hù)和迭代也會(huì)比較慢。所以大多數(shù)的情況下我們也會(huì)在單一分支上操作燥透。

在單一分支上多個(gè)開(kāi)發(fā)者怎么同時(shí)操作呢沙咏。除了之前的提交和推送辨图,我們引入拉取這個(gè)操作。同樣我們舉個(gè)例子肢藐。我們把每個(gè)開(kāi)發(fā)者看做在同一個(gè)公司的會(huì)計(jì)故河。當(dāng)一個(gè)會(huì)計(jì)完成了手中的財(cái)務(wù)工作過(guò)后,我們需要重新核對(duì)整理公司的賬目吆豹,這個(gè)時(shí)候我們?cè)谔峤蛔约汗ぷ髦坝愕模托枰「聦?shí)時(shí)的公司賬目信息,看時(shí)候跟你做這項(xiàng)工作之前一致痘煤,如果不一致凑阶,我們就需要拉取最新的公司賬目信息,并整理核對(duì)自己提交的這項(xiàng)工作到最新的公司賬目信息中衷快,其中可能會(huì)有修改可能也沒(méi)有宙橱。整理完之后我們?cè)谧罱K推送到公司賬目信息中。

這里操作可以簡(jiǎn)單的分為以下幾步:提交(完成你的工作)→拉取(獲得項(xiàng)目的最新信息和狀態(tài))→合并(把你完成的工作合并到項(xiàng)目的最新信息和狀態(tài)中)→推送(把你合并后的最新項(xiàng)目信息更新到倉(cāng)庫(kù)中蘸拔,此時(shí)你更新的節(jié)點(diǎn)就是你所處分支的最新節(jié)點(diǎn))师郑。

切換分支和刪除分支。

切換分支调窍,由于項(xiàng)目需求我們常潮γ幔可能會(huì)遇到在某個(gè)已經(jīng)迭代的版本上增加新的需求迭代,這個(gè)時(shí)候我們就需要切換到那個(gè)分支上再進(jìn)行操作邓萨。注意我們?cè)谇袚Q到任意分支之前地梨,我們需要保證自己所處分支的修改內(nèi)容已經(jīng)提交到倉(cāng)庫(kù)中,否則一旦切換過(guò)去先誉,你之前的修改內(nèi)容將不會(huì)再有保存湿刽。這里可以把切換分支看成是一種覆蓋的表現(xiàn)。

刪除分支褐耳,刪除分支的時(shí)候需要區(qū)別刪除本地分支和遠(yuǎn)程分支诈闺,一旦刪除,將清除分支節(jié)點(diǎn)的所有信息铃芦。一般很少會(huì)有刪除分支操作雅镊。如果一個(gè)分支被廢棄時(shí),我們需要?jiǎng)h除分支,在徹底刪除一個(gè)分支時(shí),需要三個(gè)步驟刪除①本地分支②刪除遠(yuǎn)程分支③刪除本地追蹤分支。如果執(zhí)行了①②③刃滓,那么刪除的分支就不可恢復(fù)了仁烹。刪除本地可以通過(guò)遠(yuǎn)程恢復(fù)本地,刪除遠(yuǎn)程可以通過(guò)本地恢復(fù)遠(yuǎn)程咧虎。

Git回滾和重置

所處狀態(tài)的基本定義

HEAD(頭)

HEAD 是當(dāng)前分支引用的指針卓缰,它總是指向該分支上的最后一次提交。 這表示 HEAD 將是下一次提交的父結(jié)點(diǎn)。 通常征唬,理解 HEAD 的最簡(jiǎn)方式捌显,就是將它看做 你的上一次提交 的快照,可以看做是一個(gè)提交節(jié)點(diǎn)总寒。遠(yuǎn)程倉(cāng)庫(kù)就是這些節(jié)點(diǎn)連成的扶歪。

Index? (索引)

也可以被認(rèn)為是staging area(暫存區(qū)),是一堆將在下一次commit中提交的文件摄闸,提交之后善镰,它就是HEAD的父節(jié)點(diǎn)(git add添加的文件)

working copy (工作副本)

當(dāng)前工作目錄下的文件(一般指,有修改年枕,沒(méi)有g(shù)it add,沒(méi)有g(shù)it commit的文件)

回滾提交一個(gè)新的版本炫欺,將需要revert的版本的內(nèi)容再反向修改回去,版本會(huì)遞增画切,不影響之前提交的內(nèi)容

重置是把HEAD向后移動(dòng)了一下竣稽,即版本退回。重置有一下幾個(gè)操作霍弹。

git reset hard(強(qiáng)行合并):此次提交之后的修改不做任何保留毫别,干凈的工作區(qū)。

git reset soft(軟合并): 此次提交之后的修改會(huì)被退回到暫存區(qū)典格。

git reset mixed(混合合并):此次提交之后的修改會(huì)被退回到未暫存區(qū)岛宦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市耍缴,隨后出現(xiàn)的幾起案子砾肺,更是在濱河造成了極大的恐慌,老刑警劉巖防嗡,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件变汪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蚁趁,警方通過(guò)查閱死者的電腦和手機(jī)裙盾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)他嫡,“玉大人番官,你說(shuō)我怎么就攤上這事「质簦” “怎么了徘熔?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)淆党。 經(jīng)常有香客問(wèn)我酷师,道長(zhǎng)讶凉,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任窒升,我火速辦了婚禮缀遍,結(jié)果婚禮上慕匠,老公的妹妹穿的比我還像新娘饱须。我一直安慰自己,他們只是感情好台谊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布蓉媳。 她就那樣靜靜地躺著,像睡著了一般锅铅。 火紅的嫁衣襯著肌膚如雪酪呻。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天盐须,我揣著相機(jī)與錄音玩荠,去河邊找鬼。 笑死贼邓,一個(gè)胖子當(dāng)著我的面吹牛阶冈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播塑径,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼女坑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了统舀?” 一聲冷哼從身側(cè)響起匆骗,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎誉简,沒(méi)想到半個(gè)月后碉就,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡闷串,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年瓮钥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窿克。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡骏庸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出年叮,到底是詐尸還是另有隱情具被,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布只损,位于F島的核電站一姿,受9級(jí)特大地震影響七咧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叮叹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一艾栋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蛉顽,春花似錦蝗砾、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至曾棕,卻和暖如春扣猫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背翘地。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工申尤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衙耕。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓昧穿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親臭杰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子粤咪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

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

  • 今天是失業(yè)的第四天,終于有時(shí)間來(lái)寫(xiě)點(diǎn)東西了,有的同學(xué)可能對(duì)于代碼管理工具不是很了解,今天先來(lái)給大家講下git的用法...
    藝術(shù)家吳老師閱讀 1,732評(píng)論 0 0
  • 這篇博文是自己在學(xué)習(xí)git過(guò)程中的思考總結(jié)。本文僅僅代表個(gè)人的看法渴杆,如有不妥地方還請(qǐng)本文文末留言寥枝。 ?? 原文鏈接g...
    Ming_Hu閱讀 1,075評(píng)論 4 18
  • 一、基本概念: 注:對(duì)于git的分布式概念及其優(yōu)點(diǎn)磁奖,不重復(fù)說(shuō)明囊拜,自己百度或谷歌。本文中涉及到指令前面有$的比搭,在cm...
    大廠(chǎng)offer閱讀 1,425評(píng)論 0 3
  • 安裝Git Git的下載地址:Git官網(wǎng)下載地址 Git本地倉(cāng)庫(kù)和命令 配置用戶(hù) 下載完Git后冠跷,右鍵會(huì)有一個(gè)Gi...
    TokyoZ閱讀 4,502評(píng)論 1 7
  • (預(yù)警:因?yàn)樵敿?xì),所以行文有些長(zhǎng)身诺,新手邊看邊操作效果出乎你的預(yù)料) 一:Git是什么蜜托? Git是目前世界上最先進(jìn)的...
    axiaochao閱讀 1,932評(píng)論 1 8