跳至主要內容

前言

guodongAndroid大约 5 分钟

在开始学习之前您需要做的事

要阅读本书,您将需要以下内容:

  • 建议使用 Git 2.32 或更高版本。Git 是您将用于本书中所有工作的软件包。从官方的 Git 页面可以免费获取到 macOS,Windows 和 Linux 可用的安装器:https://git-scm.com/downloadsopen in new window。本书中的操作我们已经在 Git 2.32 上进行了测试,但是您仍然可以使用老版本的 Git。

本书源码

本书的所有资料都可以在 GitHub 仓库中找到:

https://github.com/raywenderlich/gitamaterials/tree/editions/2.0open in new window

您可以从那里下载整本书的资料。

引言

人们选择阅读一本关于 Git 的书通常有两种原因:其一,他们对想深入了解 Git 的工作原理;其二,他们遇到了问题,感觉非常沮丧,现在需要一些东西来解决他们的问题。

不管是什么情况把您带到这里,我们都很欢迎!我很高兴您能加入我们。正是因为以上两个原因,所以我才写了本书。我天生就是一个修补匠和黑客,我喜欢深入研究软件的内部结构,看看是什么让它们运转起来。但我和您一样,起初发现 Git 是一个难以理解的软件。我的大脑在 1990 年代后期接受了软件开发方面的培训,发现了像 SVN 这样的版本控制包,它们具有熟悉的客户端-服务器架构、Windows shell 集成以及相当简单但很重的流程。大约七年前,当我开始使用 Git 和 GitHub 时,我发现它充其量是难以理解的。似乎无论我做什么,Git 都在告诉我遇到了合并冲突,或者它正在将来自 master 分支的更改合并到我的当前分支,或者经常提示未暂存的更改。当我尝试将我的更改推送到主分支时,为什么它让我先 “pull request”?

一点一点地,我对 Git 的工作原理有了更多了解;如何解决我遇到的一些常见问题,我最终达到了每天使用它感到舒适的程度。

视频课程

2017 年初,我的同事 Sam Davies 创建了一个名为 “Mastering Git” 的会议演讲,并由此在 raywenderlich.com 上创建了两个视频课程:“Beginning Git” 和 “Mastering Git”。这两门课程构成了这本书的基础,但它总是让我觉得有点遗憾,虽然 Sam 的视频版本有很多实用干货,并且很好地结合了使用命令行和图形工具来解决常见的 Git 工作流问题,但我总觉得好像缺少了一些细节;这些细节会让好奇的人说:“我知道是怎么回事,但我真的想知道为什么是这样。”

本书提供了更多关于为什么的背后知识:或者,换句话说,“为什么 Git 对我的存储库这样做?”,在底层,您会发现 Git 有一个相当简单和优雅的架构,这就是为什么它可以很好地扩展到使用 Git 作为其版本控制软件的全球分布式项目,例如:GitHub、GitLab、Bitbucket 或其他云存储库管理解决方案。

虽然 Tower 或 GitHub Desktop 等基于 GUI 的 Git 前端工具非常擅长减少工作量,但它们将您从 Git 的实际操作中抽离了出来。这就是本书优先采用命令行方法的原因,这样您将获得更好的了解 Git 为管理您的存储库而采取的各种操作 —— 更重要的是,您将更好地了解当 Git 执行似乎没有多大意义的事情时如何解决问题。

如何阅读本书

这本书涵盖了 Git 入门。如果您仍在努力弄清楚推送和提交之间的区别,或者您从不同的版本控制系统转到 Git,那么请从这里开始。本部分将向您介绍克隆、暂存、提交、同步、合并、查看日志等概念。第一章是关于使用 Git 的速成课程,您将在其中学习基本的 Git 工作流程,以了解如何处理,然后再了解内容和原因。

本书使用一个小型存储库,该存储库包含一个基于文本文件的简单 ToDo 系统,该系统包含网站内容的想法(好的和坏的)想法。这是学习 Git 而不会陷入特定语言或框架的理想方式。我们精通 Git 系列的下一本书,Advanced Git,我们鼓励您在完成本书后再进行深入学习。

工作流

本节介绍一些常见的 Git 工作流,例如功能分支工作流、Gitflow、基本的分叉工作流,甚至是集中式工作流。 由于 Git 的灵活性,许多团队已经为他们的团队设计了有趣的工作流程来为他们工作——但这并不意味着有一种正确的方法来管理您的开发。

在实践中学习

最重要的是,我能给出使用 Git 的最好建议是:找到在日常工作流程中使用它的方法,找到为使用 Git 管理开源项目存储仓库做出贡献的方法,并且不要害怕尝试使用一些更深奥的 Git 命令来完成某些事情。这样您就几乎不可能把任何事情搞砸而无法修复,大多数开发人员在不经意间让自己陷入技术兔子洞时学得最好 —— 因为他们总会想办法把自己挖出来。

在本书出版时,GitHub(可能还有其他网站)提议将默认存储库分支的名称更改为 main,而不是 master,以尝试使用更具文化意识的语言。因此,如果您正在阅读本书并见到某些 repos 使用 main 作为中央参考分支,请不要担心 —— 只需在操作命令时使用 main 代替 master 即可。当 Git 社区中对 main 与 master 达成共识时,我们将修改本书以匹配。

祝您在 Git 冒险中一切顺利。 是时候开始了!