git版本控制

git基本概念

github基本概念

  • 仓库(Repository)
    用来存放项目代码,一个项目一个仓库,多个项目多个仓库

  • 收藏(Star)
    收藏项目,方便下次查看

  • 克隆项目(Fork)
    就是别人仓库中的代码完整的拷贝一份到自己的仓库中,并显示是从哪里拷贝来的
    该fork的项目是独立存在的
    在这里插入图片描述

  • 发起请求(Pull Request)
    从别人那fork一个项目,并对该项目进行更改以后,可以发起请求,原项目作者便能看到,如果觉得不错,则将他合并到自己的原仓库中。
    在这里插入图片描述

  • 关注(Watch)
    关注以后,该项目由任何的更新,会向你发送该通知提醒

  • 事物卡片(Issue)
    当发现他人代码bug,可以给他们提出一个issue,项目作者便可以看到并一个个进行修复

·

git介绍

git是目前世界上最先进的分布式版本控制系统

git与github

两者区别

git是一个分布式版本控制系统,简单的说其实就是一个软件,用于记录一个或若干个文件内容变化,以便将来查询特定版本修订情况的软件。
**
**是一个为用户提供git服务的网站,简单的说可以方代码的地方(不过可以放的当然不仅是代码),github出了提供管理git的web界面外,还提供了订阅,关注,讨论组,在心白鸡等丰富的功能,github被称之为全球最大的基友网站

git工作流程

  • git本地操作的三个区域

在这里插入图片描述

  • 工作流程

在这里插入图片描述

git使用

注册github

本地仓库操作

什么是仓库?仓库又名版本库,我们可以理解成是一个目录,用于存放代码,这个目录里面的所有文件都可以被git管理起来,每个文件的修改,删除等操作都被git跟踪到

1)安装好后首次使用需要进行全局配置

在这里插入图片描述
查看配置是否成功
$ git config --global user.name
$ git config --global user.email

2)创建仓库

当我们需要染ggit去管理某个新项目/已存在的项目的时候,就需要创建仓库。
注意:尽量避免使用包含中文的目录名
步骤

  • 切换目录
    指令:$ cd D:\GitRepository
  • 创建空目录
    指令:$ mkdir pro_git
  • 在命令行中进入项目目录
    指令:$ cd pro_git
  • git仓库初始化(让git知道,他需要来管理这个目录)
    指令:$ git init
    在这里插入图片描述
    会发现文件夹中多了一个.git的隐藏目录,这个目录时git所创建的,不能删除,也不能随意更改其中的内容
    在这里插入图片描述

3)git常用指定操作

查看当前状态:git status
在这里插入图片描述
添加到缓存区:git add 文件名
说明:git add指令,可以添加一个文件,也可以添加多个文件
语法1:git add 文件名
语法2: git add 文件名1 文件名2 文件名3…
语法2:git add . [添加当前目录到缓存区中]
示例:
在这里插入图片描述
提交到版本刻苦: git commit -m “注释内容”
说明:注释可以写中文
在这里插入图片描述

版本回退

版本回退分为两个步骤
1)查看版本,确定要回退的时间点
指令1: git log
在这里插入图片描述
指令2: git log --pretty=online(推荐使用)
在这里插入图片描述
2)回退操作
指令: git reset --hard 提交编号

案例:
在这里插入图片描述
问题:回到过去之后,要想再回到之前最新的版本的时候,则需要使用指令去查看历史操作,以得到最新的commit id
指令: git reflog可以查看未来的commid id
在这里插入图片描述
小结:

  • 要想回到过去,我们必须先要得到 commit id,然后通过git reset-- hard 进行回退
  • 想要回到未来,需要使用git reflog 进行历史操作查看,德奥最新的 commit it
  • 在写回退指令的时候commit id 可以不用写全,git自动识别,但是也不能写太少,至少需要写前4位字符

远程仓库

在github中创建一个仓库
注意:仓库名要求在当前账号下唯一
在这里插入图片描述

两种常规的使用方式

基于http协议

步骤:
1)创建空目录,名称为shop
2)使用clone指令克隆线上仓库到本地
语法: git clone 线上仓库地址
线上仓库地址
在这里插入图片描述
示例:
在这里插入图片描述
在这里插入图片描述
3)在仓库上做对应的操作(提交暂存区,提交到本地仓库,提交到线上仓库,拉取到线上仓库)

  • 提交到线上仓库的指令:git push
    在这里插入图片描述
    在这里插入图片描述
    可能会遇到的错误(但是我自己在操作的会后并没有遇到,直接弹出了一个github登录的框框,输入了用户名密码就成功了)
    在这里插入图片描述
    在首次往线上仓库提交内容的时候,出现了403的错误,原因是不是任何人都可以往线上仓库提交内容的,必须要鉴权
    解决方法:
    在.git文件夹下的config文件,对其进行修改
    原本的url
    url = https://github.com/1629210061/shop.git
    修改如下:
    url = https://用户名:密码@github.com/1629210061/shop.git
  • 拉取线上版本:git pull
    在这里插入图片描述
    成功拉取拉取新加入的文件
    在这里插入图片描述
基于ssh协议

该方式与前面https方式相比,只是影响github对于用户的身份鉴权方式,对于git的具体操作(如提交本地,提交远程等)没有任何影响
生成公私钥指令(需要自行安装OpenSSh):ssh-keygen -t rsa -C “注册邮箱”
步骤:
1)生成客户端公私钥文件
在这里插入图片描述
在这里插入图片描述
2)将公钥上传到github
在这里插入图片描述
3)执行后续先前的操作,指令同上

git的分支操作

在这里插入图片描述
在版本回退的章节里,每次提交后都会有记录,Git 把它们串成时间线,形成类似于时
间轴的东西,这个时间轴就是一个分支,我们称之为master分支。.
在开发的时候往往是团队协作,多人进行开发,因此光有一个分支是无法满足多人同时
开发的需求的,并且在分支上工作并不影响其他分支的正常使用,会更加安全,Git 鼓励开
发者使用分支去完成一些开发任务。

分支的相关指令

  • 查看分支:gti branch
    在当前分支前面会有一个*标记
    在这里插入图片描述
  • 创建分支:git branch 分支名
    在这里插入图片描述
  • 切换分支:git checkout 分支名
    在这里插入图片描述
  • 创建并切换分支:git checkout -b 分支名
  • 删除分支:git branch -d 分支名
    注意:要先退出准备删除的分支,才能进行该操作
    在这里插入图片描述
  • 合并分支:git merge 被合并的分支名
    在dev分支修改readme文件在这里插入图片描述
    切换到master,发现readme文件没有法伤改变,说明分支之间互不影响在这里插入图片描述
    合并分支,在要合并的分支上执行该操作
    在这里插入图片描述
    提交到远程仓库中
    在这里插入图片描述

冲突的产生与解决

问题发生的情景:a,b拉取了远程仓库中的版本,a进行修改后上传到了远程仓库,b进行修改项目,b要上传到远程仓库的时候就会发生版本冲突。

  • 情况一:a,b 修改了同一份文件的代码
    在这里插入图片描述
    在这里插入图片描述

  • 解决思路:错误消息提示你先执行git pull 命令
    在这里插入图片描述
    此时的readme文件,然后和小红进行商讨代码的保留问题,去除掉那些无用信息,重新提交
    在这里插入图片描述

  • 情况二:a,b没有修改同一个文件的代码
    只需要重新git pull,然后重新进行提交即可
    在这里插入图片描述

忽略文件

场景:在项目目录下哟荤多万年不变的文件目录,例如css,js,images等,或者还有一些目录即便有改动,我们也不想让其提交到远程仓库的文档,此时我们可以使用“忽略文件”机制来实现需求

忽略文件需要创建一个名为.gitignore的文件,该文件用于声明忽略文件或不忽略文件的规则,规则对当前目录及子目录生效。
注意:该文件因为没有文件名,没办法直接在windews目永下直接创建。可以通过命令行Git Bash来touch创建。
在这里插入图片描述
案例:
1)新建js文件上传到远程仓库
在这里插入图片描述
在这里插入图片描述
2)创建.gitignore文件,并写过滤js文件
在这里插入图片描述
3)在js中新增文件,并重新提交到远程残酷
在这里插入图片描述
会发现js文件夹并未更新,操作成功
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值