十四、Git使用教程

1.Git简介

Git官网
Git是一个免费的、开源的分布式版本控制系统

为什么需要版本控制:从个人开发过渡到团队协作
在这里插入图片描述

2.Git安装、配置

2.1 Ubuntu 18.04

  • 步骤1: 首先通过运行以下命令,确保您的系统和apt包列表完全更新:

    sudo apt-get update # 从服务器获取软件列表,并在本地保存为文件
    sudo apt-get upgrade # 本地安装软件与本地软件列表对比,如果本地安装版本低,会提示更新
    
  • 步骤2: 用git指令看看是否安装了Git

    git
    

    在这里插入图片描述

  • 步骤3: 如果没装,则输入下面的指令安装Git

    sudo apt-get install git
    
  • 步骤4: 装完以后,还可以用下面的指令,查看安装版本

    git --version
    

    在这里插入图片描述

  • 步骤5: 装成功之后,第一步就是设置用户名和邮箱,随便填即可。

    签名的作用只是区分不同操作者的身份,用户的签名信息在每一个版本的提交信息中能够看到,以此确定本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码

    这里设置的用户名和邮箱都是虚拟的,Git也不会去验证这个邮箱,与你将来登录GitHub(或其他代码托管中心)的账号没有任何关系

    Ubuntu直接打开终端即可配置,而Windows需要在Git Bash 客户端中输入指令进行配置

    git config --global user.name LinuxYao # 设置用户名为LinuxYao
    git config --global user.email LinuxEmail.com #设置邮箱为LinuxEmail.com
    git config --list #查看设置好的用户名和邮箱
    

    配置完成后,会在家目录下生成一个.gitconfig文件(是隐藏文件夹,需要按下Ctrl + H查看)
    在这里插入图片描述
    可以打开看一下,其实就是刚刚配置好的用户名和邮箱
    在这里插入图片描述

2.2 Windows 10

  • 步骤1:去官网下载安装包,双击安装
    在这里插入图片描述
    在这里插入图片描述

  • 选择VSCode作为Git的默认编辑器
    在这里插入图片描述

  • 选择只在Git bash的客户端中使用Git
    如果选择第二个会改你的环境变量,好处是可以在cmd中使用Git,但是一般不会这么操作
    在这里插入图片描述

  • 勾上符号链接文件
    在这里插入图片描述

  • 点击安装

  • 鼠标右键:选择Git GUI Here,不过一般没人用这个
    在这里插入图片描述

  • 鼠标右键:选择Git Bash Here,一般都用这个客户端
    在这里插入图片描述
    在这里插入图片描述

3. Git 基本操作

这里以Ubuntu系统为例,Windows同理,指令是完全相同的
只不过Ubuntu直接在终端中输入指令即可,而Windows需要到Git Bash 客户端中输入指令

3.1 初始化本地库

  • 首先我们要新建一个文件夹,作为项目的目录

    例如:这里我是在家目录下的Git-Space目录下,新建了一个名为git-demo文件夹,作为项目目录
    在这里插入图片描述

  • 右键在终端打开:进入git-demo这个项目目录

    现在git是管理不了这个目录的,因为没有这个目录的权限

    需要先对这个目录进行初始化本地库的操作

    git init
    

    在这里插入图片描述
    执行完初始化操作之后,会在git-demo目录下面生成一个.git目录(也是隐藏文件夹,需要按下Ctrl + H查看)
    在这里插入图片描述

    可以点开.git目录,查看一下里面的东西,看一下就行了,不要修改!!!!
    在这里插入图片描述

3.2 查看本地库状态

  • 初始化好本地库以后,就可以查看这个本地库状态,同理必须先进入git-demo这个项目目录,输入指令查看

    git status
    

    状态提示:处于 master 这个分支,而且是一个空的本地库,没有任何文件需要提交在这里插入图片描述

  • 现在我们可以在项目下,新建一个文本文件123.txt,在这个文件中输入10行hello git !并保存

    touch 123.txt
    sudo gedit 123.txt
    cat 123.txt #查看文件中的全部内容
    

    这些 Linux指令 在Windows的Git Bash 客户端下也是可以用的
    在这里插入图片描述
    现在我们的项目目录下已经有了一个文件,再次查看本地库状态:
    在这里插入图片描述
    在这里插入图片描述
    可以看到我们刚刚新建的123.txt文件名现在是红色的

    也就是说,这个123.txt文件虽然已经有了,但是目前只是存在于工作区,git从来没有追踪过这个文件!

  • 后面就需要对这个文件进行追踪,即添加到暂存区

3.3 将本地文件:添加到暂存区

  • 使用git add指令将本地文件添加到暂存区

    git add 123.txt
    

    注意:因为Linux系统中换行符是LF,而Windows系统中换行符是CRLF。所以如果你是在Windows下面使用这个指令,这个时候可能会提示warning,因为git会帮助识别我们正在使用的系统,并自动转换换行符,这个warning不用管

  • 已经将123.txt文件添加到暂存区了,再次查看本地库的状态:可以看到这个123.txt文件由红变绿了,说明这个文件已经被git追踪到了,但是目前123.txt文件只是存在于暂存区,暂存区里的文件是可以删掉的。
    在这里插入图片描述

  • 如果你不想让123.txt文件保存成一个历史版本,可以使用git rm --cached指令将这个文件从暂存区中删掉

    注意这个指令,只是将文件从暂存区中删除,并不会将其在工作区中删除

    也就是说123.txt文件还是老老实实存在于git-demo这个项目目录下(工作区)

    可以看到123.txt文件又变红了
    在这里插入图片描述

3.4 将暂存区的文件:提交到本地库

  • 将暂存区的文件提交到本地库,才能形成一个自己的历史版本

    # git commit -m "版本日志信息" 文件名
    git commit -m "my first commit" 123.txt
    

    可以看到提交成功,一个文件被改变,10行内容被插入(就是123.txt文件中的10行hello git !

    可以看到这次提交的版本号就是:a9b3876(前七位)
    在这里插入图片描述

  • 将暂存区的文件提交到本地库后,再次查看本地库的状态
    在这里插入图片描述

  • 可以用指令git reflog查看提交的版本信息:版本号(前七位) + 版本日志信息
    在这里插入图片描述

  • 可以用指令git log查看更加详细的版本信息:版本号(完整版) + 版本日志信息 + 提交者
    在这里插入图片描述

3.5 修改文件:模拟版本迭代

  • 修改工作区中的123.txt文件,并再次查看本地库的状态:将前五行改成hello word !
    sudo gedit 123.txt
    cat 123.txt #查看文件中的全部内容
    git status
    
    会发现123.txt文件又变红了,而且提示这个文件被修改了,且修改了之后还没有被添加到暂存区在这里插入图片描述
  • 重新追踪这个文件,将其添加到暂存区,让他重新变绿:
    git add 123.txt
    git status
    
    在这里插入图片描述
  • 重新提交该文件到本地库:
    # git commit -m "版本日志信息" 文件名
    git commit -m "my second commit" 123.txt
    
    可以看到提示:5行新增,5行删除(因为git没有办法直接提示修改了几行) 在这里插入图片描述
  • 重新查看版本信息:可以看到,现在已经有2个版本了
    在这里插入图片描述
  • 注意:不管修改多少次,提交多少次,在本地的工作区永远只有一个123.txt,且它的内容是最后一次修改的
    在这里插入图片描述

3.6 新老版本反复横跳

  • 先用git reflog查看每个版本的版本号

    可以看到现在的指针是指向第二个版本
    在这里插入图片描述

  • 如果我们想回到第一个历史版本,需要用到git reset指令

    # git reset --hard 要穿越回去的版本号:第一次提交的版本号
    git reset --hard a9b3876
    

    在这里插入图片描述
    再次查看版本信息,可以发现,指针指向了第一个历史版本
    在这里插入图片描述
    然后我们在打开工作区下的123.txt,发现其中的内容已经变回成第一个版本的内容了
    在这里插入图片描述

  • 同理,我们也可以在穿越回到最新的版本!

    # git reset --hard 要穿越回去的版本号:第二次提交的版本号
    git reset --hard 02a1902
    

    在这里插入图片描述

    git 切换版本,不是复制出一个一个副本文件,本质上是在本地库的内存中记录了很多个版本信息的日志
    然后通过移动head指针,来切换不同的历史版本

4. Git 高级操作:分支

分支的好处:

  1. 可以同时推进多个功能的开发,最后再合并

  2. 在每个分支的开发过程中,如果某个分支失败了,也不会影响其他分支,失败的分支删了重写即可

4.1 查看分支

  • 输入查看分支指令

    git branch -v
    

    可以看到当前只有一个主分支master
    在这里插入图片描述

4.2 创建分支

  • 输入创建分支指令:比如说发生了故障,要对代码紧急维修,可以创建名为my-hot-fix的分支
    # git branch 分支名
    git branch my-hot-fix
    
    然后再次查看分支,可以看到,除了master主分支,还有刚刚创建好的my-hot-fix分支,并且这个分支会自动将主分支master上的内容复制一份
    在这里插入图片描述

4.3 切换分支

  • 输入切换分支指令:
    # git checkout 分支名
    git checkout my-hot-fix
    
    然后再次查看分支,会发现*指向了我们要去的my-hot-fix分支
    在这里插入图片描述
    这个时候修改本地库中的123.txt文件,其实就是修改my-hot-fix分支中的文件
    比如,我们打开123.txt,在最后一行添加一句my-hot-fix: arrived !
    然后,我们再用git status指令查看本地库状态可以看到,我们目前处于my-hot-fix分支,并且检测到我们修改了123.txt,且这个文件还没有被上传到暂存区
    在这里插入图片描述
    # 上传到暂存区
    git add 123.txt
    # 提交到本地库,生成历史版本
    git commit -m  "my-hot-fix commit" 123.txt
    
    可以看到,目前指针指向的就是my-hot-fix分支,所以本地库的123.txt也就变成了my-hot-fix分支中的文件
    在这里插入图片描述
    然后我们再切换回master分支,本地库的123.txt就又变回了master主分支中的文件
    在这里插入图片描述

4.4 合并分支

  • 输入合并分支指令:将指定的分支,合并到当前分支上
    # git merge 分支名
    git merge my-hot-fix
    
    我们如果想让my-hot-fix分支与当前的master主分支合并
    首先要确保自己当前现在处于master主分支上,然后再输入指令即可
    发现提示:新增了一行就是我们刚刚在my-hot-fix分支上新增加的那句话,现在被添加过来了
    在这里插入图片描述
    这两份不同分支上的123.txt文件是没有冲突的,所有可以直接合并
    但是如果两个分支的同一个文件有两套完全不同的修改,Git无法替我们决定使用哪一个,此时必须认为决定新代码的内容

4.5 冲突合并

  • 为了产生冲突,这里我先修改一下master主分支上的123.txt文件,在倒数第二行后面新增加一句master test !
    在这里插入图片描述
    然后老样子,添加暂存区,提交本地库

    # 上传到暂存区
    git add 123.txt
    # 提交到本地库,生成历史版本
    git commit -m  "master  test commit" 123.txt
    
  • 然后切回my-hot-fix 分支,修改123.txt文件,在倒数第一行后面新增加一句my-hot-fix test !
    在这里插入图片描述
    然后老样子,添加暂存区,提交本地库

    # 上传到暂存区
    git add 123.txt
    # 提交到本地库,生成历史版本
    git commit -m "my-hot-fix test commit" 123.txt
    
  • 现在,我们已经对同一个文件都进行了修改,然后再次切回到master分支进行合并,可以看到发生了冲突

    # 切回到master主分支
    git checkout master
    
    # git merge 分支名
    git merge my-hot-fix
    

    在这里插入图片描述
    可以查看一下本地库的状态,提示我们,这两个文件都发生了修改,git不敢帮我们自动合并
    在这里插入图片描述
    需要我们手动合并,打开123.txt可以看到git帮我们自动标注了发生冲突的代码
    在这里插入图片描述

    然后我们手动修改,注意还要手动删掉那些特殊符号
    在这里插入图片描述
    注意1:这个时候,要手动将修改后的123.txt提交到暂存区,上传到本地库
    注意2:这个时候上传到本地库的指令,将不能带上文件名了
    在这里插入图片描述

  • 合并不会修改my-hot-fix 分支中的123.txt:可以切回去查看
    在这里插入图片描述

  • 合并的本质也是移动head指针

5. github基本教程

5.1 创建远程仓库

  • 登录github官网

  • 创建一个远程仓库

    在这里插入图片描述
    输入仓库名、选择权限:然后直接创建即可
    在这里插入图片描述

    可以看到生成了httpsssh两种不同协议的链接
    https:https://github.com/superyp2333/git-demo.git
    ssh:git@github.com:superyp2333/git-demo.git

    在这里插入图片描述
    在这里插入图片描述
    这两种链接,都是你这个远程仓库的链接,但是太长了,记不住怎么办?
    可以给远程库起一个别名,将来对远程库进行推送push和拉取fetch的时候,就可以用这个别名进行推送和拉取

  • 给远程库起一个别名:

    这里我先对https协议的链接起别名:https://github.com/superyp2333/git-demo.git

    一般为了方便,我们都会将远程库的别名本地库的项目目录名称一致,所以为这里都叫它git-demo

    # git remote add 远程库别名 远程库链接
    git remote add git-demo https://github.com/superyp2333/git-demo.git
    
    # 查看远程库的别名
    git remote -v
    

    在这里插入图片描述
    上面的提示的意思是:我们要对远程库进行推送push和拉取fetch操作,都可以用git-demo这个别名

5.2 推送本地库到远程库

  • 注意推送本地库到远程库的时候,推送的单位是分支,所以要先切换到想要推送的分支

    因为网络原因会经常失败,多试几次

    # 切换到想要推送的分支,例如master分支
    git checkout master 
    
    # 确认当前所处的分支
    git status
    
    #git push 远程库别名/远程库链接 分支,例如将master分支推送到刚刚创建好的远程库
    git push git-demo master
    

    在这里插入图片描述
    注意到自从21年8月13后不再支持用户名密码的方式验证了,需要创建个人访问令牌(personal access token)

  • 创建个人访问令牌(personal access token)

  1. 点击Settings
    在这里插入图片描述

  2. 点击左侧的Developer settings
    在这里插入图片描述

  3. 点击Personal access tokens(个人访问令牌)
    在这里插入图片描述

  4. 点击Generate new token
    在这里插入图片描述

  5. 设置token信息,我这里就设置了30天的有效期,选项全勾上就完事儿了
    在这里插入图片描述

    点击Generate token生成令牌
    在这里插入图片描述

  6. 得到生成的令牌、复制
    在这里插入图片描述

  • 利用用个人访问令牌(personal access token):将本地库推送到远程库
    指令还是一样的,需要填写用户名和密码,只不过密码用刚刚复制得到的那一串字母代替

    # 切换到想要推送的分支,例如master分支
    git checkout master 
    
    # 确认当前所处的分支
    git status
    
    #git push 远程库别名/远程库链接 分支,例如将master分支推送到刚刚创建好的远程库
    git push git-demo master
    

    在这里插入图片描述

    成功了!可以看到在我们的github仓库里面,已经有了master分支123.txt文件

    在这里插入图片描述
    点开这个文件,查看内容
    在这里插入图片描述
    我们可以点击右侧的笔,在远程库上,对这个文件进行修改
    在这里插入图片描述
    在最后一行加一段
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

5.3 拉取远程库到本地库

  • 在远程库上直接对文件进行了修改,导致本地库上的123.txt与远程库上的不一致了
    这个时候就可以将远程库上的123.txt拉取到本地库

    #git pull 远程库别名/远程库链接 分支,例如拉取到master分支
    git pull git-demo master
    

    在这里插入图片描述
    拉取操作:会自动将master主分支修改后的123.txt上传到本地库,不需要重新add和commit

5.4 克隆远程库到本地文件夹

  • 首先在本地随便找个位置新建一个文件夹,用于存放别人的远程库
    例如,这里我在家目录下的Git-Space目录下,新建了一个git-copy文件夹
    在这里插入图片描述
  • 然后右键,在终端打开,进入这个目录
    要clone别人的代码,首先需要拿到别人的远程库的链接(https或者ssh协议的都行)
    在这里插入图片描述
    然后直接输入命令,开始偷代码
    git clone https://github.com/superyp2333/git-demo.git
    
    在这里插入图片描述
    可以看到已经把别人的仓库,完全复制到本地了!
    在这里插入图片描述
    可以看到clone操作不仅会拉取代码,而且还自动初始化本地仓库创建别名(自动叫origin)
    在这里插入图片描述
    在这里插入图片描述

5.5 SSH免密登录

  • 有点麻烦,以后再学

6. gitee基本教程

码云官网
gitee码云是国内的代码托管中心
注册登录

6.1 创建远程库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
与github一样,可以看到生成了httpsssh两种不同协议的链接
https:https://gitee.com/superyp2333/git-demo.git
ssh:git@gitee.com:superyp2333/git-demo.git

6.2 复制github上的项目到码云

  • 新建仓库,这个时候可以不输入仓库名字
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值