【实用】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)

及时掌握行业动态,欢迎加入几百人的后端技术交流群:


相关推荐

  • Flink 侧输出流使用

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

    导读:本篇文章讲解 Flink 侧输出流使用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    后端笔记 2023年5月14日
    0097
  • SSM工程中三种容器中取值方式

    如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。SSM工程中三种容器中取值方式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    后端笔记 2023年12月26日
    0038
  • 关联mysql失败_Server returns invalid timezone. Go to ‘Advanced’ tab and set ‘serverTimezon’

    导读:本篇文章讲解 关联mysql失败_Server returns invalid timezone. Go to ‘Advanced’ tab and set ‘serverTimezon’,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    2023年2月27日
    0032
  • Centos 源码安装Apache(经历磨难,突出重围)【附加自动化编译安装执行脚本】

    导读:本篇文章讲解 Centos 源码安装Apache(经历磨难,突出重围)【附加自动化编译安装执行脚本】,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    后端笔记 2023年2月27日
    0029
  • flink将数据写入redis

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

    导读:本篇文章讲解 flink将数据写入redis,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    后端笔记 2023年5月14日
    0066
  • 慕课5、服务发现-Nacos

    人生之路不会是一帆风顺的,我们会遇上顺境,也会遇上逆境,在所有成功路上折磨你的,背后都隐藏着激励你奋发向上的动机,人生没有如果,只有后果与结果,成熟,就是用微笑来面对一切小事。

    导读:本篇文章讲解 慕课5、服务发现-Nacos,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    后端笔记 2023年3月8日
    0036
  • 包装类

    不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。包装类,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    后端笔记 2023年12月11日
    0037
  • 搭建一个Vue项目

    书读的越多而不加思考,你就会觉得你知道得很多;而当你读书而思考得越多的时候,你就会越清楚地看到,你知道得很少。

    导读:本篇文章讲解 搭建一个Vue项目,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    2023年3月4日
    0045
  • python内置函数bytes()用法详解

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

    导读:本篇文章讲解 python内置函数bytes()用法详解,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    后端笔记 2023年5月10日
    0083
  • Java基础-正则表达式

    如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。Java基础-正则表达式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    后端笔记 2023年12月26日
    0035

发表回复

登录后才能评论