对Git的认识和常用命令和具体使用

1.Git是什么

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

什么是版本控制系统?

好比设计师从开始设计第一个版本的设计稿开始:

Demo => Demo1 => Demo2 => … =>Demo1001
=> Demo最终版本 => Demo最终确认版本!

但是改了这多设计师也不记得每个版本之间都改了些啥

如果能有一个软件,能每次记录文件之间的改动,并且还能协调多个用户编辑,所以就出现了Git

Git是分布式版本控制系统,那么他们就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因此版本都是在自己的电脑上,既然每个人的电脑都有一个完整的版本库,那么多个人如何协作呢,比如自己在电脑上,更改了文件A,其他人也在电脑上改了文件A,这时候,你们两之间只需要把各自的修改推送给对方,就可以互相看到对方的修改了


2.Git与Github的区别

Git简单的说其实就是一个软件,用于记录一个或若干个文件内变化,以便将来查询特定版本修订情况的软件

Github(https://www.github.com)是一个为用户提供Git服务的网站,就是一个可以存放代码的地方,当然可以放的不只是代码,Github除了提供管理Git的web界面外,还提供了订阅,关注,讨论组,在线编辑器等丰厚的功能

3.Git的安装

在这里插入图片描述


4.Git的使用

1. 本地仓库:

  • 1.1 工作流程
    在这里插入图片描述
    在这里插入图片描述

工作区写好的文件通过工作区转移到暂存区(相当于背包)如何一次性把暂存区的文件转移到Git仓库,为什么要有一个暂存区呢,因为不可能工作区的文件一次次的从工作区把文件直接运到Git仓库,而因该一次性全部运过去,减少了消耗嘛


  1. 1.2 本地仓库操作
    什么是仓库呢?仓库有名版本库,英文名是Repository,我们可以简单理解成是一个目录,用于存放代码的,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除等操作Git都等跟踪到。

    安装好后,首次使用需要先进行全局配置桌面空白地方右键,点击“Git Bash Here” 打开Git命令行窗口
    Git config -global user.name “用户名”
    Git config -global user.email “邮箱”

    在这里插入图片描述
    当我们需要Git去管理某个新项目/已经存在项目的时候,就需要创建仓库了,注意:创建仓库的时候使用的目录不一定要求是空目录,选择一个非空目录也是可以的。

    A.创建空目录

    mkdir 文件名 
    

    B.在命令行中进入项目目录

    cd 文件路径/文件名称
    

    C git文件夹初始化到选中的文件夹中

    git init
    

    在这里插入图片描述
    D Git常用指令操作
    查看当前状态:git status [非必要]
    添加到缓存区:git add 文件名

    说明:git add指令,可以添加一个文件,也可以同时添加多个文件。
    语法1:git add 文件名
    语法2:git add 文件名1 文件名2 文件名3 …
    语法3:git add . [添加当前目录到缓存区中]
    
    提交至版本库:git commit -m "注释内容"
    
    在后续对于文件(可以操作1个或多个)操作之后,重复使用 git add与git commit指令即可
    
  2. 版本回退
    版本回退分为两步骤进行操作:
    查看版本,确定需要返回的时刻点:
    指令:

    Git log	和 Git log --pretty=oneline
    

    效果如下
    在这里插入图片描述在这里插入图片描述
    回退操作指令:

    Git reset --hard 版本号
    

    如果,回到过去之后,要想再回来到之前最新的版本的时候,这需要使用指令,得到最新的commit id。

    指令:

     get reflog 
    

    在这里插入图片描述
    小结:
    i. 想要回到过去,必须先得到 commit id,然后通过 git reset -hard 进行回退
    ii. 想要回到未来,需要先使用 git reflog 查看历史记录,得到最新的commit id;
    iii.在写回退指令的时候 commit id可以不用写全,git自动识别,但是也不能写太少,至少需要写前4位字符


  1. 远程操作Github
    3.1. 两种常规使用方式
    基于http协议

    1. 创建空的目录Stop

    2. 使用clone指令克隆线上仓库到本地
      语法:git clone
      在这里插入图片描述
      在这里插入图片描述

    3. .在仓库上做对应的操作(提交暂存区,提交本地仓库,提交线上仓库,拉取线上仓库)
      提交到线上仓库指令:

      git push
      

      在这里插入图片描述
      在首次往线上仓库shop提交内容的时候出现了403的致命错误,原因是因为不是任何人都可以往我这儿线上仓库提交内容,必须需要鉴权

      需要在.git 里面 config里面进行修改
      在这里插入图片描述
      格式为:账号:密码@。
      如果看到如下则成功,可以看到github中文件已经增加
      在这里插入图片描述
      拉取线上仓库指令:

      git pull
      

      在这里插入图片描述
      在这里插入图片描述
      提醒:
      在每天工作的第一件事就是先 git pull 拉取线上最新的版本,每天下班前要做的是 git push 将本地代码提交到线上仓库中


    基于ssh协议

    该方式与前面的https方式相比,只是影响github对于用户的身份鉴权方式,对于git的具体操作(如提交本地,添加注释,提交远程等操作)没有任何影响。

    1. 生成公私钥对指令(需先自行安装OpenSSH)
      ssh-keygen -t rsa -C “注册邮箱”
      在这里插入图片描述
    2. 上传公钥文件内容(id_rsa.pub)
      在这里插入图片描述
    3. 继续克隆,完成http一样的操作
      在这里插入图片描述
      在这里插入图片描述

  1. 分支管理
    什么是分支?
    在这里插入图片描述
    在版本回退的时候,每次提交后都会有记录,Git把他们串成时间线,形成类似于时间轴的东西,这个时间轴就是一个分支,我们称之为master分支(主分支)

    分支相关指令:

    1.查看分支:git branch
    在这里插入图片描述
    2.创造分支: git branch 分支名
    在这里插入图片描述
    3.切换分支: git checkout 分支名
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    当我切换到master的时候

    在这里插入图片描述
    在这里插入图片描述
    发现并没有修改

    对于新分支可以使用git checkout -b 分支名 指令来切换分支 -b 表示创建并切换,相当于2个操作

    4.分支并和指令 git merge 分支名
    在这里插入图片描述
    当我合并dev的时候 ,发现文件就进行整合,已经有修改后的一行。
    在这里插入图片描述
    == 5. 删除分支 git branch -d 分支名==
    删除分支之前,先要退出到要删除的分支(不然删除不掉的)
    在这里插入图片描述

  2. 冲突的产生于解决
    比如,我下班后已经push代码到线上,走了,而我之后,有同事A在线上修改了代码,多加了一行
    在这里插入图片描述
    但是第二天,上班我本机代码,并不会显示同事修改的,但是我又在本机增加了一行。
    在这里插入图片描述
    当我第二天下班后,准备将我写的代码去push后,就会发现。
    在这里插入图片描述
    在这里插入图片描述
    就会提示我,先要我pull一下,得到数据再提交。

    【冲突解决的办法】

    先git pull
    在这里插入图片描述
    在这里插入图片描述
    打开冲突文件,解决冲突
    解决方法:需要和同事(谁先提交的)进行商量,看代码如何保留,将改好的文件再次提交即可

    在这里插入图片描述

5.忽略文件

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

忽略文件需要新建一个名为.gitignore的文件,该文件用于申明忽略文件或不忽略文件的规则,规则对当前目录及其子目录生效。

注意:该文件因为没有文件名,没办法直接在windows目录下直接创建,可以通过命令行GitBash来touch XXX 创建
在这里插入图片描述
常见规则写法有如下几种:

规则写法效果
/mtk过滤整个文件夹
*.zip过滤所有.zip文件
/mtk/do.c过滤某个具体文件
!index.phx不过滤具体某个文件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值