Git

  • 介绍
  • Git和SVN的区别
  • Git安装
  • Git初始化
    • 设置用户签名
    • 初始化本地库
  • Git工作机制
  • 添加暂存区
    • vim编辑器
    • git add添加到暂存区
    • git status查看状态
    • git commit -m提交到本地库(历史区)
  • 版本穿梭
    • git reset --hard是直接回退到工作区
    • git log和git reflog
    • git reset --soft是回退到暂存区
    • git reset 和 git revert
  • 分支
    • q
    • 新建分支
    • 切换分支
    • 合并分支
    • 删除分支
  • 分支合并与冲突
  • 团队协作
    • 申请GitHub账号
    • 创建仓库
    • 提交到远程仓库
  • 团队协作与冲突
    • 不同文件
    • 相同文件
  • 团队协作的分支管理
    • 删除分支
  • 跨团队协作

b站地址:[https://www.bilibili.com/video/BV1cR4y1d7Wd?p=1&vd_source=1bdd66bea139a5dcaef252c4d4e83e6e]

介绍

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

  • 版本控制
    版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
  • 团队协作
    从单兵作战转换为团队开发

Git和SVN的区别


SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己的代码推送到中央服务器。集中式版本控制系统是必须联网才能工作。
Git是分布式版本控制系统,没用中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网,因为版本都在自己的电脑上,可以离线工作。

Git 与 SVN 区别点:

  1. Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
  2. Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
  3. Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
  4. Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
  5. Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

Git安装

网址:https://git-scm.com/downloads



一些协议,点next

安装路径,我选择了在D盘



选择开始菜单文件夹

选择一个编辑器,默认Vim

将来每次创建完Git,它要起一个分支的名字,主分支默认叫‘master’。每次只要将一个目录给Git来管理,Git就会把这个目录初始的这个分支的名字叫做master。也可以选下面的自定义一个名字。

第一个:只能通过右键的形式来使用Git
第二个:在例如vscode等的终端中也可以使用Git

一个协议,默认next

默认next

默认next。转换换行符。

打开的终端,第一个是Git自带的,第二个是windows自带的

这个是说将来从远程仓库拉取代码之后怎么处理,默认next。

Git的一个凭证管理器。将来在连接远端的服务器的时候,输入完第一次用户名密码之后,就不用再次输入了,凭证就帮你存下来了。next!

需不需要用这个缓存。next!

一些实验性的功能,这些功能可能会有一些未知的bug,默认不钩,Install安装。

Finish

只要在默认的目录下面右击,能出现这两个,就说明安装成功了。

git --version 可以查看版本号

Git初始化

设置用户签名

签名的作用就是用来标识用户,以区分不同的开发人员。这个和未来申请GitHub这个账号是没有关系的。这个邮箱名可以瞎写,只要符合邮箱格式就好了,但是建议就写自己平常用的邮箱。 --global全局设置,就是说以后不管在哪个目录打开Git都不用再设置一遍了。
Ctrl + / - 可以放大/缩小字体

git config --global user.email “自己设置的邮箱”
git config --global user.name “自己设置的用户名”


只要在C盘的用户下的你的电脑名字下的.gitconfig文件里打开能看到如下,就说明配置成功了。

初始化本地库

希望一个文件夹被Git管理的话,就要在这个文件夹下进行Git初始化
可以在文件夹下直接右击选Git Bash Here 就可以直接进入这个目录

也可以在这个终端里
cd 名字 进到要去的文件下面
cd .. 返回上一层目录

ls 能看到文件夹里的东西

将hello文件夹作为Git管理的授权文件夹

  • 执行git init 命令,出现.git文件夹。(这个文件夹是一个隐藏文件夹)
  • .git文件夹就是将来记录你所有的版本的。
  • git不光管理hello一个文件夹,包括所有的子文件夹和子文件都会被管理。


如果没有看到.git这个文件夹,可能是因为设置了 不显示隐藏的文件,按照下图打开即可。

ls -a 就能看到hello文件夹下所有的东西。

Git工作机制


托管平台

  • 局域网(内网)

    • gitlab
  • 公网(外网)
    • gitlab
    • github
    • gitee

添加暂存区

vim编辑器

在hello文件夹下右键,点击Git Bash Here,输入git init,成功创建.git文件夹,可以用vim 1.txt创建文件


第一次进来之后,按键盘的i键,变成INSERT模式,就能输入了。

输入完之后,按Esc键,并打出:wq 然后回车就能退出。
cat 1.txt 就能查看文件夹下的内容

git add添加到暂存区

git add 文件夹名字,就能把这个文件夹添加到暂存区 暂存区不能存放空文件
这个下面的警告是说,以及帮你自动转换了,因为Linux和windows的不一样有些地方

git status查看状态

输入git status可以查看状态。
文件提交到暂存区,只是复制一份到暂存区,工作区还是有文件的。


git rm --cached 1.txt 就把文件从暂存区删除了

如果要将工作区内的所有文件都提交到暂存区
只要输入git add .或者git add --all就可以了

git commit -m提交到本地库(历史区)

git commit -m "我是第一个版本" >>把暂存区的内容放到历史区,""里的内容就是备注,你干了些啥。
git log >>查看版本信息

如果说我修改了1.txt文件,要把它添加到历史区,添加了222222

版本穿梭


git reset --hard是直接回退到工作区

> git reset --hard HEAD^  回退到上一次提交的版本
> git reset --hard HEAD^^ 回退到上上次提交的版本
> 也可以用~来代替
> git reset --hard HEAD~2 回退到上上次提交的版本
> git reset --hard HEAD~3 回退到上上上次提交的版本

现在有四条内容,假设我要退回上一条333333

可以看到,工作区的内容也直接回退到了333333

git log和git reflog

git log 这个命令只能显示的是指针以及之前的操作记录。git reflog 能查看本地库所有的操作记录

git reset --soft是回退到暂存区

git reset --soft 工作区的版本不会消失

用处:
1.加入说这个注释555555写错了,要重新写一个注释。重新写个注释再来一个提交就很麻烦,所以可以用soft回退到上一个版本,这个版本是放到暂存区中的,再修改一下注释就好了。

2.假如说我在1.txt文件里的A功能已经完成了,还新增了一个B功能。开始2.txt的文件,当写的时候发现1.txt文件里的B功能又Bug,这个时候就可以:

  • 先回退到上一个版本,把B功能放在暂存区
  • 在工作区修改B功能的Bug,
  • 把B功能以及B功能修改的bug,一起提交到暂存区
  • 合并之后再提交到历史区,只生成一条记录

git reset 和 git revert


把在工作区的2.txt文件提交到暂存区,再提交到历史区(注释2.txt)

在2.txt文件里添加 一个新功能111111

把这个新功能也提交到历史区

git revert要比git reset 少一个^。如果是同样的操作的话。

git log 就能看到 新增了一个记录

2.txt里也没有了1111这个记录

分支




q

当出现:的时候,按q就可以了

新建分支

git branch 分支名新建list分支

假设2.txt完成

上传到历史区

git branch 查看分支

在工作区新建3.txt是list分支的内容

切换分支

git checkout 分支名 切换到指定的分支
回到master分支,工作区内list分支下的内容就不在了。说明切换分支的时候,不同的分支对应着不同的工作区

合并分支

在master下,执行 git merge list 就把list分支和master合并在了一起。说是合并,其实是将指针,指向了master和list,都指向了最新的。

删除分支

git branch -d list 删除list分支

分支合并与冲突

在主分支master下新建一个util.js文件
提交到了历史区
创建一个login分支

在login这个分支下,修改了util.js这个文件

在login分支下,提交until.js到历史区
切换回master主分支
login分支下的内容会消失,因为不属于这个分支

切换回主分支后,假设修改了util.js里的一个bug

将master主分支下修改的内容提交到历史区
切换回login分支,就没有主分支刚刚的内容了

切换到master主分支
合并login分支
合并失败,在vscode里打开util.js.txt文件

在记事本打开文件

都保留之后
把文件提交到暂存区
提交到历史区
可以看到master主分支下的内容是都在的

切换到login分支下的时候,还是原来的。
但是目的已经达到了:因为将来合并代码,还是要放到主分支上,主分支既有修复的bug,又有login合过来的代码

团队协作





申请GitHub账号

网址:https://github.com/

创建仓库


origin代替后面的名字,可以写别的名字

git remote -v 可以查看这个push的地址
git remote remove origin可以撤销这个origin这一步

提交到远程仓库

git push origin master 把主分支master,push到创建的仓库里


在util.js.txt里新增一条,添加到暂存区,添加到历史区并备注名字,push到仓库

git push -u origin master 这样就能默认,下次只要git push 就能推到仓库了
不建议在远程仓库修改,但是也能改

远程仓库改变了之后,本地仓库是不会变的。要把远程仓库的更新拉到本地仓库,在更新完之后再在本地仓库修改,不然会有冲突。
git pull origin master 就能把远程仓库的给拉取过来,本地库中就会有存在了.

假如说仓库和本地库同时修改了


提交本地库,同时修改了远程仓库的,把远程仓库的拉取过来就会有警告,自己选择。

然后再添加到暂存区,添加到历史区,放到远程仓库。

团队协作与冲突

网站视频:https://www.bilibili.com/video/BV1cR4y1d7Wd?p=14&vd_source=1bdd66bea139a5dcaef252c4d4e83e6e

不同文件

这个可以分享

假设有另一个人,他将上面的地址克隆到了自己的电脑。

现在有1和2两个人在团队协作,1将远程仓库里的内容克隆到了自己的电脑上,新增了一个文件A,push到了远程仓库。这个时候远程仓库就有了A。但是2的电脑里没有A。2这个时候也新增了一个文件B,想要push到远程仓库,这个时候会出问题,说你必须先把远程仓库的pull拉下来,然后再进行push。那就先拉去回来再push上去。因为修改的不是同个文件,所以不会遇到任何冲突问题。
这个可以邀请人,这样那个人就有了push的权限。

相同文件

假如说两个人都修改了同个文件,就会遇到冲突,手动选择一下就好了。

团队协作的分支管理

添加login分支

如果别人要拉去这个login,就用 git pull origin login 拉取下来,直接切换到login就能修改

修改之后就能push到远程仓库

也可以再创建一个分支

删除分支

删除远程的分支 git push origin :名字 .

跨团队协作

fork叉子叉到自己的仓库,再用 pull requests 告诉别人。
https://www.bilibili.com/video/BV1cR4y1d7Wd?p=16&spm_id_from=pageDriver&vd_source=1bdd66bea139a5dcaef252c4d4e83e6e

哔哩哔哩千峰教育Git教程笔记(安装、分支、协作、冲突、GitHub、gitee、vscode集成git)相关推荐

  1. Git详细用法:Git概述 安装 常用命令 分支操作 团队协作 、GitHub、idea集成Git、idea集成GitHub、Gitee 码云、GitLab

    0 课程介绍 说明: 在公司想要使用idea集成git: 首选需要下载安装Git(查看第2章) 之后在中设置用户签名(查看3.1) 然后在idea中集成Git(查看第7章) - 0.1 学习目标 第1 ...

  2. php服务器视频教程,从PHP基础到实战高手 高性能Linux服务器构建实战 千峰教育PHP全新版高级视频教程...

    从PHP基础到实战高手 高性能Linux服务器构建实战 千峰教育PHP全新版高级视频教程 非常厉害的一套PHP实战课程,系统的学习完成后可以从零基础的PHP新手, 成长为能独立完成高性能服务器部署的实 ...

  3. 网络工程师千峰教育学习总结第一天

    网络工程师千峰教育学习总结第一天 第一阶段:网络基础.交换路由技术.高级网络技术 第二阶段:Linux安全运维.项目综合实战 第三阶段:前端.数据库.后台代码安全.python安全应用开发.代码审计 ...

  4. 千峰HTML5+CSS3学习笔记

    千峰HTML5+CSS3学习笔记 文章目录 千峰HTML5+CSS3学习笔记 写在前面 1. 前言 2. HTML 3. CSS 3.1 选择器 3.2 CSS属性 4. 盒子模型 4.1 溢出属性 ...

  5. Git SSH Key 生成并添加到github/gitee步骤

    Git SSH Key 生成并添加到github/gitee步骤 在本地生成密钥 大家好,这里是坚果前端小课堂,欢迎大家关注我的公众号,"坚果前端" Git是分布式的代码管理工具, ...

  6. Git学习笔记:标签管理以及GItHub

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  7. Git学习笔记:分支管理3

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  8. Git学习笔记:分支管理(2)

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  9. VSCode集成Git

    VSCode集成Git流程 一,下载git并配置环境变量 1.从git官网下载一个git安装包,官网下载地址 git下载. 2.下载完成后,一路NEXT走下去,只需注意下面这几个页面的配置,按需勾选( ...

最新文章

  1. AlexeyAB DarkNet YOLOv3框架解析与应用实践(六)
  2. 聊聊接口优化的几个方法
  3. 今日头条告今日油条赔 200 万,各大公司表示不服
  4. 76. 最小覆盖子串
  5. Oracle中Null与空字符串''的区别
  6. 移动WEB的页面布局
  7. JavaScript算法(实例七)空瓶子换汽水问题
  8. Matplotlib 中文用户指南 2 安装
  9. 使用ViewModel模式简化WPF TreeView
  10. Firefox Javascript引擎变成单线程
  11. chrome无法拖拽离线安装CRX格式插件解决方法
  12. 【笔记】定积分的近似计算
  13. 开始菜单下的计算机怎么能看到盘符
  14. 达梦数据库DM7入门教程-安装
  15. java udp发16进制数据_如何通过接口强制发送UDP数据包?
  16. 移动光猫RAISECOM的配置方法
  17. win7浏览器主页修改不过来_Win7系统IE浏览器无法更改主页的具体解决方法
  18. 计算机资源管理器经常停止运行,解决win10资源管理器经常停止工作的方法
  19. 将大文本文件分割成多个小文件
  20. RGB颜色与颜色名称对照表

热门文章

  1. Ubuntu为网卡添加ip地址
  2. java之JVM学习全过程学习记录
  3. (增加虚拟机)安装lite自带的benchmark和使用方法
  4. 计算机网络化最主要的特点是,【2018年职称计算机考试Internet考前押题及答案2】 中级会计职称有用吗...
  5. 27行代码批量将PPT转成PDF,属实强大啊!
  6. 鲁迅美术学院考计算机几级,鲁迅美术学院考研难吗?一般要什么水平才可以进入?...
  7. kconfig常用语法,入门必看
  8. pickup 类的使用
  9. 【愚公系列】2021年12月 Python教学课程 01-全方位解读Python
  10. 测试你的大脑思维类型是“左脑型”还是“右脑型”