![]() ![]() |
Git學(xué)習(xí)手冊(cè) ![]() 本書(shū)以簡(jiǎn)單、直觀、形象的方式教授Git,讓你對(duì)Git版本控制的工作原理建立深刻的感性認(rèn)識(shí)。通過(guò)顏色、情景和實(shí)踐練習(xí),你定能信心滿滿,學(xué)會(huì)使用這個(gè)工具。本書(shū)循序漸進(jìn),你不會(huì)陷入未知術(shù)語(yǔ)或概念的困境。本書(shū)涵蓋以下內(nèi)容:下載Git,初始化本地倉(cāng)庫(kù)。把文件添加到暫存區(qū)域并進(jìn)行提交。創(chuàng)建、切換和刪除分支。合并和變基分支。使用遠(yuǎn)程倉(cāng)庫(kù),包括克隆、推送、拉取和獲取。使用拉取請(qǐng)求與他人協(xié)作。 這是一本非常有趣、易于理解且非常全面的指南,定能讓你熟練掌握Git知識(shí)。 前言我從未想過(guò)寫(xiě)一本教授Git 的書(shū)。但是,經(jīng)歷一些事情之后,我幸運(yùn)地發(fā)現(xiàn)一個(gè)創(chuàng)意,能以簡(jiǎn)單的方式教授這項(xiàng)技術(shù)。在一個(gè)Web 開(kāi)發(fā)編程訓(xùn)練營(yíng)中,我第一次聽(tīng)說(shuō)Git。訓(xùn)練營(yíng)的老師向?qū)W生們簡(jiǎn)單介紹了Git,可惜所有項(xiàng)目都是單獨(dú)完成的,沒(méi)有必要深入使用Git。編程訓(xùn)練營(yíng)結(jié)束后,我找到一份初級(jí)前端開(kāi)發(fā)工作,在一家大公司開(kāi)發(fā)網(wǎng)站。我真正的Git 學(xué)習(xí)之旅從這份新工作的第一天就開(kāi)始了。前幾個(gè)月,作為一家大公司團(tuán)隊(duì)的一員,我膽戰(zhàn)心驚。每當(dāng)我需要使用Git 做一些看似極其復(fù)雜的事情時(shí),我都害怕自己會(huì)破壞倉(cāng)庫(kù),或者造成不可收拾的局面。為了順利與同事共事,我決定系統(tǒng)自學(xué)Git。但是我很快發(fā)現(xiàn),網(wǎng)上的資源大多不適合初學(xué)者。掌握基礎(chǔ)知識(shí)后,我漸漸構(gòu)思一個(gè)想法,借助豐富的色彩,以簡(jiǎn)單的視覺(jué)化方式教授這項(xiàng)技術(shù)。最終,我創(chuàng)建了一門在線課程,發(fā)布到網(wǎng)上。在制作這門課程的過(guò)程中,腦海深處又浮現(xiàn)一個(gè)想法:有一天我還要寫(xiě)一本書(shū)。我的課程收到很多正面反饋。終于,在2021 年夏天,我決定是時(shí)候開(kāi)始寫(xiě)書(shū)了。你現(xiàn)在閱讀的這本書(shū)就是這個(gè)決定的產(chǎn)物,希望它對(duì)你的Git 學(xué)習(xí)之旅有所幫助!目標(biāo)讀者本書(shū)適合想要學(xué)習(xí)Git 工作原理基礎(chǔ)知識(shí)的人。它專為剛剛開(kāi)始學(xué)習(xí)技術(shù)技能的人或擔(dān)任非技術(shù)角色但需要使用Git 與技術(shù)同事協(xié)作的人而設(shè)計(jì)。可能受益于本書(shū)的人包括(但不限于)編程訓(xùn)練營(yíng)的學(xué)生、計(jì)算機(jī)科學(xué)學(xué)生、技術(shù)作家、產(chǎn)品經(jīng)理、設(shè)計(jì)師、初級(jí)開(kāi)發(fā)人員、數(shù)據(jù)科學(xué)家和自學(xué)的程序員。本書(shū)為沒(méi)有Git 經(jīng)驗(yàn)以及有少量Git 經(jīng)驗(yàn)的人而寫(xiě)。如果你沒(méi)有Git 經(jīng)驗(yàn),那也不是問(wèn)題,因?yàn)楸緯?shū)從零開(kāi)始講授,涵蓋安裝Git 和使用命令行。如果你已經(jīng)有一些使用Git 或命令行的經(jīng)驗(yàn),第1 章權(quán)當(dāng)復(fù)習(xí)。不過(guò),建議你不要跳過(guò)第1 章,因?yàn)槟且徽聦⒃O(shè)置貫穿本書(shū)的Rainbow 項(xiàng)目。內(nèi)容概述本書(shū)理實(shí)結(jié)合,你需要在自己的計(jì)算機(jī)中練習(xí),鞏固所學(xué)的Git 基本概念。本書(shū)貫穿兩個(gè)項(xiàng)目:Rainbow 項(xiàng)目和Book 項(xiàng)目。Rainbow 是一個(gè)實(shí)踐項(xiàng)目,意在練習(xí)所學(xué)的知識(shí)。這是一個(gè)簡(jiǎn)化的項(xiàng)目,僅用于學(xué)習(xí)。Book 是一個(gè)虛構(gòu)的項(xiàng)目,我用它演示如何把Git 的某些功能用到更真實(shí)的項(xiàng)目中。下面深入介紹一下兩個(gè)項(xiàng)目,順便說(shuō)說(shuō)本書(shū)的內(nèi)容編排。[ 備注 ]前言有一些你還不熟悉的術(shù)語(yǔ),例如倉(cāng)庫(kù)和提交。不要擔(dān)心,我將在接下來(lái)的章節(jié)解釋所有概念。Rainbow 項(xiàng)目我們將通過(guò)Rainbow 項(xiàng)目學(xué)習(xí)Git 基礎(chǔ)知識(shí)。為了循序漸進(jìn),你應(yīng)該逐章閱讀第1 章到第12 章,并在自己的計(jì)算機(jī)中完成每一道練習(xí)。例如,第4 章中的練習(xí)假定你已經(jīng)完成第1 章、第2 章和第3 章中的練習(xí)。倉(cāng)庫(kù)根本而言,倉(cāng)庫(kù)是Git 項(xiàng)目的副本。首先,為了開(kāi)發(fā)Rainbow 項(xiàng)目,你將創(chuàng)建一個(gè)名為rainbow 的本地倉(cāng)庫(kù)。隨后(在第7 章),你將創(chuàng)建一個(gè)名為rainbowremote的遠(yuǎn)程倉(cāng)庫(kù)。最后,第8 章模擬與朋友合作開(kāi)發(fā)Rainbow 項(xiàng)目,再創(chuàng)建一個(gè)名為friend-rainbow 的本地倉(cāng)庫(kù)。從第8 章開(kāi)始,每當(dāng)提到你的朋友做某事時(shí),你都必須在friend-rainbow 倉(cāng)庫(kù)中執(zhí)行相關(guān)操作。[ 備注 ]當(dāng)我說(shuō)到Rainbow(首字母大寫(xiě))項(xiàng)目時(shí),我指的是整個(gè)項(xiàng)目:從一個(gè)倉(cāng)庫(kù)開(kāi)始,最終包含三個(gè)倉(cāng)庫(kù)。當(dāng)我提到rainbow 項(xiàng)目目錄或rainbow倉(cāng)庫(kù)時(shí)(首字母小寫(xiě)),我指的是Rainbow 項(xiàng)目中特定的本地倉(cāng)庫(kù)。提交在Rainbow 項(xiàng)目中,你將創(chuàng)建和編輯文件,列出構(gòu)成一道彩虹的顏色,以及一些其他顏色。這并不是應(yīng)由Git 控制的真實(shí)項(xiàng)目,而是一個(gè)簡(jiǎn)化的項(xiàng)目,目的是讓你專注于學(xué)習(xí),而不分心構(gòu)建復(fù)雜的功能。在整本書(shū)中,我將使用圖表說(shuō)明Rainbow 項(xiàng)目中發(fā)生的事情。每次向Rainbow項(xiàng)目添加一個(gè)顏色,你都要向倉(cāng)庫(kù)發(fā)起一次提交(commit)。一個(gè)提交基本上代表項(xiàng)目的一個(gè)版本。在圖表中,提交由添加的顏色繪制的圓圈表示,提交的名稱也使用顏色的名稱。例如,將要添加到Rainbow 項(xiàng)目中的第一個(gè)顏色是紅色(red),因此代表該提交的圓圈將被涂成紅色,我們將其稱為red 提交。為了照顧色覺(jué)缺失的讀者,我將在圖表中注上提交的名稱(或名稱的縮寫(xiě))。圖1 是紅色提交的圖表示例。附錄鑒于本書(shū)的編排方式,你應(yīng)該從第1 章?第12 章依次閱讀,但是在某些情況下,你可能希望或需要從特定的章節(jié)開(kāi)始。例如:?? 你已經(jīng)完成了整本書(shū)中的練習(xí),想從特定的章節(jié)開(kāi)始復(fù)習(xí)。?? 前一章的 Rainbow 項(xiàng)目出現(xiàn)了問(wèn)題,你無(wú)法解決,想從新的一章重新開(kāi)始。遇到這種情況,你可以參照附錄A 中的說(shuō)明重新創(chuàng)建Rainbow 項(xiàng)目,達(dá)到某一章開(kāi)頭的狀態(tài)。附錄B 涵蓋每一章介紹的命令,作為快速參考指南。附錄C 說(shuō)明本書(shū)圖表使用的視覺(jué)語(yǔ)言。Book 項(xiàng)目Book 是一個(gè)虛構(gòu)項(xiàng)目,我用它演示在更真實(shí)的項(xiàng)目中如何使用Git。這個(gè)項(xiàng)目假設(shè)我在寫(xiě)一本書(shū),使用Git 對(duì)文件進(jìn)行版本控制。這本書(shū)由10 個(gè)章節(jié)組成,對(duì)應(yīng)10 個(gè)文本文件,一章一個(gè):chapter_one.txt、chapter_two.txt 等。有時(shí),我也會(huì)模擬與合著者和(或)編輯一起參與圖書(shū)項(xiàng)目的情況。這些討論放在Book示例項(xiàng)目插注部分。Book 項(xiàng)目不是我們的關(guān)注重點(diǎn)。我只是通過(guò)它進(jìn)一步演示和說(shuō)明Git 的某些功能。除了Book 示例項(xiàng)目插注之外,本書(shū)還有一些其他插注。下面具體說(shuō)明。書(shū)中的插注下面簡(jiǎn)要說(shuō)明本書(shū)中的幾種插注。Book 示例項(xiàng)目如前所述,Book 示例項(xiàng)目插注基于Book 項(xiàng)目提供其他Git 功能和命令的說(shuō)明和示例。跟我做跟我做插注列出你應(yīng)在計(jì)算機(jī)中執(zhí)行的步驟。步驟中的粗體命令必須在命令行中輸入并執(zhí)行。有輸出的命令都會(huì)提供示例輸出。給出的輸出基于我在寫(xiě)作本書(shū)時(shí)開(kāi)發(fā)的Rainbow 項(xiàng)目,由macOS 操作系統(tǒng)生成,不過(guò)在Microsoft Windows 中的輸出應(yīng)該是相同的。如果Microsoft Windows 和macOS 的輸出差異巨大,我會(huì)在文中指出。命令一覽命令一覽插注介紹有用的命令,其中一些命令在跟我做插注中有用到。附錄B 還提供了按章節(jié)分組的所有重要命令的完整列表,作為參考。圖解圖解插注通過(guò)圖表說(shuō)明Rainbow 項(xiàng)目中發(fā)生的事情。這種插注(以及插圖)用到兩個(gè)重要圖表:Git 圖和倉(cāng)庫(kù)圖。Git 圖在第2 章介紹,倉(cāng)庫(kù)圖從第4 章開(kāi)始使用。書(shū)中的每個(gè)圖表都是一步步得來(lái)的,文中有相應(yīng)說(shuō)明。附錄C 還提供了書(shū)中使用的視覺(jué)語(yǔ)言的概述,作為參考。備注備注插注提供與正文相關(guān)的有用信息。配套倉(cāng)庫(kù)我的目標(biāo)是在本書(shū)中提供學(xué)習(xí)Git 所需的大部分信息,但有些技術(shù)和流程變化頻繁,無(wú)法在書(shū)中記錄。我在GitHub 中創(chuàng)建了公開(kāi)倉(cāng)庫(kù)Learning Git(https://github.com/gitlearningjourney/learning-git),提供相關(guān)技術(shù)和流程的最新信息。除此之外,該倉(cāng)庫(kù)還包含:?? 下載 Git 的說(shuō)明。?? 使用托管服務(wù)的資源鏈接。?? 為了訪問(wèn)遠(yuǎn)程倉(cāng)庫(kù),對(duì) HTTPS 或 SSH 的設(shè)置。需要查閱Learning Git 倉(cāng)庫(kù)獲得更多指導(dǎo)時(shí),我會(huì)在書(shū)中指出。這不是一本什么樣的書(shū)這不是一本參考書(shū),不涵蓋每一個(gè)Git 命令(相信我,特別多)。這也不是一份Git 高級(jí)指南。許多Git 功能在本書(shū)中沒(méi)有討論,因?yàn)樗鼈儗?duì)于我想教你的基本操作不是必需的。書(shū)中涵蓋的功能經(jīng)過(guò)我的精心挑選。我的目標(biāo)是讓你對(duì)Git 基礎(chǔ)知識(shí)建立清晰的感性認(rèn)知,為繼續(xù)學(xué)習(xí)其他功能奠定堅(jiān)實(shí)的基礎(chǔ)。本書(shū)也不會(huì)告訴你應(yīng)該使用什么樣的Git 工作流程,或者應(yīng)該如何使用Git 的各項(xiàng)功能。我盡可能避免發(fā)表個(gè)人見(jiàn)解,而是專注于教你認(rèn)識(shí)工具。至于如何使用工具,根據(jù)每個(gè)人的背景和偏好,各有不同。本書(shū)盡量不約束你的選擇。例如,你可以使用自己喜歡的任何文本編輯器或托管服務(wù)完成書(shū)中的練習(xí)。章節(jié)編排本書(shū)分為兩個(gè)邏輯部分。第一部分(第1~5 章)學(xué)習(xí)在自己的計(jì)算機(jī)中操作本地倉(cāng)庫(kù)。第6~12 章還將學(xué)習(xí)使用托管服務(wù)和遠(yuǎn)程倉(cāng)庫(kù)。下面簡(jiǎn)要介紹每一章的內(nèi)容。?? 第 1 章為使用 Git 管理項(xiàng)目做好準(zhǔn)備:安裝 Git,學(xué)習(xí)一些命令行基礎(chǔ)知識(shí),設(shè)置Git,為本書(shū)后面用到的項(xiàng)目創(chuàng)建目錄,以及準(zhǔn)備文本編輯器。?? 第2章把項(xiàng)目目錄變成Git倉(cāng)庫(kù)。我將介紹表示Git不同區(qū)域的Git圖,包括工作目錄、暫存區(qū)域、提交歷史和本地倉(cāng)庫(kù)。本章末尾將在項(xiàng)目目錄中創(chuàng)建第一個(gè)文件。?? 第 3 章學(xué)習(xí)并執(zhí)行在本地倉(cāng)庫(kù)中進(jìn)行首次提交的兩個(gè)主要步驟。?? 第 4 章學(xué)習(xí)分支,了解分支是什么、如何創(chuàng)建分支、如何切換分支,以及如何判斷所在的分支。?? 第 5 章學(xué)習(xí)兩種合并,執(zhí)行快進(jìn)合并。?? 第 6 章為使用遠(yuǎn)程倉(cāng)庫(kù)做準(zhǔn)備,首先選擇托管服務(wù),然后設(shè)置身份驗(yàn)證信息,通過(guò)HTTPS 或SSH 連接遠(yuǎn)程倉(cāng)庫(kù)。?? 第 7 章討論使用本地和遠(yuǎn)程倉(cāng)庫(kù)的不同方法。你將學(xué)習(xí)如何創(chuàng)建遠(yuǎn)程倉(cāng)庫(kù)和上傳數(shù)據(jù)。?? 第 8 章開(kāi)始模擬與其他人一起處理 Git 項(xiàng)目。為此,你要?jiǎng)?chuàng)建第二個(gè)本地倉(cāng)庫(kù),假裝它屬于你的朋友。這位朋友在自己的計(jì)算機(jī)中與你一道開(kāi)發(fā)Rainbow 項(xiàng)目。在此過(guò)程中,你將學(xué)習(xí)如何克隆遠(yuǎn)程倉(cāng)庫(kù)和獲取數(shù)據(jù)。?? 第 9 章執(zhí)行三方合并,學(xué)習(xí)獲取數(shù)據(jù)和拉取數(shù)據(jù)之間的區(qū)別。?? 第 10 章通過(guò)一個(gè)示例說(shuō)明如何解決三方合并中的沖突。?? 第 11 章學(xué)習(xí)變基。這是把一個(gè)分支的改動(dòng)整合到另一個(gè)分支的第二種方式(第一種是合并)。?? 第12章學(xué)習(xí)拉取請(qǐng)求(也叫合并請(qǐng)求)及其對(duì)Git項(xiàng)目協(xié)作的促進(jìn)。?? 本書(shū)還有三篇附錄,內(nèi)容見(jiàn)附錄一節(jié)。排版約定本書(shū)使用以下排版約定。斜體(Italic)表示新術(shù)語(yǔ)、URL、電子郵件地址和重點(diǎn)。等寬字體(Constant width)表示命令、命令輸出、文件名、目錄名、分支名、倉(cāng)庫(kù)名和其他屏上文本。等寬粗體(Constant width bold)表示應(yīng)由用戶鍵入或輸入的命令或其他文本。帶尖括號(hào)的等寬字體()表示應(yīng)替換為用戶提供的值或根據(jù)上下文確定的值的文本。OReilly 在線學(xué)習(xí)平臺(tái)(OReilly Online Learning)近40 年來(lái),OReilly Media 致力于提供技術(shù)和商業(yè)培訓(xùn)、知識(shí)和卓越見(jiàn)解,來(lái)幫助眾多公司取得成功。公司獨(dú)有的專家和改革創(chuàng)新者網(wǎng)絡(luò)通過(guò)OReilly 書(shū)籍、文章以及在線學(xué)習(xí)平臺(tái),分享他們的專業(yè)知識(shí)和實(shí)踐經(jīng)驗(yàn)。OReilly 在線學(xué)習(xí)平臺(tái)按照您的需要提供實(shí)時(shí)培訓(xùn)課程、深入學(xué)習(xí)渠道、交互式編程環(huán)境以及來(lái)自O(shè)Reilly 和其他200 多家出版商的大量書(shū)籍與視頻資料。更多信息,請(qǐng)?jiān)L問(wèn)網(wǎng)站:https://www.oreilly.com/。聯(lián)系我們?nèi)魏斡嘘P(guān)本書(shū)的意見(jiàn)或疑問(wèn),請(qǐng)按照以下地址聯(lián)系出版社。美國(guó):OReilly Media, Inc.1005 Gravenstein Highway NorthSebastopol, CA 95472中國(guó):北京市西城區(qū)西直門南大街2 號(hào)成銘大廈C 座807 室(100035)奧萊利技術(shù)咨詢(北京)有限公司勘誤、示例和其他信息,請(qǐng)?jiān)L問(wèn)https://oreil.ly/learning-git 獲取。要了解更多OReilly 圖書(shū)和課程信息,請(qǐng)?jiān)L問(wèn)http://oreilly.com。我們的LinkedIn:http://linkedin.com/company/oreilly-media。我們的Twitter:http://twitter.com/oreillymedia。我們的YouTube:http://youtube.com/oreillymedia。致謝感謝在本書(shū)寫(xiě)作過(guò)程中支持我的所有人。感謝我的朋友和家人,其中一些人被迫成為本書(shū)早期版本的測(cè)試讀者。感謝在這個(gè)創(chuàng)意項(xiàng)目實(shí)施過(guò)程中給予我支持的整個(gè)OReilly 團(tuán)隊(duì)。感謝所有技術(shù)審校和測(cè)試讀者,謝謝你們一遍遍閱讀,向我提供寶貴的反饋意見(jiàn)。對(duì)了,還要感謝我的伴侶耐心守候,因?yàn)檫@本書(shū)的出版日期一再推遲。 Anna Skoulikari是一位創(chuàng)意人士,她利用自己的溝通技巧娓娓道來(lái),以簡(jiǎn)單、形象和可視化的方式教授Git。她通過(guò)各種媒介教授Git,包括評(píng)價(jià)很高的在線課程。她的技術(shù)工作經(jīng)驗(yàn)豐富,曾擔(dān)任用戶體驗(yàn)設(shè)計(jì)師、前端開(kāi)發(fā)人員和技術(shù)作家。 目錄
你還可能感興趣
我要評(píng)論
|