【实用】Git的使用

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 【实用】Git的使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

文章目录

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/.sshCreated directory '/c/Users/13600/.ssh'.Enter passphrase (empty for no passphrase):# 再次输入相同的密码短语(不设置就直接回车)Enter same passphrase again:# 您的身份已保存在/c/Users/13600/中。ssh/id_rsaYour identification has been saved in /c/Users/13600/.ssh/id_rsa# 您的公钥已保存在/c/Users/13600/中。ssh/id_rsa.pubYour 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 ~/.sshid_rsa 私钥  id_rsa.pub 公钥
  • 为仓库设置公钥

    $ cat ~/.ssh/id_rsa.pubssh-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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/143962.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!