编辑推荐
                                      针对项目开发人员:以有效率的方式,引导你在实践中完整地学习Git的操作技巧和应用。
  针对项目管理者:在实例中学习如何查看项目开发的各种统计图,以便随时掌握项目开发的状况。
  针对MIS人员:提供建立Git Server的多种方法,自行选用和规划适合自己实际运用的方法。      
内容简介
     本书以教科书的方式,循序渐进地向软件开发人员或软件开发的项目管理人员,讲述如何快速掌握分布式版本控制系统 Git 的应用方法,让繁琐复杂的项目开发的版本控制变得高效且轻松自如。书中细致入微地介绍了如何使用设置文件和操作Git文档库,以及建立项目开发的分支、合并分支和解决冲突的操作;在具备扎实的基础之后,介绍了Git GUI程序用法,以及 Git 在团队开发模式中应用的问题;讲述如何与全球的项目开发人员进行交流,提升程序开发的经验和能力;介绍了GitHub、Bitbucket、GitLab等提供Git服务的网站;本书最后的重点为介绍架设Git Server的几种方法,让每一个项目开发团队,可以按照自己的软硬件环境,选择适合的方式来控管项目开发。     
作者简介
     孙宏明,台湾成功大学信息工程研究所博士,台湾友立信息公司主任研究员,台湾开南大学资管系副教授,台北城市科技大学、台湾元培科技大学、台湾侨光科技大学等大专院校AndroidApp开发研习课程讲师。     
内页插图
          目录
   第一部分  Git的基本概念和操作
第1课  Git、谁与争锋 2
1-1  安装和使用Git 3
1-2  了解Git的工作方式 9
第2课  Git配置文件的妙用 11
2-1  “git config”指令的用法 12
2-2  修改默认的文本编辑器和文件对比程序 15
第3课  把文件存入Git文档库 20
3-1  排除不需要加入文档库的文件 20
3-2  控制Commit 25
3-3  查看Commit节点 27
第4课  比较文件的差异和从Git 文档库取回文件 31
4-1  从Git文档库中取出文件 33
4-2  使用“git mv”指令改变文件或是文件夹的名称 36
4-3  暂存当前文件夹的文件状态 37
4-4  清理Git文档库 38
第5课 Git程序项目管理的实践演练 40
第6课  获取Git文档库统计数据和绘制统计图表 45
6-1  获取Git文档库的统计数据 46
6-2  使用GitStats绘制统计图表 49
第二部分  建立分支、合并和解决冲突
第7课  程序项目的分支(Branch) 56
7-1  解决Detached HEAD的问题 63
第8课 合并程序项目的分支和解决冲突 67
8-1  解决合并分支时发生的冲突 71
8-2  设置Merge Tool解决合并分支时发生的冲突 75
8-3  使用Cherry-Pick指令运用指定的Commit节点版本 77
8-4  处理Detached HEAD状态和Revert Commit节点 79
第9课 使用Rebase指令更新分支的起始点 81
9-1  Rebase指令的用法 84
9-2  执行Rebase之后想要反悔怎么办? 86
第10课  程序项目的分支和合并的实践演练 88
10-1  程序项目开发导入Git的策略 88
10-2  结合Git与程序项目开发 91
第三部分  Git程序的图形操作介面
第11课  Git GUI程序的基本功能 99
11-1  Git GUI程序的基本操作 101
11-2  Git GUI程序和其他程序搭配使用 104
第12课  使用Git GUI程序创建分支和合并 108
第13课  SmartGit程序操作介绍 114
13-1  SmartGit程序的基本操作 116
13-2  SmartGit程序的分支、Rebase和合并 120
第14课  SourceTree程序操作介绍 127
14-1  SourceTree程序的基本操作 128
14-2  SourceTree程序的分支、Rebase和合并 131
第15课  TortoiseGit程序操作介绍 138
15-1  TortoiseGit程序的基本操作 139
15-2  TortoiseGit程序的分支、Rebase和合并 145
第四部分  远程Git文档库和团队开关模式
第16课  “远程Git文档库”的基础操作 154
16-1  “远程Git文档库”的功能 155
16-2  创建“远程Git文档库” 156
16-3  从“远程Git文档库”复制出“本地Git文档库” 158
16-4  “本地Git文档库”和“远程Git文档库”的数据
同步 159
第17课  “远程Git文档库”的高级操作 167
第18课  GitHub让程序项目飞上云端 172
18-1  注册和设置GitHub 173
18-2  使用GitHub的“远程Git文档库” 177
18-3  安装和使用GitHub for Windows 182
第19课  Fork让Git文档库分家后再合并 189
19-1  Fork和Rebase Git文档库 192
19-2  创建Pull Request报告我们的更新 195
第20课  Bitbucket比GitHub更好用 199
20-1  注册和设置Bitbucket 200
20-2  使用Bitbucket的“远程Git文档库” 203
20-3  使用SourceTree程序操作“远程Git文档库” 205
20-4  执行Fork和Pull Request 208
第21课  GitLab完全免费再加送整个系统 211
21-1  自己架设GitLab网站 219
第五部分  架设Git Server
第22课  使用Windows共享文件夹或是Git Daemon
作为Git Server 225
22-1  把Windows“共享文件夹”作为“远程Git
文档库” 226
22-2  使用Git Daemon创建Git Server 227
第23课  使用HTTP/HTTPS访问Git Server 231
23-1  使用HTTP访问Git Server 232
23-2  使用HTTPS访问Git Server 236
第24课  使用SSH认证和加密的Git Server 239
24-1  SSH的工作原理 240
24-2  安装和设置Copssh Server 241
附录  Git常用指令一览表 249      
前言/序言
     在现今的信息产业中,软件扮演的角色越来越重要。如果公司想要在信息产业界中占有一席之地,拥有强大的软件研发实力是必要的条件。以现阶段软件产业的生态来说,能够熟练使用工具软件来提升软件研发的效率,是影响软件实力的关键因素之一,而Git就是能够有效提升软件研发效率的重要工具。
  Git青出于蓝、更胜于蓝
  Git最初是由Linux kernel的作者Torvalds先生所开发,用来管理 Linux kernel项目的工具。它的功能是负责项目的版本控制,我们称它为“版本控制系统”(Version Control System, VCS)。虽然在Git之前,已经有许多VCS。但是相比之下,Git有更多的优点。因此从Git出现之后,就以“后来者居上”的态势快速普及。不仅有许多软件研发公司改用Git来管理和控制软件项目,网络上也出现了许多提供Git文档库存储服务的网站。而且绝大多数的开放源码的程序项目,也都是使用Git来进行版本控制的管理。为了顺应这样的趋势,软件开发工具现在也都支持用Git来进行版本控制。因此,只要是从事软件项目研发相关的工作,或是未来即将踏入这个领域,学会使用Git已经成为从业人员必备的技能。
  Git和其他VCS有许多不一样的地方。它的优点是能够提升软件开发团队的工作效率,但是相对而言,就需要多一点时间来学习更好地使用它。初次使用Git的人通常会有似懂非懂的感觉,仿照别人的操作虽然很容易,可是究竟这样操作会得到什么结果,或是在不同的情况下该如何处理,这一切都会觉得懵懵懂懂。如果是和软件研发团队一起工作,每一次操作Git更是胆颤心惊,害怕一不小心,毁了整个团队的心血结晶,成为大家的罪人!
  其实Git的核心是保护我们的文件,因此它工作的最高指导原则,就是不会遗失我们的数据,除非我们执行删除文件的指令。因此,Git的安全性是无庸置疑的,只要了解它的运行方式,熟悉各种情况下的操作方法,就能够让它发挥最大的效能。
  Git的学习之道
  本书以循序渐进的方式,学习Git的功能和用法。书中以实际的操作范例,让读者亲身体验Git工作的细节,并且掌握每一个指令的效果以及每一个选项的使用时机。虽然网络上有许多采用GUI(图形用户界面)的Git程序,但是笔者不建议初学者一开始就使用这类型的程序。因为它的操作界面过于复杂,初学者在还没有完全了解的情况下,常常会觉得疑惑,反而容易让学习失去重点。相比之下,输入Git指令的操作方式虽然比较麻烦一点,但是却比较清楚,初学者可以完全理解每一个操作和选项所达成的结果。等到建立好Git指令操作的基础之后,再来使用GUI界面的Git程序,就会水到渠成,轻而易举。
  本书的内容安排先从Git的单机操作开始,让读者先了解Git如何工作,并且熟悉配置文件和文件库的基本操作方法。接着学习如何建立分支、合并分支和解决冲突。等到基础完备之后,再来介绍GUI操作界面的Git程序,让读者体验不同的操作风格。接着学习Git在团队开发模式的应用,以及介绍网络上提供Git文件库存储服务的网站。让读者了解如何使用这些资源,辅助程序项目的开发。使用这些网站的另一个好处是可以藉此参与开放源码的程序项目,提升自己程序开发的经验和能力。本书的最后部分是介绍架设Git Server的几种方法,让每一个项目开发团队,可以按照自己的软硬件环境,选择适合的方式来管理和控制项目。
  相信通过本书精心编排的学习单元,能够顺利地引导初学者,一步一步地建立完整的操作观念和技巧,并且培养在不同情况下的应用能力。一旦读者能够完全掌握Git之后,它必定成为你或是你的团队开发程序项目的最佳助手!
  孙宏明    
				
 
				
				
					版本控制的艺术:从零到精通Git与GitHub  在这个快节奏的软件开发时代,高效、可靠的版本管理已成为项目成功的基石。无论是个人开发者、小型团队还是大型企业,掌握强大的版本控制工具都能显著提升开发效率,降低协作风险,并确保代码的稳定性和可追溯性。本书将带领您踏上一段深入探索Git和GitHub世界的旅程,为您提供一套系统、全面的学习路径,让您从Git新手蜕变为能够独立管理项目、高效参与团队协作的专业开发者。  一、 为什么选择Git?为何深入学习GitHub?  Git,作为分布式版本控制系统的黄金标准,以其强大的灵活性、卓越的性能和广泛的社区支持,彻底改变了软件开发的协作模式。它允许开发者在本地拥有完整的代码仓库副本,即使在网络不稳定或离线状态下也能进行开发和提交。更重要的是,Git强大的分支和合并功能,使得并行开发、功能迭代和Bug修复变得前所未有的简单和安全。  GitHub,作为全球最大的代码托管平台,不仅是Git的强大前端,更是一个充满活力的开发者社区。它集成了代码托管、项目管理、问题跟踪、持续集成/持续部署(CI/CD)等一系列DevOps工具,为开发者提供了一个完整的生态系统。学习Git并精通GitHub,意味着您将获得:     高效的代码管理能力: 追踪代码变更历史,轻松回溯到任意版本,避免数据丢失。    顺畅的团队协作: 实现多人并行开发,清晰管理代码贡献,解决代码冲突。    强大的项目管理工具: 利用GitHub的Issue、Pull Request等功能,规划任务,审查代码,提升项目质量。    开放的社区参与: 学习开源项目的开发模式,为开源社区贡献力量,拓展职业视野。    提升个人技术品牌: 通过在GitHub上展示您的项目和贡献,吸引潜在雇主和合作伙伴。  二、 本书将为您构建怎样的学习框架?  本书旨在为您提供一个循序渐进、由浅入深的学习体验。我们将抛弃枯燥的理论堆砌,而是通过大量贴合实际开发场景的案例和动手实践,引导您逐步掌握Git和GitHub的核心概念与高级技巧。  第一部分:Git基础篇——构建坚实的版本控制基石  在本部分,我们将从Git的起源和核心概念出发,逐步引导您完成Git的安装、配置,并掌握最基本也是最重要的版本控制操作。     理解版本控制的本质: 什么是版本控制?为什么我们需要它?Git与其他版本控制系统(如SVN)的区别与优势。    Git的安装与配置: 针对不同操作系统(Windows, macOS, Linux)的详细安装指南,以及个性化配置,如用户名、邮箱、别名等。    Git的核心工作流程: 深入理解Git的三个区域(工作区、暂存区、本地仓库)以及它们之间的交互关系。    初识Git命令:        `git init`:初始化一个新的Git仓库。        `git clone`:克隆远程仓库到本地。        `git add`:将文件添加到暂存区。        `git commit`:将暂存区的变更提交到本地仓库,并撰写有意义的提交信息。        `git status`:查看工作区和暂存区的状态。        `git diff`:查看文件变更内容。        `git log`:查看提交历史。    撤销与恢复: 掌握`git reset`、`git checkout`等命令,用于撤销已提交的变更或恢复到特定版本,确保您在出现失误时能够从容应对。    理解`.gitignore`: 如何配置忽略文件,避免不必要的文件被Git跟踪,保持仓库的整洁。  第二部分:Git分支与合并——掌握高效的并行开发之道  分支是Git的核心特性之一,它使得多人协作和功能开发变得灵活高效。本部分将深入讲解分支的概念、创建、切换、合并以及冲突解决策略。     分支的威力: 什么是分支?为什么要使用分支?理解主分支(`master`/`main`)和开发分支的重要性。    创建与管理分支:        `git branch`:创建、列出和删除分支。        `git checkout` / `git switch`:在不同分支之间切换。    合并分支:        `git merge`:将一个分支的变更合并到当前分支。        理解快进合并(Fast-forward merge)与三方合并(Three-way merge)。    处理合并冲突: 当不同分支对同一文件进行了修改,合并时可能会产生冲突。我们将详细讲解如何识别、分析和解决代码冲突,恢复代码的一致性。    分支策略: 介绍常见的Git分支策略,如Gitflow,以及如何根据项目需求选择合适的分支模型。    衍合(Rebase): 学习`git rebase`命令,了解它如何帮助您保持提交历史的整洁,实现更线性的提交记录。  第三部分:GitHub协作篇——构建云端开发与社区的桥梁  GitHub不仅仅是Git仓库的远程托管,更是集成了强大的协作工具和开发者社区。本部分将带您全面了解GitHub的使用,以及如何利用它进行高效的团队协作和参与开源项目。     GitHub账户与创建仓库: 注册GitHub账户,了解仓库(Repository)的概念,以及如何在GitHub上创建和管理您的远程仓库。    远程仓库操作:        `git remote`:添加、查看和删除远程仓库。        `git push`:将本地提交推送到远程仓库。        `git pull`:从远程仓库拉取最新的变更到本地。        `git fetch`:从远程仓库获取最新的变更,但不自动合并。    Fork与Pull Request(PR):        Fork: 学习如何Fork他人的仓库,创建您自己的副本。        Pull Request: 掌握提交PR的完整流程,包括创建分支、进行修改、提交PR、进行代码审查(Code Review),以及如何响应评论和更新PR。这是参与开源项目和团队协作的关键。    Issue与项目管理:        Issues: 利用GitHub的Issue功能来跟踪Bug、需求、待办事项,并进行讨论和分配。        Labels, Milestones, Assignees: 学习如何使用这些功能来更好地组织和管理项目任务。    代码审查(Code Review): 学习如何有效地进行代码审查,提供建设性的反馈,提升代码质量。    GitHub Pages: 利用GitHub Pages轻松部署静态网站,展示您的项目或个人博客。    README.md的撰写: 学习如何编写清晰、详细的README文件,为您的项目提供良好的介绍。    参与开源项目: 了解贡献开源项目的基本流程,从Fork、克隆、开发、提交PR到最终被接受。  第四部分:Git进阶与实践——成为Git专家  在本部分,我们将深入探讨Git的一些高级特性,以及在实际开发中经常遇到的问题和解决方案。     标签(Tagging): 学习如何使用`git tag`为重要的提交打上标记,例如版本号,方便快速定位。    Stash(暂存): 掌握`git stash`命令,用于临时保存未提交的修改,以便您切换到其他任务,之后再恢复。    Git Hooks: 了解Git Hooks的概念,以及如何利用它们在特定Git事件(如提交前、提交后)自动执行脚本,实现自动化工作流程,如代码格式化、单元测试等。    Git Reflog: 学习`git reflog`,它记录了您在本地仓库的所有操作,是恢复丢失提交的强大工具。    Git Submodules: 了解如何管理子模块,将其他Git仓库作为您当前仓库的一部分。    Git LFS(Large File Storage): 针对大型文件的存储优化,尤其适用于游戏开发、数据科学等领域。    Git的高级日志与搜索: 探索`git log`的各种选项,以及如何使用`git grep`在提交历史中搜索内容。    常见Git问题与调试: 总结开发中可能遇到的各种Git问题,并提供实用的解决思路和调试技巧。  三、 谁适合阅读本书?  本书适合以下人群:     初学者: 想要系统学习Git和GitHub,为软件开发打下坚实基础的开发者。    有一定Git基础的开发者: 想要深入理解Git的工作原理,掌握分支管理、冲突解决等高级技巧,提升协作效率的开发者。    团队协作的成员: 希望学习如何与团队成员高效协作,进行代码评审,并参与到项目管理中的开发者。    开源爱好者: 想要了解并参与开源项目,为社区贡献力量的开发者。    项目负责人与技术领导者: 需要掌握版本控制最佳实践,为团队构建稳定、高效的开发流程的管理者。  四、 学习本书,您将收获什么?  通过系统学习本书,您将能够:     自信地使用Git进行版本控制: 无论是个人的小项目还是大型团队的复杂项目,您都能游刃有余地管理代码。    高效地与他人协作: 掌握GitHub的协作流程,顺畅地进行代码共享、合并和评审。    解决常见的Git难题: 遇到冲突、误操作等问题时,能够快速有效地找到解决方案。    理解并应用行业标准的开发流程: 熟悉DevOps理念,并能将Git和GitHub融入您的日常开发工作中。    为您的职业生涯增添重要技能: Git和GitHub是现代软件开发不可或缺的技能,掌握它们将极大地提升您的市场竞争力。  结语  本书不仅是一本技术手册,更是一次赋能之旅。我们希望通过严谨的内容、丰富的案例和实用的技巧,帮助您真正理解和掌握Git与GitHub的力量。无论您是刚刚踏入编程世界的新手,还是经验丰富的开发者,相信本书都将成为您在版本控制领域不可或缺的得力助手。现在,就让我们一起开启这段精彩的学习旅程吧!