Git和Github的学习

 

 

 

 

 

 

作者声明:本博客中所写的文章,都是博主自学过程的笔记,参考了很多的学习资料,学习资料和笔记会注明出处,所有的内容都以交流学习为主。有不正确的地方,欢迎批评指正。

本文学习视频是:https://www.bilibili.com/video/av24736323

Git和Github的学习

 

关于Git和Github的相关知识综述

1、版本控制

2、Git简介

3、Git命令行操作

4、Git图形化界面操作

5、Gitlab服务器环境搭建

1、 版本控制工具应该具备哪些功能

1.1、协同修改:多人并行不悖的修改服务器端的同一个文件。

1.2、数据备份:不仅保存目录和文件的当前状态,还能够保存每一个人提交过的历史状态。

1.3、版本管理:再保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,调高运行效率,这方面SVN采用的是增量式管理的方式,而Git采取了文件系统快照的 方式。

1.4、权限控制:对团队中参与开发的人员进行权限控制。对团队开发者贡献的代码进行审核——Git独有。

1.5、历史记录:查看修改人、修改时间、修改内存、日志信息。将本地文件恢复到某一个历史状态。

1.6、分支管理:循序开发团队在工作过程中多条生产线同事推进任务,进一步提高效率。

 2、版本控制介绍

2.1、版本控制

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

2.2版本控制工具

思想:版本控制

实现:版本控制工具

集中式版本控制工具:CVS、SVN、VSS...

分布式版本控制工具:Git、Mercurial、Bazaar、Darcs(避免单点故障)

3、Git简史

3.1Git发展历程(略)

3.2Git官网:https://git-scm.com

3.3Git的优势:

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

2)完整性保证

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

4)分值操作非常快捷流畅

5)与Linux命令全面兼容

3.4Git的安装过程(略)

3.5Git的结构

 

3.6Git和代码托管中心

代码托管中心的任务:维护远程库

1)局域网环境下:Gitlab服务

2)外网环境下:Github   码云

3.7本地库与远程库

团队内部协作

 

跨团队协作

 4 Git 命令操作

4.1本地库初始化

补充:在开始操作之前

Linux的操作命令:

ll          查看当前目录

ls -la       查看当前目录,带隐藏资源的

ls -l|less  分屏查看

cd Git/    进入到某一目录

mkdir WeChat    建立一个目录叫做WeChat

git init    git初始化命令

pwd     是print working directory 命令显示整个路径名

ll .git/     显示此目录中  .git目录下的文件有哪些 查看.git的目录

cd ~     家目录

1)命令: git add

2)效果:

 

3)注意:.git目录中存放的是本地库相关的子目录和文件,不要删除,也不要随意修改。

 4.2 设置签名

1)形式

用户名:

Email地址:goodMorning@qq.com

2)作用:区分不同开发人员的身份

3)辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系

4)命令

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

    git config user.name tom_pro

    git config user.email goodMorning@qq.com

    信息保存位置:   ./.git/config 文件

 

 

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

    git config --global user.name tom_glb

    git config --global user.email goodMorning_glb@qq.com

    信息保存位置:  ~/.gitconfig  文件

 

  级别优先级:

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

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

    二者都没有不允许

 4.3 Git版本控制的操作

本节详细内容:https://www.bilibili.com/video/av24736323/?p=12

git status

vim good.txt        新建一个txt文件

:wq            关闭文件

git add good.txt      将good.txt加入到暂存区

git rm --cached good.txt  将good.txt从暂存区里面移除

git commit good.txt    将good.txt提交

:set nu     显示行号

i                         进入编辑模式

cat good.txt       显示good.txt的内容

git reset HEAD good.txt           将good.txt改正没有暂存

git commit -m "My second" good.txt   常用的 不用进入vim编辑器

 

基本操作总结: 

状态查看     gitstatus               查看工作区、暂存区转台

添加操作    git add [file name]           将工作区的“新建/修改”添加到暂存区

提交操作   git commit -m "commit message" [file name] 将暂存区内容提交到本地库

再次回顾

查看历史记录

git log    最全内容

多屏显示控制方式:

空格向下翻页

b向上翻页

q退出

 

git log --pretty=oneline

git log --oneline

git reflog

 

 HEAD@{移动到当前版本需要多少步}

 

前进后退历史版本操作

基于索引值操作[推荐]

git reset --hard 索引值

 

使用^符号:只能后退到之前存在的版本

git reset --hard HEAD^    一个^表示后退一步,n个表示后退n步

使用~符号:只能后退到之前的版本

git reset --hard~3  表示后退3步

 reset命令三个参数对比

--soft    仅仅在本地库移动HEAD指针

--mixid     在本地库移动HEAD指针   重置暂存区

--hard    在本地库移动HEAD指针  重置暂存区   重置工作区

 

 

永久删除文件后怎么恢复

rm aaa.txt 删除文件

前提:删除前,文件存在时的状态提交到了本地库

操作:git reset --hard [指针位置]

    删除操作已经提交到本地库:指针位置指向历史记录

    删除操作尚未提交到本地库:指针位置使用HEAD

 

比较文件差异

git diff [文件名]      git diff aaa.txt      将工作区中的文件和暂存区进行比较

git diff[本地库中历史版本][文件名]   git diff HEAD aaa.txt

               git diff HEAD^ aaa.txt将工作区中的文件和本地库历史记录比较

不带文件名比较多个文件

 4.4分支管理

 什么是分支?

在版本控制过程中,使用多条线同时推进多个任务。

 

分支的好处:

同时并行推进多个功能开发,提高 开发效率

各个分支开发过程中,如果一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可。

 分支操作:

创建分支   git branch [分支名]

查看分支   git branch -v

切换分支  git checkout [分支名]

合并分支  第一步:切换到 接受修改的分支(被合并,增加新内容)上,git checkout [分支名]

      第二步:执行命令  git merge [有新内容的分支]

 分支冲突 

冲突表现

冲突解决

第一步:编辑文件,删除特殊符号

第二步:把文件修改到满意的程度,保存退出

第三步:git add [文件名]

第四步:git commit -m "日志信息"

     注意:此时commit一定不能带具体文件

5、Git基本原理

5.1哈希 

哈希是一个系列的加密算法,各个不同的哈希散发虽然加密强度不同,但是有以下几个共同点:

1)不敢输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。

2)哈希算法确定,输入数据确定,输出数据能够保证不变

3)哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大

 4)哈希算法不可以

Git底层采用的是 SHA-1 算法。

 5.2Git保存版本的机制

集中式版本控制工具的文件保存管理机制

 

Git的文件管理机制

 

 

Git文件管理机制细节

 Git的“提交对象”

提交对象及其父对象形成的链条

5.3Git分支管理机制

分支的创建

创建分支   git branch [分支名]

git branch hot_fix  新建一个分支 

分支的切换

 git checkout [分支名]

 

 

6 GitHub

6.1 账号信息

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

 cd ..  上一级目录

git remote -v

git remote add origin https://github.com/xzzxqinlihui/huashan.git  给远程地址起别名

 git push origin master   推送 别名 分支

克隆:

git clone https://github.com/xzzxqinlihui/huashan.git  克隆

git origin [远程地址]

 完整的把远程库下载到本地

创建origin远程地址别名

初始化本地库

 加入团队的操作:https://www.bilibili.com/video/av24736323/?p=38

 

拉取

pull就是fetch + merge

git fetch [远程库的别名][远程分支名]

git merge [远程库地址别名/远程分支名]

git pull origin master

 

 git fetch origin master 从远程库中抓取

 解决冲突

第一步:如果不是基于Github远程库最先版本所做的修改,不能推送,必须先拉取。

第二步 :拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。

 跨团队协作:https://www.bilibili.com/video/av24736323/?p=41

 

 

 

本地修改,然后推送到远程

pull request

 

 

 

 

对话

 

 

审核代码

合并代码

将远程库 拉取到 本地库

 SSH登录:https://www.bilibili.com/video/av24736323/?p=42

7.Eclipse操作 

eclipse中的git插件

 7.1工程初始化为本地库

操作流程: 工程=>右键=>Team=>Share Project=>Git=>Next

勾选对话框

 会出现如下图所示对话框

 

Finish

7.2Eclipse中忽略文件

概念:Eclipse待定文件

这些都是Eclipse为了管理我们创建的工程而维护的文件,和我们开发的代码没有直接关系,最好不要在Git中进行追踪,也就是把它们忽略。

.classpath文件

.project文件

.settings目录下所有文件

为什么要忽略Eclipse特定文件呢?

同一个团队中很难保证大家来使用相同的IDE工具,而IDE工具不同时,相关工程待定文件就有可能不同。如果这些文件加入版本控制,那么开发时很可能需要为了这些文件解决冲突。

 

 

 

 

 

 

 

 

 

7.4 Oxygen Eclipse 克隆工程操作

 import...导入

 

 

 

 

 

 

 

 

 

 

8.Git工作流

8.1概念

在项目开发过程中使用Git的方式

8.2分类

集中式工作流

像SVN一样,集中式工作流以中央仓库为项目所有修改的单点实体。所有修改都是提交到Master这个分支上。

这种方式与SVN的主要区别就是开发人员有本地库,Git很多特性并没有用到。

GitFlow工作流

GitFlow工作流通过为功能开发,发布准备和维护设立独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了非常必要的结构。

 

Forking工作流

Forking工作流是在GitFlow基础上,充分利用了Git的Fork和pull request的功能已达到代码审核的目的,更适合安全可靠的管理大团队的开发者,而且能接受不信任贡献者的提交。

8.3GitFlow工作流详解

分支种类

Git工作流:https://www.bilibili.com/video/av24736323/?p=54

实战

具体操作

创建分支

 命名

 

切换分支

远程的分支

点击

检出远程的新分支

 

切换回master

 

合并分支

 选择分支

合并结果

推送到远程

合并成功后,将master推送到远程

9 Gitlab服务器搭建过程

详细过程: https://www.bilibili.com/video/av24736323/?p=57

 

posted @ 2018-09-10 22:57  秦时明月NightTiger  阅读(242)  评论(0编辑  收藏  举报