Git軟件開發實戰 ( 簡體 字) |
作者:[美]Brent Laster 著 蒲成 譯 | 類別:1. -> 程式設計 -> Git |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 48120 詢問書籍請說出此書號!【有庫存】 NT售價: 400 元 |
出版日:10/1/2017 |
頁數:404 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302479918 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: 歡迎閱讀《Git軟件開發實戰》。如果你的工作或興趣涉及設計、創建或測試軟件,或者涉及管理軟件開發生命周期的任意部分,那么有可能你已經聽說過Git了,并且在某種程度上,已經嘗試過使用和理解它了。本書將幫助你達成該目標。簡言之,《Git軟件開發實戰》旨在幫助你理解和使用Git來完成工作,無論該工作是個人項目還是專業需求。在這一過程中,它還會讓Git變成你專業技能的一部分。在本書所有內容中,我已經提供了理解Git所需要知道的背景和概念,同時你將學習如何與之交互。 本部分將為你提供本書的簡單介紹。它將闡釋本書與其他關于Git的書籍相比的獨特之處、本書的目標讀者、本書的整體結構和內容,以及它為你提供的其中一些價值。 我鼓勵你花幾分鐘時間閱讀本前言。然后,你就能夠以你自己的節奏來深入探究這些內容,并且通過文本內容和所包含的實踐實驗課程來提升你的技能以及理解Git。或者,如果你想要快速查看關于內容范圍的額外信息,可以瀏覽目錄。 感謝閱讀《Git軟件開發實戰》。 本書獨特之處 盡管市面上已經有了許多關于Git的書籍,但其中大多數都有針對性地將提供該應用程序的技術用途作為其主要且唯一的目標。《Git軟件開發實戰》會為你提供這方面的內容,但它也會為你提供對于你可能已經知曉的概念方面的Git理解。另外,大多數書籍都沒有提供整合它們所描述的概念的實踐方法。當你具有實際的示例可以著手處理以便能夠消化這些概念并且以你自己的節奏掌握它們時,這樣的學習才最有效。《Git軟件開發實戰》包含了連接實驗課程,可以通過它們來吸收你剛剛閱讀到的知識。 我已經納入簡單、清晰的圖例來幫助你可視化關鍵的理念和工作流。我還在許多章節結尾處引入了“高級主題”小節。這些章節的內容提供了額外的說明來闡釋如何使用Git的一些較不為人知的特性以及如何超越標準的Git特性來獲得額外的價值。 如果不理解Git,那么很容易就會得到從另一個源管理系統遷移到Git的糟糕體驗。為了更為有效,你需要理解Git模型和工作流。你還應該知道,在進行遷移時要注意些什么,以及為何很重要的是,不單單要考慮命令和工作流,還要考慮其基礎倉庫的結構和范圍。我會在《Git軟件開發實戰》中介紹這方面的所有內容。
本書目標讀者 這本書是以我多年來就Git對人們進行培訓的經驗為基礎的;這些人的工作多種多樣并且來自許多不同的背景環境——開發人員、測試人員、項目經理、團隊管理者、文檔編寫專家等。我已經在行業會議的許多專題研討會和企業培訓會議上提供了本書中所概述的基本資料。我在美國各地以及各個國家都介紹過它們。我在幫助人們充滿信心地使用Git方面已經取得了成功。 在本書中我只進行了一項假設前提:就是你已經至少具有了使用一個源管理系統的經驗。使用的是哪一個并不重要:CVS、Subversion、Mercury——任何一個都行。我僅僅是在假設你基本理解源管理系統會做些什么以及像簽入和簽出代碼與分支這樣的基礎概念。除此之外,你不需要任何預先掌握的知識或經驗。并且,即便你具有使用Git或另一個系統的豐富經驗,也會在這里找到一些有益的內容。實際上,如果你正在閱讀這部分內容,那么你很可能可以被歸入以下類別之一: ● 你才開始接觸Git并且知道你需要學習它。 ● 已經使用過Git,但一直在嘗試以使用上一個源控制系統的相同方式來使用它。 ● 你已經使用過Git,并且認為你知道“一知半解很危險”。 ● 你正在掌握Git的用法,但切實希望理解為何它是這樣運行的以及如何真正像預期那樣使用它。 ● 你在與使用Git或需要學習它的人一起工作或者管理這些人。鑒于這一關系,你需要了解Git并且理解基礎概念。 ● 你已經聽說過Git的潛在好處,因而你對它及其能為你和你為之工作的組織做些什么感興趣。 你可能實際上會認為你自己歸屬于這些類別中的多個。不過,你大概僅希望能夠完成你的工作(無論該工作是個人目標還是專業目標)。這本書正是基于這一前提來編寫的。 Git需要轉換思維模式。實際上,它需要一系列思維模式的轉換。不過,一旦可以將它與已經知曉的一些事情關聯上,那么每一種轉換都很容易理解。理解每一種轉換將反過來使你變得更具生產力并且掌控這一強大工具的特性——這也就是本書的目的所在。 本書結構和內容 本書被組織為一系列從頭開始介紹Git的文章,向你介紹在添加新概念之前,要成為專家所需要知道的并且以之為基礎的內容。 在前三章中,我介紹了Git的基礎概念:它與其他系統有多大區別、圍繞它構建的生態系統、其優勢和挑戰,以及讓你可以理解其工作流并且使用它有效管理內容的模型。本部分將讓你基本理解Git的理念、目標以及必要的專業術語。 在本書的其余章節中,我將介紹Git的使用和特性,從執行基本操作到創建倉庫以及將變更提交到這些倉庫中,一直到創建分支、進行合并以及處理公共倉庫中的內容。 注意,我沒有立即讓你使用Git(如果你希望這樣做,可以直接跳到第4章,它會快速讓你開始親身實踐Git)。不過,我強烈建議閱讀前三章。如果你剛開始接觸Git(或者已經使用了一段時間),那么其背景閱讀,尤其是第2和第3章中的背景閱讀,將提供理解其余章節內容所需的基礎。并且即使你之前使用過Git,閱讀這些章節也可以讓你弄明白你曾經就Git使用所面臨的問題,還會為你提供一個更好的思維模型以便開展工作,并且讓你形成理解其中一些更為高級的概念的基礎。 讀者將獲得的價值 在整本書的內容中,你都會找到與高效使用Git所需的命令和工作流有關的示例和指導。每一章都包含了將概念與你已經知曉并且理解的內容關聯起來的幾種方式。除了文本之外,你還將發現許多圖例有助于你可視化理解概念。正如我已經提到過的,這本書還通過散布在各個章節的連接實驗課程來增加允許你親身實踐Git的特性。這些實驗課程旨在強化前面章節文本內容中提到的概念,并且讓你主動參與到學習過程中,使得你可以更好地領會這些概念。為了從本書中獲得最大收益,你應該花些時間來完成每一個實驗課程——通常僅需要幾分鐘時間。你將發現,這些簡單的步驟會極大地提升你在使用Git時的整體理解和信心。 另外,建議你閱讀一下位于一些章節結尾處的“高級主題”部分。你會發現之前可能沒有考慮到的利用Git功能的各種方式的說明和理念,或者會弄明白如何使用你一直存有疑慮的特性。 對于后續的實驗課程,http://github.com/professional-git網站上為用戶提供了具有樣本內容的自定義Git倉庫。此外,可以在http://github.com/professional-git/hooks上找到最后一章中各個掛鉤(hook)的代碼的可下載副本。如果GitHub不可用,那么可以在www.wrox.com/go/ professionalgit處找到所需的文件。讀者也可以通過手機,掃描封底的二維碼來下載這些文件。 后續步驟 如果本書聽上去正是你所需的,那么我建議持續閱讀并且開始融會貫通本書的內容以及進行思維模式的轉換,它們將有助于你成功地使用Git。在閱讀本書的過程中,你將發現許多理念、見解,還有讓你會心一笑的時刻,這些將讓你更好地理解Git。具備了這些知識,不久之后你就會成為Git專家。
|
內容簡介:借助Git的強大功能簡單化開發周期 《Git軟件開發實戰》一書提供了在使用Git這一流行的軟件開發工具方面的有效方法,并且為新用戶和資深用戶提供了新指導。《Git軟件開發實戰》包含針對傳統系統的廣泛探討,以及獨特于Git的有助于在識別和規劃差異時借鑒已有技能的注意事項。書中大量的示例和圖示旨在強化關鍵的概念以及增強用戶的理解。《Git軟件開發實戰》專注于實踐并且超越了技術教程,能助你將Git模型集成到現實環境的工作流中,是快速提升學習效率的寶貴資源。 主要內容 ◆ 提供基本Git模型和整個工作流處理的清晰理解 ◆ 包含常用源管理概念和命令的Git版本 ◆ 展示如何追蹤變更、處理分支以及利用Git完整功能的優勢 ◆ 包含現實環境中的示例,以便熟練掌握和更好地消化這些概念 ◆ 提供有助于可視化關鍵理念和工作流的簡單、清晰圖示 ◆ 重點介紹不常為人知的Git特性以便得到額外的收益 ◆ 展示如何避免新用戶常犯的錯誤和失誤 |
目錄:第Ⅰ部分理解Git相關概念 第1章什么是Git 3 1.1Git的歷史 4 1.2行業標準工具 4 1.3Git生態系統 5 1.3.1核心的Git 5 1.3.2Git托管站點 6 1.3.3自托管軟件包 7 1.3.4易用的包 7 1.3.5插件 9 1.3.6包含Git的工具 9 1.3.7Git庫 9 1.4Git的優勢和挑戰 10 1.4.1優勢 10 1.4.2挑戰 12 1.5本章小結 15 第2章關鍵概念 17 2.1設計概念:面向用戶的 17 2.1.1集中式模型 17 2.1.2分布式模型 18 2.2設計概念:內部的 19 2.2.1差異增量存儲 20 2.2.2快照存儲 20 2.2.3Git的存儲需求 21 2.3倉庫設計注意事項 22 2.3.1倉庫范圍 23 2.3.2文件范圍 24 2.3.3共享代碼 25 2.4本章小結 26 第3章Git升級模型 27 3.1Git的級別 27 3.1.1開發-測試-生產和Git 27 3.1.2移動內容的核心Git命令 34 3.2本章小結 36 3.3關于連接實驗課程1: 安裝Git 36 連接實驗課程1:安裝Git 37 第Ⅱ部分使用Git 第4章配置和設置 43 4.1在Git中執行命令 43 4.1.1操作數類型 44 4.1.2高層命令和底層命令的 對比 45 4.1.3指定參數 47 4.1.4自動完成 47 4.2配置Git 48 4.2.1告知Git你的身份 49 4.2.2配置范圍 50 4.2.3默認的編輯器 53 4.2.4設置行結束符 54 4.2.5別名 55 4.2.6Windows文件系統緩存 56 4.3初始化倉庫 56 4.3.1gitinit 56 4.3.2gitclone 57 4.4高級主題 58 4.4.1gitinit揭秘 58 4.4.2進一步深入了解Git倉庫 59 4.4.3將config命令映射到 配置文件 60 4.4.4創建參數化別名 61 4.5本章小結 63 第5章變得高效 65 5.1獲得幫助 65 5.2多倉庫模型 67 5.3添加內容以便追蹤——add 69 5.4完成變更——提交 77 5.4.1先決條件 78 5.4.2提交范圍 79 5.5將一切結合在一起 79 5.5.1修正提交 80 5.5.2提交的結果 82 5.6高級主題 84 5.6.1使用--verbose選項 85 5.6.2完整的消息提交過程 85 5.6.3自動更正和自動執行 86 5.7本章小結 87 5.8關于連接實驗課程2:創建和 探究Git倉庫并且管理內容 87 連接實驗課程2:創建和探究Git 倉庫并且管理內容 89 第6章追蹤變更 95 6.1gitstatus 95 6.1.1具有狀態的工作流示例 96 6.1.2status命令的簡要形式 100 6.2gitdiff 102 6.2.1Git中的重要符號名稱 102 6.2.2如何思考Git進行對比的 方法 102 6.2.3僅顯示有差異的文件 名稱 107 6.2.4word-diff 107 6.2.5忽略非關鍵變更 107 6.2.6對比兩次提交 109 6.2.7可視化對比 111 6.2.8其他的對比技巧 114 6.3本章小結 115 6.4連接實驗課程3:通過文件 狀態生命周期追蹤內容 116 連接實驗課程3:通過文件狀態 生命周期追蹤內容 117 第7章處理隨時間推移而出現的 變更以及使用標簽 121 7.1log命令 121 7.1.1常用的顯示和過濾選項 122 7.1.2時間限制選項 123 7.1.3按文件和路徑顯示歷史 124 7.1.4日志輸出格式 125 7.1.5搜索歷史 126 7.2gitblame 127 7.3可視化地查看歷史 130 7.4標簽 131 7.4.1查看標簽詳情 132 7.4.2修改標簽 132 7.4.3簡單的標簽示例 133 7.5撤消歷史中的變更 134 7.5.1reset——回滾變更 134 7.5.2完全重置本地環境 135 7.5.3revert——消除變更 136 7.6高級主題 139 7.6.1簽署提交和標簽 139 7.6.2引用日志 141 7.7本章小結 143 7.8關于連接實驗課程4:使用 Git歷史、標簽和別名 143 連接實驗課程4:使用Git歷史、 標簽和別名 145 第8章處理本地分支 149 8.1什么是分支? 149 8.1.1來自另一個源管理系統的 示例 150 8.1.2分支的Git模型 150 8.1.3創建一個分支 151 8.1.4簽出一個分支 152 8.1.5將內容添加到分支 153 8.1.6一個工作目錄——多個 分支 154 8.1.7獲得關于分支的信息 157 8.1.8刪除或重命名一個分支 158 8.1.9使用分支進行開發 161 8.2高級主題 167 8.2.1簽出非分支提交 168 8.2.2簽出單獨的文件 173 8.3本章小結 174 8.4連接實驗課程5:處理 分支 174 連接實驗課程5:處理分支 175 第9章合并內容 177 9.1合并的基礎 177 9.1.1merge命令 178 9.1.2為合并做準備 178 9.1.3合并的類型 178 9.1.4變基——合并歷史 182 9.1.5櫻桃揀選 185 9.1.6櫻桃揀選和變基之間的 差異 188 9.1.7合并操作 189 9.2處理沖突 192 9.2.1合并處理是一種狀態 192 9.2.2沖突的錯誤消息 193 9.2.3終止操作 194 9.2.4處理沖突——工作流 194 9.2.5解決選項和策略 198 9.3可視化合并 203 9.3.1選擇一款合并工具 205 9.3.2讓合并工具可供Git使用 206 9.4高級主題 206 9.4.1用于沖突標記的可選 樣式 207 9.4.2高級變基場景 208 9.4.3交互式變基 213 9.5本章小結 220 9.6連接實驗課程6:合并實踐 220 連接實驗課程6:合并實踐 221 第10章Git中的支持文件 223 10.1Git屬性文件 224 10.1.1Git屬性文件的作用 224 10.1.2Git屬性的范圍 224 10.1.3文件格式 226 10.1.4常見用例 226 10.1.5獲取文件的屬性信息 232 10.2Git忽略文件 233 10.2.1Git忽略的范圍 233 10.2.2文件格式 234 10.2.3獲取文件的忽略信息 236 10.3本章小結 236 第11章用Git做更多的事情 239 11.1修改本地環境中文件和 目錄的布局 239 11.1.1儲藏 240 11.1.2暫存命令 246 11.1.3mv 246 11.1.4rm 247 11.2用于搜索的命令 248 11.2.1grep 248 11.2.2Git日志搜索 251 11.3為變更處理補丁和存檔 253 11.3.1archive 254 11.3.2bundle 254 11.3.3通過電子郵件共享 補丁 256 11.3.4apply 257 11.3.5am 257 11.3.6用郵件發送補丁文件 258 11.4用于清理的命令 260 11.4.1clean 260 11.4.2gc 262 11.4.3notes 263 11.5高級主題 265 11.5.1filter-branch 265 11.5.2rev-list 265 11.5.3bisect 272 11.5.4rerere 279 11.6本章小結 287 11.7連接實驗課程7:刪除、 重命名和儲藏 287 連接實驗課程7:刪除、重命名和 儲藏 289 第12章理解遠程——分支和操作 293 12.1遠程 293 12.1.1遠程訪問協議 295 12.1.2remote命令 297 12.1.3Git如何與遠程環境 交互 299 12.1.4遠程追蹤分支 299 12.1.5gitclone 300 12.1.6查看關于遠程分支的 信息 303 12.1.7push 307 12.1.8fetch 315 12.1.9pull 317 12.2本章小結 320 12.3連接實驗課程8:設置 GitHub賬戶并且克隆倉庫 320 連接實驗課程8:設置GitHub賬戶 并且克隆倉庫 321 第13章理解遠程——變更工作流 323 13.1Git中基本的沖突以及 合并解決工作流 324 13.2托管倉庫 336 13.2.1用于使用Git進行 協作的模型 336 13.2.2對所有內容進行匯總 340 13.3本章小結 341 13.4連接實驗課程9:對遠程 倉庫使用整體工作流 342 連接實驗課程9:對遠程倉庫使用 整體工作流 343 第14章處理Git中的樹和模塊 347 14.1工作樹 347 14.1.1添加一棵工作樹 348 14.1.2列出工作樹 350 14.1.3精簡工作樹 351 14.2子模塊 352 14.2.1理解子模塊如何工作 353 14.2.2添加子模塊 353 14.2.3判定子模塊狀態 355 14.2.4處理多個子模塊 359 14.2.5從子模塊的遠程更新 子模塊 359 14.2.6查看子模塊差異 361 14.2.7超級項目與子模塊 對比 362 14.2.8子模塊的問題 364 14.2.9更新子模塊引用 365 14.2.10在超級項目被更新后 更新子模塊 366 14.2.11推送來自子模塊的 變更 368 14.2.12子模塊與合并 369 14.2.13注銷一個子模塊 370 14.3子樹 370 14.3.1添加一個項目作為 子樹 371 14.3.2更新子樹 374 14.3.3使用子樹分隔功能 374 14.3.4從分隔內容中創建 一個新的項目 375 14.3.5子樹推送 376 14.4本章小結 376 14.5連接實驗課程 376 14.5.1連接實驗課程10:使用 工作樹 376 14.5.2連接實驗課程11:使用 子模塊 376 14.5.3連接實驗課程12:使用 子樹 377 連接實驗課程10:使用工作樹 379 連接實驗課程11:使用子模塊 381 連接實驗課程12:使用子樹 385 第15章使用Git掛鉤程序擴展 Git功能 389 15.1安裝掛鉤 389 15.2更新掛鉤 390 15.3常用掛鉤屬性 391 15.3.1掛鉤域 391 15.3.2控制工作流的返回碼 391 15.3.3工作目錄訪問 392 15.3.4環境變量 392 15.4掛鉤描述 392 15.4.1applypatch-msg 393 15.4.2pre-applypatch 393 15.4.3post-applypatch 393 15.4.4pre-commit 393 15.4.5prepare-commit-msg 395 15.4.6commit-message 396 15.4.7post-commit 398 15.4.8pre-rebase 399 15.4.9post-checkout 399 15.4.10post-merge 399 15.4.11pre-push 400 15.4.12pre-receive 400 15.4.13update 401 15.4.14post-receive 401 15.4.15post-update 402 15.5其他掛鉤 403 15.5.1push-to-checkout 403 15.5.2pre-auto-gc 403 15.5.3post-rewrite 403 15.6掛鉤快速參考 403 15.7本章小結 405
|
序: |