来源:

秦时明月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

Git和Github的学习相关推荐

  1. Git克隆Github项目学习笔记

    文章目录 前言 一.下载 Git 二.GitHub官网注册自己账号 三.使用SSH建立Git和GitHub之间的连接 四.在Pycharm工具中配置集成Git和GitHub 五.从GitHub上克隆项 ...

  2. 关于Git 和Github的学习

    Git 和Github的使用 现在git与github在各种操作系统中都有友好的交互式界面,很多编译器也支持git版本控制:Pycharm,Visual Studio等,但是命令行操作对开发者而言可能 ...

  3. github 和git_学习编码时如何学习Git和GitHub

    github 和git by Iago Rodrigues 通过Iago Rodrigues 学习编码时如何学习Git和GitHub (How you can learn Git and GitHub ...

  4. Git学习总结(18)——让你成为Git和GitHub大神的20个技巧

    Git不仅是编程世界最流行的分布式版本控制系统,而且你还可以用它查找,分享以及优化你的代码.接下来就来看看怎样让Git和GitHub更好地为你服务吧. 尽管现在网上有很多Git的初学者教程,而且Git ...

  5. Git和Github介绍,294页『Git与Github学习使用指南』分享

    1 前言 相信大家写代码的时候,心里肯定想找一个别人写好的,可以直接上手的代码,再做相应的修改和改进.那哪里有这些代码呢? 答案自然是Github了,那GitHub又是啥? GitHub是世界上最大的 ...

  6. Git、Github、Gitee、GitLab学习笔记

    文章目录 Git.Github.Gitee.GitLab学习笔记 前言 一.Git 1.Git概述 2.Git基本操作介绍 2.1 安装&卸载 2.2 启动 3.Git的基本使用 3.1 GI ...

  7. Git、GitHub、Gitee、GitLab的学习

    Git.GitHub.Gitee.GitLab的学习 本教程基于尚硅谷Git入门到精通全套教程(涵盖GitHub\Gitee码云\GitLab),哔哩哔哩链接:https://www.bilibili ...

  8. Git 与 GitHub 、GitLab 区别(学习笔记)

    目录 1 版本控制系统 1.1 Git介绍 1.2 版本控制系统类型 1.2.1 分布式版本控制工具 1.2.2 集中式版本控制工具 2 Git GitHub 与GitLab 的关系 2.1 Git ...

  9. 学习Git和Github,从这里开始

    一.简介 Git 是一个免费开源分布式版本控制系统,由于其占用空间小.性能快,优于其他SCM工具(SVN.CVS等),主要用于代码版本管理. GitHub 是基于 Git 的免费版本控制仓库(开源项目 ...

最新文章

  1. mac OS下显示.htaccess等隐藏文件
  2. poj 1329(求三角形外接圆)
  3. 2010考研全程学习规划简案【推荐】
  4. JDATA绝对语义识别挑战大赛-季军方案
  5. 不用去验血,对照这张表,就能知道自己缺啥!千万收藏好!
  6. c语言中 程序各步作用,c程序的上机执行过程_上机运行C程序的步骤与方法
  7. 机器人手眼标定都能搞不定?快戳,最好用的手眼标定库!!!
  8. 网易见外不能用?永久免费的软件送你 自动生成字幕,免费快速上字幕, 自动加字幕!自动加字幕!快读完成Pr的字幕制作srt字幕文件生成,AI智能语音生成字幕 视频字幕自动生成 语音转换字幕 极速上字幕
  9. DEDECMS验证码不正确及其不显示问题
  10. 雅虎邮箱pop服务器,使用Yahoo.com.cn的POP和SMTP
  11. Unity摄像机上下旋转镜头实现
  12. 常用的mysql函数及在TP中使用示例
  13. chemdraw如何改中文_如何修改ChemDraw的默认输出格式
  14. 前端flyUI的方法使用注意事项
  15. flutter 仿照智行app 首页
  16. Mc1.16forge官混教程/教补-#3 物品材质覆盖注意要点[分支1]
  17. Java实现蓝桥杯分金币
  18. 5. PHP 输出图像 imagegif 、imagejpeg 与 imagepng 函数
  19. 下载ZIP压缩包(压缩多个文件)
  20. ERLANG日期与时间

热门文章

  1. Exynos4412 内核移植(三)—— 内核启动过程分析
  2. source insight 解决自动缩进 和 TAB键=4个SPACE
  3. 微信小程序中base64转换成图片;uni-app小程序base64转图片;微信小程序base64文件转图片;微信小程序base64图片转图片
  4. VScode配置eslint保存自动格式化,eslint格式化去掉分号和双引号。vscode自动保存去掉分号和双引号;““
  5. 如何使用repo sync
  6. [Redux/Mobx] Redux怎样设置初始状态?
  7. Taro+react开发(38)注意请求接口的/
  8. 前端学习(3095):vue+element今日头条管理-回顾
  9. 前端学习(3083):vue+element今日头条管理-表单数据绑定
  10. 前端学习(3022):vue+element今日头条管理-首页layont布局