Git 简洁教程:本地项目如何与 GitHub 互连?
之前转载过一篇文章:三个简单规则,助你养成Git和GitHub好习惯,有读者留言说希望看到一些关于 Git 比较系统的简洁教程。红色石头觉得很有必要,就开始准备写一些关于 Git 的教程文章。本文是比较简单的初级教程,能够帮助我们快速了解 Git,并学会使用 Git 来讲我们的本地项目推动到 GitHub 上。
Git 是世界上最先进的分布式版本控制系统,简单来说就是帮助个人或者公司团队进行版本控制的一个强大的工具。我们熟知的 Linux 系统就是使用 Git 来进行版本控制的。
说起 Git 的诞生,先说一个有趣的故事。当年,Linux 还是使用一个商业的版本控制系统 BitKeeper。2005 年的时候,Linux 社区的一些大牛们试图破解 BitKeeper 的协议,却被 BitKeeper 的东家发现,一生气就要收回Linux 社区的免费使用权。原以为这一惩戒能给 Linux 社区一次警钟,谁知道 Linux 的 “生父” Linus 卷起袖子花了两周时间自己用 C 写了一个分布式版本控制系统,这就是 Git!一个月之内,Linux 系统的源码已经由 Git 管理了!什么是大牛?自己感受一下~
为什么 Git 如此重要?因为作为一个开源免费的版本控制工具,Git 确实很好用,全世界的程序员们基本都在用它。俗话说 “工欲善其事,必先利其器!” 如果你想从一名初级的程序员成长为一名优秀的高级程序员,必须熟练掌握 Git。
好了,回归正题,马上开始我们的 Git 之旅!
首先,我们需要安装 Git 软件。
1. 在 Linux 上安装
如果是 Debian 或 Ubuntu Linux,直接在终端输入以下命令即可完成安装:
sudo apt-get install git
如果是其它 Linux,也可以现在 Git 官网上下载源码,然后在终端输入以下命令,进行源码安装:
./config
make
sudo make install
2. 在 Mac OS X 上安装
最简单的方法是直接从 AppStore 安装 Xcode,Xcode 已经集成了 Git,不过默认没有安装,你需要运行 Xcode,选择菜单 “Xcode”->“Preferences”,在弹出窗口中找到 “Downloads”,选择 “Command Line Tools”,点 “Install” 就可以完成安装了。
3. 在 Windows 上安装
在 Windows 上安装 Git 非常简单,直接在 Git 官网上下载安装程序,然后按默认选项安装即可。
安装完成之后,在开始菜单栏->所有程序中,就会找到 Git->Git Bash。
打开 Git Bash,蹦出一个类似 cmd 窗口的东西,就说明 Git 安装成功!
别急,安装完成之后还有最后一步,就是自报家门,告诉 Git 你的用户名和邮箱(即你的 GitHub 的用户名和邮箱)。输入以下命令设置:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
注意这里的 “Your Name” 和 “email@example.com” 更换为你自己的就行了。
使用 --global 参数是让本机器所有的 Git 仓库都使用该用户名和邮箱,不同的仓库也可以使用不同的用户名和邮箱。但我们通常只会用到一个 GitHub 账号,所以直接这么设置就可以了。
安装 Git 之后,就可以在我们自己的电脑上来创建本地仓库了。仓库(Repository)可以简单理解为一个目录,每个目录包含着一个仓库。
首先,我们可以在自己电脑的任意位置新建一个文件夹(例如 E: Git/ 目录),该目录作为 Git 的管理目录,所有的仓库都将建立在此目录下。
在此目录下,我们要建立一个仓库,名为 learngit。打开 Git Bash,cd 到 Git/ 目录下,新建一个目录 learngit,再 cd 到 learngit 目录,命令如下:
mkdir learngit
cd learngit
然后,使用下面的命令将 learngit 目录变成 Git 可以管理的仓库:
git init
运行该命令之后,就可以在 learngit 目录下生成一个 .git 隐藏文件夹,表示初始化成功,该目录已经可以被 Git 管理了。
现在,我们已经创建了一个空的仓库 learngit,下一步往仓库里加点内容。例如在该仓库目录下新建一个 readme.md 文件。将该文件添加到仓库中需要两个步骤:
1. 用命令 git add 告诉 Git,把文件添加到仓库:
git add readme.md
2. 用命令 git commit 告诉 Git,把文件提交到仓库:
git commit -m "create readme file"
其中,-m 后面输入的是本次提交的说明,最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
如果有多个文件,可以先使用 git add 将所有文件添加进来,最后使用一次 git commit 命令就好。值得一提的是,还可以使用 git add . 直接将本仓库目录下所有的文件都一次性添加到仓库中,方便很多。
一般来说,我们不会只在本地建立 GIt 仓库,更常用的情况是让本地仓库与 远程仓库 GitHub 进行互连。Git 的强大之处也正在于此。
首先,我们需要一个 GitHub 账号,相信大部分人早已有了。没有的话,直接在 GitHub 上注册,输入用户名和邮箱(这里的用户名和邮箱与上文安装 Git 最后一步输入的信息一致就好):
这时候,你的本地 Git 仓库与 GitHub 远程仓库还没有办法传输的,由于使用的是 SSH 加密,需要进行以下设置。
1. 创建 SSH Key。在用户主目录下,看看有没有 .ssh 目录,如果有,再看看这个目录下有没有 id_rsa 和 id_rsa.pub 这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开终端(Windows 下打开 Git Bash),创建 SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
2. 登录自己的 GitHub,点击页面右上角 Settings 选项。
点击 SSH and GPG keys:
点击 New SSH key 后,输入 Title 和 Key。重点来了,Key 就是你电脑的 id_rsa.pub 里的内容,直接复制过来就好。
点击 Add SSH key,就完成了 SSH 的配置。之所以要设置 SSH key,是为了识别出你推送的确实是你推送的,而不是别人冒充的,而 Git 支持 SSH 协议,所以,GitHub 只要知道了你的公钥,就可以确认只有你自己才能推送。
如果你有两个电脑,比如公司一个,家里一个。那么可以把两台电脑的公钥都添加到你的 GitHub,这样就都可以实现推送了。
其实,本地 Git 仓库与 GitHub 的互连有两种形式,我们首先介绍第一种方式:从本地上传到 GitHub。
刚才我们已经在本地建了一个 learngit 仓库,那么如何把这个仓库上传到我们的远程仓库 GitHub 上呢?
1. 在 GitHub 上创建一个新的空白仓库,取名为 learngit。首先,点击自己的 GitHub 主页右上角 New repository:
然后,Repository name 写上 learngit,不要勾选 “Initialize this repository with a README”,直接点击 Create repository:
然后看到如下界面:
图中 1 标注的就是远程仓库 learngit 的地址,点击 2 处就可以复制 1 的地址。我们待会就要用到。
2. 回到我们的 Git Bash 界面,把本地 Git 库与刚刚建的远程仓库关联,输入下列命令:
git remote add origin https://github.com/yourname/learngit.git
其中, “https://github.com/yourname/learngit.git” 就是上图中的 1 地址,注意将 yourname 替换成你自己的 GitHub 用户名。
3. 下一步就是把本地仓库的所有文件(刚刚新建的 readme.md)上传到 GitHub 上。运行以下命令:
git push -u origin master
运行命令之后,一般需要输入 GitHub 账号的用户名和密码,按要求输入就行了。上传成功显示如下语句:
再回到 GitHub 中,进入 learngit 仓库,就会发现 readme.md 文件已经传到我们的 GitHub 上了。GitHub 页面中看到远程库的内容已经和本地一模一样了。
之后,我们在本地 learngit 仓库中做任何改动后,都可以直接运行下面的语句添加、提交到仓库并上传到 GitHub 远程仓库中。
git add .
git commit -m "xxx"
git push -u origin master
大功告成,现在你已经基本掌握了 Git 的使用方法论。不过下面红色石头还要给大家介绍另一种常用的让本地仓库与 GitHub 远程仓库互联的方法。
还有一种情况很常见,就是我们已经在 GitHub 上创建了一个远程仓库了,如何使用 Git 将 GitHub 上的仓库同步到本地呢?
假如我们事先在 GitHub 上创建了一个 learngit 仓库,如下图所示:
1. 点击上图中红色方框图标,即可复制该仓库的地址。
2. 打开 Git Bash,cd 到我们之间建立的 /Git 目录下(/Git 目录下没有 learngit 文件夹,忽略上一节的操作),输入以下命令,就可以直接将 GitHub 远程仓库 learngit 克隆到本地。
git clone https://github.com/yourname/learngit.git
其中,“https://github.com/yourname/learngit.git” 就是上图中复制的地址。
显示以下语句,证明 clone 完成!
这样,在 /Git 目录下就会出现 learngit 文件夹,GitHub 远程仓库的所有文件都会 clone 在 /Git/learngit/ 目录下(包含一个 .git 文件夹)。
这样就完成了从 GitHub 远程仓库 clone 到本地仓库的功能,这种方法不需要运行 git init 语句,直接上面一条语句即可。
克隆之后,就可以在本地仓库添加文件、修改项目等,再使用下面三条语句来上传到 GitHub 远程仓库。这跟上一节最后介绍的方式是一样的。
git add .
git commit -m "xxx"
git push -u origin master
注意,一般输入 “git push -u origin master” 语句后,都需要输入 GitHub 用户名和密码。这是因为我们使用的是 https 提交方式,改为 ssh 方式即可。但红色石头觉得这 “多余” 的操作未必不是好事,也算是一种保护机制吧。因此,在这篇教程中就不介绍方法了。
好了,红色石头已经把 Git 的最简单的用法介绍完了。网上相关的博客和教程很多,但是,往往比较杂或者不准确、不完整。这篇教程是我精心整理并亲自实践的。相信大家在读完本文之后,可以很清楚地掌握如何在本地建立 Git 仓库和将本地项目与远程仓库互连的两种方法。赶紧试试吧!
参考文献:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
【推荐阅读】
吴恩达《Machine Learning Yearning》完结!