git#
作为一个分布式的版本控制系统,在 Git 中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。
GitHub 可以托管各种 Git 库,并提供一个 web 界面,但与其它像 SourceForge 或 Google Code 这样的服务不同,GitHub 的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的 Fork 的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的 pull request 机制向项目负责人申请代码合并。
创建 GitHub 仓库的步骤及方法#
点击 Repositories
,进入如下界面:
点击上图标注所示的绿色 New
按钮,进入下一步:
- Repository name,仓库名称;
- Description,可选描述,也就是写不写都可以;
- Public,默认的仓库类型;
- Initialize this repository with a README,初始化仓库的信息文件,建议勾选。
GitHub 术语解释#
GitHub 的常用术语,也可以说是基本概念:
- Repository:简称 Repo,可以理解为“仓库”,我们的项目就存放在仓库之中。也就是说,如果我们想要建立项目,就得先建立仓库;有多个项目,就建立多个仓库。
- Issues:可以理解为“问题”,举一个简单的例子,如果我们开源一个项目,如果别人看了我们的项目,并且发现了 bug,或者感觉那个地方有待改进,他就可以给我们提出 Issue,等我们把 Issues 解决之后,就可以把这些 Issues 关闭;反之,我们也可以给他人提出 Issue。
- Star:可以理解为“点赞”,当我们感觉某一个项目做的比较好之后,就可以为这个项目点赞,而且我们点赞过的项目,都会保存到我们的 Star 之中,方便我们随时查看。在 GitHub 之中,如果一个项目的点星数能够超百,那么说明这个项目已经很不错了。
- Fork:可以理解为“拉分支”,如果我们对某一个项目比较感兴趣,并且想在此基础之上开发新的功能,这时我们就可以 Fork 这个项目,这表示复制一个完成相同的项目到我们的 GitHub 账号之中,而且独立于原项目。之后,我们就可以在自己复制的项目中进行开发了。
- Pull Request:可以理解为“提交请求”,此功能是建立在 Fork 之上的,如果我们 Fork 了一个项目,对其进行了修改,而且感觉修改的还不错,我们就可以对原项目的拥有者提出一个 Pull 请求,等其对我们的请求审核,并且通过审核之后,就可以把我们修改过的内容合并到原项目之中,这时我们就成了该项目的贡献者。
- Merge:可以理解为“合并”,如果别人 Fork 了我们的项目,对其进行了修改,并且提出了 Pull 请求,这时我们就可以对这个 Pull 请求进行审核。如果这个 Pull 请求的内容满足我们的要求,并且跟我们原有的项目没有冲突的话,就可以将其合并到我们的项目之中。当然,是否进行合并,由我们决定。
- Watch:可以理解为“观察”,如果我们 Watch 了一个项目,之后,如果这个项目有了任何更新,我们都会在第一时候收到该项目的更新通知。
- Gist:如果我们没有项目可以开源或者只是单纯的想分享一些代码片段的话,我们就可以选择 Gist。不过说心里话,如果不翻墙的话,Gist 并不好用。
Git 的安装流程及步骤#
GitHub 是基于版本控制系统 Git 之上的
如果我们想要进行代码托管,想要进行团队协作,这都少不了一个工具,那就是:Git。
Git 的安装流程及步骤。
首先,进入 Git 的官网:git - -fast-version-control
如上图所示,在 Git 的官网中点击 Downloads,进入如下页面:
如上图所示,选择对应的操作系统,点击 Windows,进入如下页面:
如上图所示,正常情况下,会自动弹出下载框,否则的话,手动点击红色箭头所示的 click here to download manually 亦可进入如下界面:
如上图所示,直接点击 下载 即可,下载完成后,双击打开,进入如下界面:
如上图所示,这是 Git 的安装界面,点击 Next,进入如下界面:
如上图所示,选择 Git 的安装目录,默认安装到 C 盘的 Program Files 目录下,想换的话,点击 Browse 进入更换。在这里,我们选择将其安装到 D 盘的 Program Files 目录下,选择完成后,点击 Next,进入如下界面:
如上图所示,这里有一些可勾选的项,我们可以按自己的实际需求进行选择(后面同样如此),例如勾选 Additional icons,将在 Git 安装完成后,在桌面创建一个图标,也就是打开 Git 的快捷方式。在这一步,建议大家选择默认即可,例如默认勾选的 Windows Explorer integration,就可以让我们在点击鼠标右键的时候,快速选择打开 Git GUI 或者 Git Bash。选择完成后,点击 Next,进入如下界面:
如上图所示,选择 开始菜单文件夹,默认即可,点击 Next,进入如下界面:
标注 1:仅使用 Git Bash 进行操作;
标注 2:在选择使用 Git Bash 进行操作的同时,也可以使用 Windows 命令行操作,建议选择此项;
标注 3:在选择使用 Git 的同时,也把 Unix 工具加入到了我们的配置之中,而且此操作会覆盖 Windows 的一些工具,强烈不建议选择此项。
如上图所示,我们选择 标注 2 所示的 Use Git from the Windows Command Prompt,点击 Next,进入如下界面:
如上图所示,选择 HTTPS 传输后台,默认即可,点击 Next,进入如下界面:
如上图所示,配置行结束标记,默认即可,点击 Next,进入如下界面:
如上图所示,配置 Git Bash 的终端模拟器,默认即可,点击 Next,进入如下界面:
如上图所示,配置补充功能,默认即可,点击 Next,进入如下界面:
如上图所示,展示了 Git 安装中的界面,安装完成后,弹出如下窗口:
如上图所示,这表示 Git 已经安装完成了,至于图中的两个选择,则分别表示 打开 Git Bash 和 浏览 Git 版本信息,可以都选,也可以都不选,在这里,我们选择 Launch Git Bash,进入如下界面:
如上图所示,我们打开了 Git Bash,输入 git 命令,将显示如下结果:
如上图所示,Git 已经准备就绪
Git 初体验及其常用命令介绍#
接下来介绍 Git 的命令操作,包含 init、add 等,在 Git 中,所有的命令都是以 git
开头,例如,git init
其作用就是初始一个 Git 仓库。
为了方便演示,我们先在 D
盘的 CoderLife
目录下创建一个名为 demo
的子目录,并在其中新建一个名为 hit.txt
的文件,接下来我们的 Git 操作都是基于此目录和文件的。
此外,在这里还要强调一点,那就是:在我们进行任何的 git 操作之前,我们都得先切换到 Git 的仓库目录。
换言之,我们得到先进入到(我们定义的)Git 仓库的最顶层文件目录下,然后从此目录中进入 Git Bash,这样之后的操作才能顺利进行。
如果是 Linux 操作系统,则可以直接 cd 到仓库目录。
选择 demo 目录作为 Git 仓库,然后进入 demo 目录之中,点击鼠标右键,再选择 Git Bash Here,即可打开 Git Bash 的命令行窗口。
如上图所示,Git 会自动定位到进入的位置,如我们选择的 demo 目录,这也是为什么我们需要先进入到 Git 仓库的最顶层目录下,然后再打开 Git Bash 的原因。下面,我们结合 Git 的常用命令演示一下 Git 的相关操作。
第 1 个命令:git status#
在命令行窗口的光标处,输入git status命令,查看仓库的状态:
如上图所示,结果显示 demo 不是一个 Git 仓库,这是很正常的反应,因为我们还没有在计算机中声明 demo 为 Git 仓库,之前说 demo 是 Git 仓库只是我们口头上的说的,计算机当然不会认可。
第 2 个命令:git init#
在命令行窗口的光标处,输入git init命令,初始化 Git 仓库:
如上图所示,结果显示已经初始化 demo 为一个空的 Git 仓库啦!在这里大家可以会有些疑问,因为我们在建立 demo 目录的同时也在里面新建了一个名为 hit.txt 的文件,怎么初始化仓库之后,demo 目录就变成空的了呢?这个问题稍后解惑,我们重新输入 git status 命令检查一下仓库的状态:
如上图所示,在我们初始化仓库之后,demo 目录已经成为一个 Git 仓库了,并且默认进入 Git 仓库的 master 分支,即主分支。在这里,我们需要注意的是 Untracked fies 提示,它表示 demo 仓库中有文件没有被追踪,并提示了具体没有被追踪的文件为 hit.txt,还提示了我们可以使用 git add 命令操作这个文件,简直不要太好。
第 3 个命令:git add#
在命令行窗口的光标处,输入git add hit.txt命令,将 hit.txt 文件添加到 Git 仓库:
如上图所示,如果没有报错,就说明命令已经执行啦!接下来,输入 git status 命令查看仓库状态:
如上图所示,已经显示 Initial commit 初始化提交了,同时已经没有 Untracked files 提示了,这说明文件 hit.txt 已经被添加到 Git 仓库了,而在我们没有进行 git add 操作之前,文件 hit.txt 并不被 Git 仓库认可,因此才会出现提示初始化仓库为空的现象。在这里,需要声明一点,那就是:git add 命令并没有把文件提交到 Git 仓库,而是把文件添加到了「临时缓冲区」,这个命令有效防止了我们错误提交的可能性。
第 4 个命令:git commit#
在命令行窗口的光标处,输入**git commit -m “text commit”**命令,将 hit.txt 文件提交到 Git 仓库:
如上图所示,我们成功将文件 hit.txt 提交到了 Git 仓库,其中 commit 表示提交,-m 表示提交信息,提交信息写在双引号””内。接下来,再输入 git status 命令查看仓库状态:
如上图所示,结果显示 nothing to commit, working tree clean,这表示已经没有内容可以提交了,即全部内容已经提交完毕。
第 5 个命令:git log#
在命令行窗口的光标处,输入git log命令,打印 Git 仓库提交日志:
如上图所示,显示了我们的提交记录,提交记录的内容包括 Author 提交作者、Date 提交日期和提交信息。
通过以上的操作,我们会发现一个现象,那就是:在每个 git 操作之后,我们基本都会输入 git status 命令,查看仓库状态。
这也从侧面说明了 git status 命令使用的频率之高,也建议大家在操作 Git 仓库的时候多使用 git status 命令,这能帮助我们实时了解仓库的状态,显然非常有用。
第 6 个命令:git branch#
在命令行窗口的光标处,输入git branch命令,查看 Git 仓库的分支情况:
如上图所示,显示了仓库 demo 中的分支情况,现在仅有一个 master 分支,其中 master 分支前的’_ 号’表示“当前所在的分支”,例如’_ master’就意味着我们所在的位置为 demo 仓库的主分支。输入命令 git branch a,再输入命令 git branch,结果如下图所示:
如上图所示,我们创建了一个名为 a 的分支,并且当前的位置仍然为主
第 7 个命令:git checkout#
在命令行窗口的光标处,输入git checkout a命令,切换到 a 分支:
如上图所示,我们已经切换到 a 分支啦!也可以通过命令 git branch 查看分支情况:
在这里,我们还有一个更简单的方法来查看当前的分支,即通过观察上图中用红色框圈起来的部分。此外,我们也可以在创建分支的同时,直接切换到新分支,命令为git checkout -b,例如输入 git checkout -b b 命令:
如上图所示,我们在 a 分支下创建 b 分支(b 为 a 的分支),并直接切换到 b 分支。
第 8 个命令:git merge#
切换到 master 分支,然后输入git merge a命令,将 a 分支合并到 master 分支:
如上图所示,我们已经将 a 分支合并到主分支啦!此外,在这里需要注意一点,那就是:在合并分支的时候,要考虑到两个分支是否有冲突,如果有冲突,则不能直接合并,需要先解决冲突;反之,则可以直接合并。
第 9 个命令:git branch -d & git branch -D#
在命令行窗口的光标处,输入git branch -d a命令,删除a 分支:
如上图所示,我们已经将分支 a 删除啦!不过有的时候,通过 git branch -d 命令可以出现删除不了现象,例如分支 a 的代码没有合并到主分支等,这时如果我们一定要删除该分支,那么我们可以通过命令git branch -D 进行强制删除。
第 10 个命令:git tag#
在命令行窗口的光标处,输入git tag v1.0命令,为当前分支添加标签:
如上图所示,我们为当前所在的 a 分支添加了一个 v1.0 标签。通过命令 git tag 即可查看标签记录:
如上图所示,显示了我们添加标签的记录。通过命令git checkout v1.0即可切换到该标签下的代码状态:
如上图所示,我们已经成功切换到 a 分支的 v1.0 标签啦!
利用 ssh 完成 Git 与 GitHub 的绑定git提交代码到github