编辑推荐
针对项目开发人员:以有效率的方式,引导你在实践中完整地学习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的力量。无论您是刚刚踏入编程世界的新手,还是经验丰富的开发者,相信本书都将成为您在版本控制领域不可或缺的得力助手。现在,就让我们一起开启这段精彩的学习旅程吧!