Git和Github的学习

 

来源:

秦时明月NightTiger

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

转载于:https://www.cnblogs.com/LXL616/p/10666286.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411814.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在asp.net中做视频转换,将各种视频文件转换成.flv格式

首先,我们部署一下文件夹.在工程的目录下新建几个文件夹如下图:UpFiles文件夹是要保存你上传的文件,PlayFiles文件夹是用于你转换后保存的文件(用于网上播放) ImgFile文件夹是保存截取视频文件的图片,然后那…

Android实现支付宝AR功能,Android接入支付宝实现支付功能实例

我本来是想直接讲Android支付这一块的,包括支付宝,微信,其他第三方整合支付等,但是微信开放平台他对我的账号做了限制,所有我今天就先把重心放在支付宝的支付上,也算是写得尽可能详细些吧,毕竟是…

android系统的发展态势,2020年安卓手机发展的7个趋势,只有延伸,并无革命性的变化...

在2019年,国内的几家手机厂家都是有得有失,虽然华为在国内大杀四方,但是海外市场遇到了一些麻烦,OPPO和VIVO也开始走性价比路线了,但是国内的市场还是被华为打压的厉害,不过海外发展还可以,至于…

[导入]使用SqlCommand对象执行存储过程

表tbClass存放论坛分类 字段名 字段类型 允许空 说明 ClassID uniqueidentifier 否 GUID主键,默认值newid() ClassName Varchar(50) 否 分类名 表tbBoard存放论坛分类中的版块 字段名 字段类型 允许空 说明 BoardID uniqueidentifier 否 GUID主键…

鸿蒙系统开发资金,华为终于动手,将拿出超十亿资金,开发者们有福了

原标题:华为终于动手,将拿出超十亿资金,开发者们有福了3月份也是慢慢地要过完了,4月的到来,仿佛是一个讯号,毕竟鸿蒙即将上线,大家都在期待着这款华为国产的系统,究竟能有什么表现&a…

Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素-un

ylbtech-Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素1.返回顶部 1、Java 实例 - 查找数组中的重复元素 Java 实例 以下实例演示了如何在 java 中找到重复的元素: Main.java 文件 public class MainClass {public static void…

[导入]ServerVariables集合

APPL_PHYSICAL_PATH检索与元数据库路径相应的物理路径。AUTH_TYPE这是用户访问受保护的脚本时,服务器用于检验用户的验证方法。CERT_COOKIE客户端验证的唯一ID,以字符串方式返回。CERT_SERIALNUMBER用户验证的序列号字段。CERT_SERVER_ISSUER服务器验证的…

华为android9.0升级,华为官方更新消息:这几款手机9月5日分批推送安卓9.0系统升级...

原标题:华为官方更新消息:这几款手机9月5日分批推送安卓9.0系统升级随着手机技术的不断发展,不仅手机更新换代加快,就连手机系统也在快速更新,可能很多花粉刚刚升级了基于Android8.0的EMUI8.0系统,对于Andr…

python中strip、startswith、endswith

python中strip、startswith、endswith strip(rm)用来删除元素内的空白符: rm对应要删除空白符的元素,当rm为空(strip())时删除所有元素的空白符 startswith、endswith用来查找开头或结尾条件的元素 例子: 1 li ["alec", " ar…

android终端系统时间,安卓应用修改系统时间

前言通常,我们来获取系统时间来做一些事情,那么,如何设置系统时间呢?问题抛出来,解决方法也就应运而生了。解决方法命令行首先我想到的是手机root,然后命令行date -s 要设置的时间复制代码如果手机没 root …

android红米3调用相机,红米3有什么接口?红米3有HDMI接口吗?

小米红米手机3有什么接口小米红米手机3有3.5mm耳机接口,microUSB充电和数据接口(采用5V/2A标准充电头)。那么小米红米手机3有什么接口?小米红米手机3采用金属机身,其背面由4166颗星星成菱形排列,设计灵感来自夜空中的繁星。当光线游走在圆点…

第二十一天

唉,前一段时间Hotle不能上网了,真是郁闷。 来日本整整三个星期了,天天写文档,真是烦死了。 不过幸好我的客户是个大美女,不到三十,还没结婚呢,哈哈。前两天他们举行新年会的时候,还给…

SAP OData $batch processing

例として、1回の呼び出しで100個の新しい商品を作成したい場合、最も簡単な方法は、$ batch要求を使用して100個のPOST呼び出しすべてを単一のサービス呼び出しにまとめることです。 URIの末尾にsap-statistics trueオプションを追加すると、所要時間についての詳細が表示され…

html第一个子元素选择,css选中父元素下的第一个子元素(:first-child)

前言最近在项目中用到 :first-child 很容易的就想到了,嗯嗯。这不就是选择第一个元素吗?好像很好用,平时使用中也没有遇到什么问题,理所当然的就以为它只会选中父元素下的第一个元素,对孙元素和曾孙元素没有影响。事实…

登录按钮的美化

<input type"submit" value"注册"> input[typesubmit]{width: 60px;height: 30px;/*边框*/border: 2px solid #1B47A4;/*圆角*/border-radius: 10px;/*背景渐变*/background: -moz-linear-gradient(top, #2564EE, #225CD2);background: -webkit-line…

html表格背景图片格式,HTML表格标记教程(8):背景图像属性BACKGROUND

HTML表格标记教程(8):背景图像属性BACKGROUND互联网 发布时间&#xff1a;2008-10-17 18:56:21 作者&#xff1a;佚名 我要评论为表格设置背景图像&#xff0c;可以使用任何的GIF或者JPEG图片文件。基本语法语法解释定义背景图象时&#xff0c;写下图片文件的完整路径或…

Windows安装zookeeper 单机版

首先需要安装JdK&#xff0c;从Oracle的Java网站下载&#xff0c;安装很简单&#xff0c;就不再详述。 1、下载zookeeper&#xff0c; https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/ 2、&#xff08;单机模式&#xff09;单机安装非常简单&#xf…

html自定义滚动条不占位,如何实现滚动条在各浏览器中不占用布局

在一般浏览器中&#xff0c;当内容超出容器时&#xff0c;如果不是overflow:hidden&#xff0c;通常都会出现滚动条&#xff0c;由于滚动条并不是浮在布局内容之上&#xff0c;所以通常会带来两个问题&#xff1a;1&#xff0c;容器内部内容宽度固定&#xff0c;恰好撑满&#…

安装教程-VMware 12 安装 Windows 10 企业版

VMware 12 安装 Windows 10 企业版 1、实验描述 在虚拟机中&#xff0c;手动安装 Windows10 企业版操作系统&#xff0c;为一些实验提供平台&#xff0c;因此&#xff0c;有关系统激活问题不再演示。可自行百度&#xff0c;或者加入QQ群交流&#xff1a;647033350 2、实验环境 …