Git 和 Github:完全新手的初学者指南
已发表: 2017-08-15不管电视和电影告诉我们什么,作为软件开发人员的生活并不包括坐在黑暗的房间里,我们的键盘只被显示器的光芒照亮,与另一个人互动的想法令人厌恶。 不,软件开发人员的生活是社交和协作的——有时会令人沮丧。 这就是为什么我们有 git 和 Github。
Git 是版本控制软件,它使与队友的协作变得超级简单……一旦您通过了最初的学习曲线。 这可能令人生畏,但这就是我在这里的原因!
什么是 Git?
嗯,这不只是我们南方人从我们的门廊上赶走varmints 的方式,我会告诉你的。
就像我上面说的,Git 是版本控制软件。 它是由 Linux 的发明者 Linus Torvalds 创建的。 您不必运行 Linux 即可使用 git——您也可以在 Windows 和 Mac 上使用它。
Git 可让您轻松跟踪您和您的团队在软件开发过程中所做的每个修订。 你们共享一个独立工作的代码库,然后又合并在一起。 你也不需要一直连接,因为项目既保存在每台机器本地,也保存在远程(可能在 Github)。
Git 很特别(而且几乎是强制性的),因为您可以恢复到任何以前版本的代码、分支和开发特定功能而不会影响任何东西或任何其他人,并且由于其分布式特性而保持数据损坏的安全性。
它还提供易于实现的加密和跨操作系统兼容性,以及异步、非线性工作流,因此无论您身在何处,都可以处理项目的某些方面。
基本上,如果你不使用 git,你就是用一只手绑在背后编码。
所需词汇
当您第一次开始使用 git 时,它可能会令人生畏。 如果您过去从未使用过任何形式的版本控制,那么命令和概念可能看起来完全陌生。 不过,您会非常快速地拿起它们。
存储库:
通常称为repo 。 存储库是您使用 git 跟踪的文件和文件夹的集合。 存储库包含您的团队对项目所做更改的整个历史记录。 这是您和您的团队将代码投入其中的大 ole 盒子。
GitHub:
最流行的 git repos 远程存储解决方案。 它还允许您设置项目的访问权限、跟踪和提交错误、接受功能请求、订阅存储库通知以及利用图形界面,而不是使用命令行。 回购默认为公开,但付费账户可以有私人账户。
犯罪:
将此视为保存您的工作。 当您提交到存储库时,就好像您正在收集当时存在的文件并将它们放入时间囊中。 提交只会存在于您的本地机器上,直到它被推送到远程存储库。
推:
推动是承诺黄油的面包。 提交会将您的文件扔进时间胶囊,而推动则是将时间胶囊发射到太空中。 推送本质上是将您的提交同步到云(同样,可能是 Github)。 您也可以一次推送多个提交。 你可以离线工作,完成大量工作,然后当你回到文明世界时,用那个甜蜜、甜蜜的 wifi 把它全部推送到 Github。
分支:
你可以把你的 git repo 想象成一棵树。 树的树干,上线的软件,被称为主分支。 那就是直播。 那棵树的树枝,好吧,叫做树枝。 这些是从主代码库分支的代码的单独实例。 您可能会针对单个功能或实验性补丁进行分支。 通过分支,你可以保持软件的完整性,并且如果你做了一些完全疯狂的事情,你就有办法恢复。 它还允许您完成您的任务,而不会绊倒您团队的方式(或他们进入您的方式)。
合并:
当一个分支被完善、没有错误(至少就你所知)并准备成为主要代码库的一部分时,它将被合并到主分支中。 合并就是它听起来的样子:将两个分支整合在一起。 任何新的或更新的代码都将成为代码库的正式部分。 任何从合并点分支的人也将在他们的分支中拥有此代码。
克隆:
克隆一个 repo 几乎就是它听起来的样子。 它需要整个在线存储库并在您的本地机器上制作它的精确副本。 您需要出于多种原因执行此操作,其中最重要的原因是与新团队在项目中间开始、交换工作站或从损坏的存储库重新开始。
叉子:
分叉很像克隆,只不过不是在本地机器上复制现有存储库,而是以自己的名义获得该代码的全新存储库。 这个特性主要用于获取现有的代码库并用它去一个全新的方向,这在开源软件中经常发生; 开发人员看到了一个可行的基本想法,但希望采用不同的方式。 分叉允许这种情况发生。 您还可以在其他开发人员的存储库中进行游戏,就像在您自己的个人沙箱中一样。 如果你做了一些你认为他们可能喜欢的事情,你可以提出一个合并请求。
拉取请求:
拉取请求是当您提交将您所做的更改(在分支或分叉上)拉取(或合并)到存储库的主分支的请求时。 这是大时代。 这就是魔法发生的地方。 如果拉取请求获得批准,您将正式为该软件做出贡献,并且 Github 将永远准确地展示您所做的一切。 但是,如果拉取请求因任何原因被拒绝,拒绝者将能够就请求被拒绝的原因以及您可以做些什么来使其被接受提供反馈。
入门和所需命令
那还不错吧?
对。 现在您已经清楚地了解了 git 是什么,是时候深入了解并亲自动手了。
但是,我应该借此机会指出,我将假设您正在使用命令行与 git 交互。 当然也有图形化的Git客户端(和Github上,甚至可以让你做通过它的Web界面几乎一切),但这个职位的目的,我们不会与他们费心了。 您将在终端之外做一些事情,但命令行将成为您的新 BFF。 所以这也是我们要做的。
如何安装 Git
Git(可能)没有安装在你的电脑上,所以我们必须把它安装到那里。 幸运的是,无论您使用的是 Linux、Mac 还是 Windows,安装 git 都非常简单。
对于 Linux,打开终端并输入sudo apt-get install git-all (如果您使用的是 Ubuntu。如果不是,则有一个列表,列出您使用的任何其他发行版的所有 Linux 软件包安装命令。)
在 Windows 上,它同样简单。 您下载安装程序并运行它。
在 Mac 上,你只需要打开终端并输入git 。 如果没有安装 git,你会看到:

单击安装后,您就可以开始了。
看? 超级简单!
使用 Git
这就是乐趣开始的地方。 现在你已经安装了 git,是时候...... git-r-done! 哈! 但现在真的是时候深入了解并学习开始使用这个惊人的小块命令行魔法了。 还有什么比 Github 更好的起点?
因此,请继续注册您的新 Github 帐户(或者,如果您已经拥有,请登录,我稍后会与您联系)。
Github 可免费用于公共存储库,您可以付费拥有私有存储库。 (仅供参考:您可以在 Bitbucket 获得免费的私人回购,这是一个鲜为人知但很棒的地方)。 在大多数情况下,Github 上的免费选项对大多数人来说都很好(而且它的功能也像一份动态简历!),但有些客户和雇主需要隐私和安全,所以有选择是件好事。

之后,您就可以设置您的第一个存储库了! 在您验证您的电子邮件和所有有趣的东西之后。


您首先需要在 Github 中设置存储库。 您也可以在计算机上完成,然后上传,但先在网络上完成更简单。

请注意,我并不担心此 repo 中的许可证或 .gitignore。 因为这不是一个真正的软件,我不必担心这些,但是在生产情况下,.gitignore 显然可以让您忽略存储库目录中的文件。 您可以在此处阅读您的软件需要什么许可证。
但是,我使用 README 文件初始化 repo,您应该使用它来保存项目的基本文档。 在我工作时,我倾向于将它们用作主要更改、待办事项列表和不同类型笔记的跟踪器。 但那是个人项目。 不同的团队领导会有不同的期望。
既然这个 repo 存在于 Github 上,是时候通过克隆把它放到你的本地机器上了。 在您的存储库右侧,文件列表正上方,您将看到一个绿色按钮,上面写着“克隆或下载”。 点击它,你会看到这个:

因为我们是克隆,所以除了关于使用 HTTPS 克隆的部分之外,我们可以忽略所有内容。 您不必配置任何东西。 推送时,您只需要输入用户名和密码。
但是,首先,您需要设置您希望存储库在本地计算机上的位置。 打开你的终端。 (Windows 用户,搜索并打开一个名为 Windows Powershell 的程序。我也建议您右键单击并选择“以管理员身份运行”。)
您需要学习的第一个命令是ls 。 这将列出当前目录中的所有内容。 为了简单起见,让我们将 dev 文件夹放在计算机的主目录中。 您可以使用mkdir dev创建一个名为dev的目录。 很简单,对吧? 如果您再次ls ,您将看到列出的新文件夹。


然后你想使用cd dev移动到你的新目录,这是更改目录的命令。 看,命令行一点也不可怕! 如果需要返回上一个目录,只需使用cd .. 。
一旦你新的dev的文件夹内,它的时间与git舞会开始。 呵呵呵呵。
首先复制单击 Github 上绿色“克隆或下载”按钮后出现的 URL。 它看起来像这样: https : //github.com/bjk1337/myfirstrepo.git
从 Github 克隆 Git 存储库的命令
- git 克隆 https://github.com/bjk1337/myfirstrepo.git
- ls
- cd myfirstrepo – 或者任何你命名的仓库
- ls
之后,您的终端应该是这样的,显示您在 Github 上设置的 README 文件。 恭喜! 您刚刚第一次使用 Git,现在可以开始开发了。

细节吉蒂坚韧不拔
现在您的机器上有一个 repo,您需要学习使用它。 因此,让我们快进一点,说您已经在一个很酷的项目上工作了一段时间,并且目录中有一些文件。 是时候提交并将它们推送到 Github 了。
添加并提交到 Git 存储库
- git status – 此命令将显示哪些文件尚未添加到下一次提交的列表中。 在大多数终端应用程序中,未添加/添加的文件将分别为红色/绿色。
- git 添加。 – 通过添加一个 . 在命令的末尾,您告诉 git 将所有内容都包含在目录中。 如果要添加单个文件,只需使用它的文件名。 比如functions.php 。
- git status – 取决于您是否使用了 . 或文件名,无论您添加什么,现在都应该是绿色的。
- git commit -m “添加三个空文件” – 当您提交这些文件时,您还应该快速留言,让您的队友(或您未来的自己)确切地知道该提交中的内容。 标准的 git 约定说你应该尽可能简洁和具体,并使用动词的现在时开始消息。
你的终端现在会有很多文本,它应该是这样的。 但现在你知道这一切意味着什么!

推送到像 Github 这样的远程 Git 存储库
推送到仓库比这更容易。
- git status – 您应该始终检查以查看事物的外观并确保您在正确的分支上。
- 推
- 输入您的 Github 用户名和密码- 请注意,即使您键入,密码字段也将保持为空。 没关系。 只需输入并按回车键即可。 如果您使用 SSH,您将跳过此步骤。

您可以转到您的 Github 帐户并检查存储库,您的文件将在那里,提交消息等等!

分支和合并
您需要熟悉的最后两个命令处理分支和合并。 就像我上面说的那样,在一个分支上工作可以保证主代码库的安全,一旦你的更改都很棒,你就可以将它们全部合并在一起。
它们可能有点棘手,因此可能需要一些刺激才能让它们表现得很好。
- git checkout -b “branch1” ——这个命令将创建一个你命名的新分支,并将你切换到它作为你的工作分支。 它将git checkout和git branch命令组合成一行方便的代码。
- touch awesome.html - 这只是一个填充命令,用于创建一个新的 html 文件,我将把它合并回母版。
- 和以前一样,你将git status, git add awesome.html, git commit -m “create awesome.html”
- git status再次会让你看到一切都应该是这样。

如果您在合并之前尝试推送它,您将收到一条消息,提示您需要设置 repo 的来源。 Origin是一种奇怪的命名约定,用于您的计算机认为远程存储库。 所以基本上,你只是告诉它,是的,可以像对 master 一样将这个分支推送到 Github。 这是 Stack Overflow 上关于git origin的一个很好的帖子。
顺便说一下,它会告诉你它去了 branch1 –> branch1。

您可以使用git checkout master切换回 master 分支(这次没有checkout -b因为您只在创建新分支时使用它,而不是交换。我在下面的屏幕截图中混淆了我的命令并尝试了git branch master . 没有成功,因为master已经存在了。
- git status – 一如既往。
- git merge branch1 – 由于该分支中的一切都很好,我们可以继续合并。
- 如果我们再次git status ,我们将看到我们领先于origin/master 1 次提交。 这意味着我们尚未将所做的所有更改推送到 Github。
- git push来同步!

检查你的 Github 帐户——你会看到你所做的一切都反映在那里。 您还可以看到不同的提交消息、我们所做的分支和提交的数量,以及对 repo 的任何贡献者和他们所做的事情。

就是这样! 恭喜! 您刚刚改变了基本的 git 工作流程。 你可以做的方式,途径,方式比这与GIT更复杂的东西,但是这是非常接近你将每天的基础上,当你只是...... gitting开始可能使用。
哦,还有一件事!
我在本文中使用的 Github存储库 myfirstrepo仍然可用。 随意检查它,玩它,分叉它,克隆它,或者任何你认为会让你习惯使用 git 的东西。 玩得开心! (感谢你对我和我所有的 git 双关语的包容。)
文章缩略图由 MchlSkhrv/shutterstock.com 提供
