Loading

Git的使用

目录

git介绍

git: 全称是分布式版本控制系统.
特点: 协同开发, 版本控制.

image

git工作流程

image

image

git分支管理

image

git的安装

image

image

git命令

  • 初始化仓库命令 git init 文件夹

    • 命令:
      • git init 文件夹
      • git init 当前路径下所有文件都被管理
    • 说明
      被管理的目录下会生成一个.git/缓存目录, 这个目录被删除就管理的记录就没有,
      所有的版本管理, 都记录在这个目录中.
      
  • 设置作者信息 git config --global xxx

    • 命令
      • git config --global user.email '邮箱'
      • git config --global user.name '名字'
    • 说明
      # git config --global user.email '邮箱'
      global配置全局变量
          会自动生成.gitconfig文件 c盘:/用户/用户名/.gitconfig
      
      # git config user.email '邮箱'
      项目内配置局部变量
          会在.git目录下自动生成config文件
      
      # 局部优先于全局
      
  • 查看状态 git status

    • 命令
      • git status
  • 代码提交到暂存区 git add 文件

    • 命令
      • git add 文件:将指定文件提交到暂存区
      • git add .:将当前目录下所有文件提到暂存区
  • 将暂存区的内容提交到版本库 git commit -m '提交说明'

    • 命令
      • git commit -m '提交说明':将暂存区的内容提交到版本库
  • 查看版本库的日志 git log

    • 命令
      • git log
    • 例子
      13600@Python MINGW64 /d/git/test (master)
      $ git log
      commit 393e9aaf074e2984f9269891436a7e2980898b30 (HEAD -> master)  # 版本号
      Author: python_21 <1360012768@qq.com>  # 作者
      Date:   Mon May 16 19:49:29 2022 +0800  # 更新时间
      
          提交a.txt   # 备注信息
      
  • 回滚到当前版本的最新记录 git checkout .

    • 命令
      • git checkout .:回滚到当前版本的最新记录
    • 说明

      这步是由工作区返回到修改前最初的样子

  • 切换到任意一个被管理版本状态 it reset --hard 版本号

    • 命令
      • it reset --hard 版本号
    • 说明

      版本号 可以是完整的可以值提供首部几个字符, 6个这样, 前面的字段重复就不好了.

  • 将暂存区所有的文件回滚到工作区 git reset HEAD .

    • 命令
      • git reset HEAD .:git reset HEAD 省略写法 git reset .
      • git reset HEAD 文件:将暂存区指定的文件回滚到工作区
    • 说明

      只更改了暂存区的状态!

忽略文件

忽略文件: 指定某些文件不被或文件夹不被git管理.

  • 语法
    语法:(空目录默认不被管理)
        # 注释
        写文件夹的名字表示该文件夹被忽略.
        写文件的名字表示该文件被忽略.
        目录/ 某个目录下的所有文件, 文件夹被忽略.
        /目录 当前目录下某个目录内所有文件, 文件夹被忽略.
        通配符:
        ? 匹配一个任意字符
        * 匹配0个或多个任意字符
        [x-y] 匹配x-y之间的数据
        [^] 逻辑非, 排除没有匹配到的所有数据
    
  • 配置文件

    在被管理目录的根路径下新建.gitignore 文件, 在这个文件中配置信息.

分支操作

  • 创建分支 git branch 分支名

    • 命令
      • git branch 分支名
    • eg
      13600@Python MINGW64 /d/git/test (master)
      $ git branch dev
      
  • 查看所有分支 git branch

    • 命令
      • git branch
    • eg
      13600@Python MINGW64 /d/git/test (master)
      $ git branch
        dev
      * master # 当前所在分支, 呈现绿色
      
  • 切换分支 git checkout 分支名

    • 命令
      • git checkout 分支名
    • eg
      13600@Python MINGW64 /d/git/test (master)
      $ git checkout dev
      # 切换到分支“dev”
      Switched to branch 'dev'
      D       a.txt
      
      13600@Python MINGW64 /d/git/test (dev)
      $ git branch
      * dev  # 当前所在分支, 呈现绿色
        master
      
  • 创建分支并切换到该分支 git checkout -b 分支名

    • 命令
      • git checkout -b 分支名
    • eg
      13600@Python MINGW64 /d/git/test (dev)
      $ git checkout -b prod
      Switched to a new branch 'prod'
      
      13600@Python MINGW64 /d/git/test (prod)
      $ git branch
        dev
        master
      * prod
      
  • 删除分支 git branch -d 分支名

    • 命令
      • git branch -d 分支名
    • eg
      13600@Python MINGW64 /d/git/test (prod)
      $ git branch -d dev
      # 删除分支
      Deleted branch dev (was a31cb1b).
      
  • 查看远程分支 git branch -a

    • 命令
      • git branch -a
  • 合并分支, 将其它分支合并到当前分支 git merge 分支名

    • 命令
      • git merge 分支名
    • 说明
      如果当前在dev分支, 想要把dev分支合并到master分支, 需要先切换到其他分支(基础分支), 在合并.
      

分支冲突

两个开发者修改了同一行代码, 后提交会报错, 后提交的人需要解决冲突.

image

远程仓库

  • 在gitee中新建一个luffy仓库

    image

    image

  • 远程连接仓库 git remote add origin https://gitee.com/xxxxx.git

  • 将主分支提交到远程仓库的origin(源目录-->master)中 git push -u origin "master"

    第一次提交需要添加仓库的账户密码

    image

    可以在控制面板中修改这个信息

    image

克隆/下拉/上传

克隆: git clone https地址
下拉: git pull 仓库分支 本地分支 / git feacth 仓库分支 本地分支(这个几乎不用)
上传: git push 仓库分支 本地分支
  • 从远程仓库中克隆到本地 git clone 仓库地址

    • 仓库地址http
      账号密码登录
    • 仓库地址ssh
  • 上传代码到远程仓库 git push origin master

    • 仓库代码没有被更新的情况下可以直接上传
    • 远程仓库代码被更新, 需要先下拉更新版本, 才能上传
      image

ssh连接

几个概念

  • bash64: 编码
  • md5: 不能解密, 被称为签名.

ssh连接使用非对称加密, 在终端使用命令生成一个公钥一个私钥.(存放在家目录下的.ssh)

  • 对称加密: 加密与解密使用同一套密码.
  • 非对称加密: 加密使用公钥, 解密使用私钥.

  • 查看本地是否存在私钥. ls ~/.ssh

    命令:ls ~/.ssh
  • 创建非对称加密的公钥与私钥 ssh-keygen -t rsa -C"Gitee的注册邮箱"

    • 命令
      ssh-keygen -t rsa -C"Gitee的注册邮箱"
    • eg
      # 创建非对称加密
      13600@Python MINGW64 ~/Desktop
      $ ssh-keygen -t rsa -C"xxxxxxx@qq.com"
      Generating public/private rsa key pair.
      
      # 输入保存密钥的文件(不设置就直接回车)
      Enter file in which to save the key (/c/Users/13600/.ssh/id_rsa):
      # 创建目录 /c/Users/13600/.ssh
      Created directory '/c/Users/13600/.ssh'.
      Enter passphrase (empty for no passphrase):
      # 再次输入相同的密码短语(不设置就直接回车)
      Enter same passphrase again:
      
      # 您的身份已保存在/c/Users/13600/中。ssh/id_rsa
      Your identification has been saved in /c/Users/13600/.ssh/id_rsa
      
      # 您的公钥已保存在/c/Users/13600/中。ssh/id_rsa.pub
      Your public key has been saved in /c/Users/13600/.ssh/id_rsa.pub
      
      # 关键指纹是:
      The key fingerprint is:
      SHA256:Bh9YCR5d4BNHcU+euzBAkZLcteuGrKAyv9y8xwXfYw0 1360012768@qq.com
      # 钥匙的随机特征是:
      The key's randomart image is:
      +---[RSA 3072]----+
      |      o++BB=o .  |
      |     . =*+o. = . |
      |      + +.. . +  |
      |       o.o .E. . |
      |        So .+o.  |
      |       . .oo+o.. |
      |      .. .o.o..  |
      |  o. + .o. .     |
      |   +=.+o.        |
      +----[SHA256]-----+
      
  • 再次查看本地私钥 ls ~/.ssh

    13600@Python MINGW64 ~/Desktop
    $ ls ~/.ssh
    id_rsa 私钥  id_rsa.pub 公钥
    
  • 为仓库设置公钥

    $ cat ~/.ssh/id_rsa.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCq7TeeqcKCK8U6zATpBLTaxUiiRfkn...
    
    image
  • 更换远程连接仓库链接 git remote set-url origin git@gitee.com:python_21/luffy.git

    • 命令
      git remote set-url origin git@gitee.com:python_21/luffy.git

    • 说明
      image

      image

  • 下拉代码测试 git clone git@gitee.com:python_21/luffy.git

    # 你确定要继续连接(是/否/[指纹])吗?对
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    连接之后再.ssh目录中生成一个文件, 记录通信, 如果删除, 下次连接还需要输入yes.
    
    image

Pycharm 连接git

  • 使用Pychrm打开本地项目的目录
    image

  • 在Pycharm的settings中配置 git.exe
    image

  • 新建文件
    image

  • 将文件添加到暂存区
    image

  • 将暂存区文件添提交到版本库
    image

    image

  • 选择 Commit and Puch 提交到远端
    image

    image

  • 提交/下拉
    image

  • 远端本地文件对比
    image

  • 版本日志
    image

  • git工具栏

    • git 控制
      image

      image

    • 从版本控制获取(克隆)
      image

      image

  • 新建分支
    image

    image

  • 切换分支
    image

  • Terminal中 使用命令操作
    image

  • 恢复到指定版本
    image

    image

    image

协同开发冲突

下拉代码后报错

<<< HEAD
自己需要提交的
=====
远程仓库的
>>>>> origin/master

image

image

更改并标记已解决, 在重新提交即可

image

线上合并分支

image

  • 主分支一般会被设置为保护分支, 不允许直接修改.
    image

  • 远端创建分支的两个方式:

    • 直接操作远程仓库界面新建分支
      image
    • 在本地新建分支, 提交到远端
      image
  • 新建Pull Request (拉取请求)
    image

    扁平化分支, 变基并合并 是对log的展示方式,即减少合并日志

    image

    image

分支合并冲突

image

  • 线上分支合并冲突

    线上合并有问题, 先在本地解决冲突在提交.

    image

线上版本回滚

  • 切换到主分支 git checkout master

    image
  • 切换版本 git reset --hard 8e05c5

    image
  • 查看版本记录 git loggit reflog

    • git log

      就是我们想要的结果, 第二个版本之后的都不要了, 新增一个xxx.txt的版本

    • git reflog

      显示历史版本记录(想要回退到第二个版本之后的使用这个查看版本号)

posted @ 2022-12-03 22:32  爱learn  阅读(74)  评论(0编辑  收藏  举报