Git和Github详细教程

一 概述

说到Git和Github,前几天我们知道微软以75亿美元收购全球最大的代码托管和写作平台GitHub,而GitHub是全球最大的代码仓库,很多开发人员都将代码存放在Github,许多开发者因为担心微软无法让 GitHub 在运营上保持开放和独立,将无数项目迁移到了 GitLab上,博主也担心微软是否会让GitHub按照以前一样运营,不管那么多,下面正式开始讲解Git:

说到Git,很多人会想到svn,svn是集中式的版本控制工具,相比Git,博主认为Git更强大,Git出自linux之父林纳斯之手,而Git又全面兼容linux,这对编程开发人员来说是非常爽的,下面我们看看版本控制工具应该具备的功能 :

1 协同修改,多人并行不悖的修改服务器端的同一个文件,数据备份。
2 不仅保存目录和文件的当前状态, 还能够保存每一个提交过的历史状态。
3 版本管理
4 在保存每一个版本的文件信息的时候要做到不保存重复数据, 以节约存储空间, 提高运行效率。 这方面 SVN 采用 的是增量式管理的方式, 而 Git 采取了文件系统快照的方式。
5 权限控制
6 对团队中参与开发的人员进行权限控制。
7 对团队外开发者贡献的代码进行审核——Git 独有。
8 历史记录
9 查看修改人、 修改时间、 修改内容、 日志信息。
10 将本地文件恢复到某一个历史状态。
11 分支管理
12 允许开发团队在工作过程中多条生产线同时推进任务, 进一步提高效率。

二 版本控制介绍

2.1 版本控制简介

工程设计领域中使用版本控制管理工程蓝图的设计过程。 在 IT 开发过程中也可以使用版本控制思想管理代码的版本迭代.

2.2 版本控制工具

1.集中式版本控制工具:CVS、 SVN、 VSS and so on集中式版本控制工具的模式主要是将代码专门放在一个服务器,如下:

Git和Github详细教程

2. 分布式版本控制工具:Git、 Mercurial、 Bazaar、 Darcs and so on分布式版本控制工具像Git支持分支管理,如下:

Git和Github详细教程

三 Git历史

3.1 Git发展史

Git和Github详细教程

3.2 Git官网

Git官网地址:https://git-scm.com/

3.3 Git优势

1 大部分操作在本地完成,不需要联网

2 完整性保证

3 尽可能添加数据而不是删除或修改数据

4 分支操作非常快捷流畅

5 与 Linux 命令全面兼容

3.4 Git的安装

这是我的百度网盘链接,里面有32位和64位安装包

链接:https://pan.baidu.com/s/16LHA-qajOw5h_EfP25LD7g 密码:jsfb

安装很简单,跟着提示点击过来就好了,有问题可以联系博主。

3.5 Git的结构

Git和Github详细教程

3.6 Git和代码托管中心

局域网环境 GitLab服务器

外网环境下 GitHub 码云

3.7 本地库和远程库

Git和Github详细教程

本地库是存在在个人本地的,而Github中创建的是远程库,本地库push/pull从远程库中上传代码或者拉取代码,而其他开发者可以直接clone到本地库,当然还有夸团队协作,其实差不多,fork一下就好了。

四 Git操作

4.1 本地库初始化

首先我在自己的工作区创建一个目录gitDev,专门用来存放gitDev这个项目,将gitDev比作我将要开发的项目。

mkdir gitDev,进入创建好的目录,pwd看下我的位置

Git和Github详细教程

ls -la 可以看到我现在只有2个隐藏的目录

Git和Github详细教程

下面我开始初始化: (git init)

Git和Github详细教程

ls -la查看,多了.git的隐藏文件,说明已经初始化成功了

Git和Github详细教程

4.2 设置签名

1 项目级别/仓库级别:仅在当前本地库范围内有效

Git和Github详细教程

Git和Github详细教程

git config user.name xxxx
git config user.email xxxx

这是设置当前库范围有效的

2 系统用户级别:登录当前操作系统的用户范围

git config --global user.name xxxx
git config --global user.email xxxx

3 级别优先级

就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名

如果只有系统用户级别的签名,就以系统用户级别的签名为准

二者都没有不允许

4.3 查看状态

Git和Github详细教程

查看工作区、暂存区状态

4.4 添加至缓存区

首先我建立一个文件,写入test内容

Git和Github详细教程

Git和Github详细教程

查看内容

Git和Github详细教程

这个时候git status查看下状态

Git和Github详细教程

这个时候提示我们使用git add命令添加到暂存区

Git和Github详细教程

再git status一下

Git和Github详细教程

提示我们 git rm 用来删除,我们git commit提交一下

Git和Github详细教程

再看看git status,发现没有需要提交的内容了

Git和Github详细教程

4.5 查看历史记录

刚刚我们提交了信息,加入想看到我提交的内容的话

1.git log: 很清楚的看到我刚刚提交的信息,master代码主分区

Git和Github详细教程

2.git log --pretty=oneline可以更清楚的看到我的提交记录

Git和Github详细教程

3.git reflog 也能查看日志记录

Git和Github详细教程

4.6 前进和后退(git reset --hard [局部索引值] )

我先多提交几次,让记录更加多

Git和Github详细教程

现在可以看到我的日志记录,我提交了4次,每次新加的内容就是后面的消息,现在这个版本的内容如下:

Git和Github详细教程

Git和Github详细教程

现在我要回到cc37538这个版本的记录的话:

Git和Github详细教程

可以看到,给我们的提示是Head已经在cc37538了,cat test.txt一下

Git和Github详细教程

可以看到回到了以前的状态。

Git和Github详细教程

现在可以看到HEAD指向cc37538了

当然还有其他方法进行回退,博主推荐大家使用这种方式。

只要提交到本地库的文件,都可以在历史版本中找回原来的信息

4.7 分支管理

1.分支可以理解多个功能同时推进,最后再合并

Git和Github详细教程

2.好处

同时并行推进多个功能开发,提高开发效率
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

3.创建分支(git branch [分支名])

Git和Github详细教程

首先我创建修复bug的分支hot_fix,git branch -v 查看下分支

Git和Github详细教程

git checkout hot_fix来切换分支

Git和Github详细教程

git branch -v 查看下分支,现在就切换到hot_fix分支了

Git和Github详细教程

在hot_fix分支,输入ll,在查看下之前的内容

Git和Github详细教程

Git和Github详细教程

其实hot_fix复制了一份master分支的内容

4.合并分支(git merge [ 有新内容分支名 ])

第一步:切换到接受修改的分支(被合并,增加新内容)上 gitcheckout [被合并分支名]
第二步:执行 merge 命令 git merge [有新内容分支名]

首先,我在hot_fix上修改test.txt文件,添加了new content内容

Git和Github详细教程

git commit到本地库

Git和Github详细教程

git checkout 到master分支

Git和Github详细教程

git merge hot_fix : 合并hot_fix 分支的内容

Git和Github详细教程

再查看下test.txt中的内容,已经将new content中的内容合并到mster中

Git和Github详细教程

5.解决冲突

团队开发的时候很有可能会发生冲突,如何解决冲突,如下:

首先查看下我在master分支

Git和Github详细教程

我修改了第4行的内容: edit by master

Git和Github详细教程

将内容保存到本地库中

Git和Github详细教程

切换到hot_fix分支

Git和Github详细教程

查看

Git和Github详细教程

同样修改test.txt中的第4行内容

Git和Github详细教程

提交到本地库中

Git和Github详细教程

现在我想把hot_fix分支的内容合并到master分支中

切换分支:

Git和Github详细教程

合并got_fix分支修改的内容

Git和Github详细教程

查看状态

Git和Github详细教程

打开test.txt文件后

Git和Github详细教程

修改内容后,如下,保存退出

Git和Github详细教程

添加到暂存区

Git和Github详细教程

查看状态

Git和Github详细教程

提交

Git和Github详细教程

查看合并后的内容

Git和Github详细教程

冲突的解决:

第一步:编辑文件,删除特殊符号
第二步:把文件修改到满意的程度,保存退出
第三步:git add [文件名]
第四步:git commit -m "日志信息"
注意:此时 commit 一定不能带具体文件名

五 Github

1.github

GitHub 首页就是注册页面:https://github.com/

Git和Github详细教程

2.在github中创建远程库

Git和Github详细教程

Git和Github详细教程

3.为远程库地址创建别名

Git和Github详细教程

git remote -v 查看当前所有远程地址别名

git remoteadd [别名] [远程地址]

Git和Github详细教程

Git和Github详细教程

4.将本地库内容推送到github中(git push origin master)

Git和Github详细教程

这个时候会弹出登陆框,输入账号密码

Git和Github详细教程

成功之后,会有如下提示信息:

Git和Github详细教程

5. 刷新github,可以看到提交上去的信息

Git和Github详细教程

进入test.txt文件,这个时候信息成功被push到github上了

Git和Github详细教程

6. 团队协同开发

我重新创建了一个目录zhangsan,假如团队中的zhangsan协同开发的话,我就去github上面把信息clone下来

Git和Github详细教程

这个时候对于zhangsan的话,创建目录不用进行任何的操作,直接

git clone https://github.com/liu*ithub/gitDev.git

Git和Github详细教程

ls -la 查看

Git和Github详细教程

Git和Github详细教程

Git和Github详细教程

可以发现从github上把信息给克隆下来了.

现在zhangsan修改了信息想要提交到github上面的话,可以看到新加了一条内容:my name is zhangsan

Git和Github详细教程

git push origin master 会弹出登录信息,我用另外一个新账号登陆

Git和Github详细教程

Git和Github详细教程

可以看到现在是拒绝让zhangsan这个账号push,因为zhangsan还没有被邀请到团队进行协同开发

Git和Github详细教程

登陆远程库创建者的github账号,如下

Git和Github详细教程

Git和Github详细教程

Git和Github详细教程

切换zhangsan的github账号,输入邀请地址https://github.com/liu*ithub/gitDev/invitations

Git和Github详细教程

点击接受邀请即可。这个时候push到github上

Git和Github详细教程

可以看到已经成功上传

Git和Github详细教程

作者:刘信坚

链接:http://www.imooc.com/article/35753

来源:慕课网

本文原创发布于慕课网 ,转载请注明出处,谢谢合作


推荐阅读:

【官方】手记栏目认证作者招募,长期有效,随时报名!_慕课手记

想开发Angular项目,但是没有开发环境?使用Docker So Easy!

快速上手 Elasticsearch 的几个建议

编写高性能Javascript代码的若干建议

使用 Gitbook 打造你的电子书

上一篇:本地电脑无法ping通VMware虚拟机


下一篇:Ubuntu作为网关的组网实现