• git 查漏补缺


    start

    • 有些历史原因,导致我潜意识的就会觉得 git 很难;
    • 今天就再简单过一遍 git ,以及记录一下我暂时遇到的一些小问题;

    基础的命令

    1. 基本信息

    # 配置用户名
    git config --global user.name "tomato"
    # 配置用户邮箱
    git config --global user.email "6559210+lazy_tomato@user.noreply.gitee.com"
    
    • 1
    • 2
    • 3
    • 4
    • 翻译一下:git 配置 --全局 用户邮箱:'XXX'
    • 只想给当前项目设置用户名和邮箱,去掉 ``–global` 即可
    • 查看当前配置git config --list (windows)

    2. 初始化以及状态

    # 初始化 生成一个 .git文件夹
    git init 
    
    # 查看文件状态
    git status
    
    • 1
    • 2
    • 3
    • 4
    • 5

    以极简的方式显示文件状态:git status -s

    • A:本地新增的文件(服务器上没有)
    • C:文件的一个新拷贝
    • D:本地删除的文件(服务器上还在)
    • M:红色为修改过未被添加进暂存区的,绿色为已经添加进暂存区的
    • R:文件名被修改
    • T:文件的类型被修改
    • U:文件没有被合并(你需要完成合并才能进行提交)
    • X:未知状态(很可能是遇到gitbug了,你可以向git提交bug report)
    • ?:未被git进行管理,可以使用git add fileName把文件添加进来进行管理

    3. 暂存

    # 所有文件暂存
    git add .
    
    # 暂存 1.txt
    git add ./1.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4. 提交到本地仓库

    git commit -m '第一次提交'
    
    • 1

    5. 分支操作

    5.1 创建分支

    git branch 分支名
    
    • 1

    5.2 查看分支

    git branch -v
    # or
    git branch -a
    
    • 1
    • 2
    • 3

    5.3 切换分支

    git checkout 分支名
    
    • 1

    5.4 合并分支

    # 把分支a合并到当前所在分支
    git merge 分支a
    
    # 如果合并有冲突,需要手动搜索 >>>>>> 手动合并
    
    • 1
    • 2
    • 3
    • 4

    6. 查看日志

    # git reflog 可以查看所有操作记录,包括已删除记录,git log不能查看已删除记录
    git reflog
    
    git log
    
    • 1
    • 2
    • 3
    • 4
    • 将每条历史提交记录展示成一行:git log --onelinegit log --pretty=oneline

    7. 回退版本

    git reset [--soft | --mixed | --hard] [HEAD]
    
    • 1

    8. 管理远程仓库

    # 查看所有关联的远程仓库信息
    git remote -v
    
    # 定义  <远程仓库别名> 替代 <远程仓库地址> ;远程仓库别名习惯用origin
    git remote add  <远程仓库别名> <远程仓库地址>
    
    # 查看关联的远程仓库的详细信息
    git remote remove <远程仓库别名>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    9. 推送

    git push 别名 分支
    
    • 1

    10. 拉取

    # 同步远程仓库上master分支的更新
    git fetch origin master
    
    # 拉取远程分支代码,再与本地分支合并
    git pull 远程库地址别名 远程分支名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • git fetch origin master:test 拉取远程的master代码到本地的test分支

    11. 克隆

    git clone 远程地址
    
    # clone 会做如下操作 1、拉取代码。2、初始化本地仓库。3、创建别名
    
    • 1
    • 2
    • 3

    记录一下我遇到过的问题

    1.包含LFCRLFgit 警告。

    问题

    有时候我们本地git add . 会弹出一堆警告。虽然警告不影响使用,但是想搞清楚这个警告是为什么。

    在这里插入图片描述

    # 警告:在XXX-mobile/libs/icon-font/iconfont.svg中,LF将被CRLF取代。
    warning: LF will be replaced by CRLF in XXX-mobile/libs/icon-font/iconfont.svg.
    
    # 在您的工作目录中,该文件将具有其原始行结束符
    The file will have its original line endings in your working directory
    
    • 1
    • 2
    • 3
    • 4
    • 5

    思考

    CRLF是回车换行的意思,Carriage Return Line Feed,指的是 Windows 的换行符,同\r\n
    LF 是换行意思,Line Feed,指的是 Unix 的换行符,同\n

    git 有这么一个默认配置,core.autocrlf true,可以这样理解:是否自动将 LF 格式的回车转换成 CRLF 格式:true

    总结:

    1. 建议是: 设置编辑器默认换行为 LF。 关闭 git 自动转换的配置 core.autocrlf false
    2. 为了验证换行的问题,我在 linux 系统上通过命令cat -A 文件名,分别查看了两个系统文件的回车。
      • windows:^M$
      • linux:$
      • (在实验的过程中还看到了这么一个字符 ^I,是代表tab键缩进)

    2.TLS certificate verification has been disabled!

    warning: ----------------- SECURITY WARNING ----------------
    warning: | TLS certificate verification has been disabled! |
    warning: ---------------------------------------------------
    warning: HTTPS connections may not be secure. See https://aka.ms/gcmcore-tlsverify for more information.
    info: detecting host provider for 'https://gitee.com/'...
    warning: ----------------- SECURITY WARNING ----------------
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    大概意思就是 缺少了安全认证,解决办法:

    git config --global http.sslVerify true
    
    • 1

    git 配置: http.sslVerify
    在这里插入图片描述

    获取或推送HTTPS时,是否验证SSL证书。默认值为true。可以由GIT_SSL_NO_VERIFY环境变量重写。

    3.git branch -a 看不了全部的分支(包含远程分支)?

    需要使用 git fetch同步一下最新的所有远程信息 ;

    git fetch 将所有的远程分支, 所包含分支的最新commit-id, 将其记录到.git/FETCH_HEAD文件中

    4.不会回退分支(又或者说不敢回退分支)

    这种情况是有时候操作生产环境的代码,操作起来总会畏手畏脚。

    如果你也有这种情况,不拖延,现在就学+练习,实际操作一次理解了就不慌了

    4.1 仅本地 commit

    # 1. 查看当前分支的提交信息 以一行信息展示===> 用来获取到提交的唯一标识 commitId
    git log --oneline
    
    # 2. 重置 
    git reset --soft afc0f17
    
    • 1
    • 2
    • 3
    • 4
    • 5

    参数有三种情况--soft,–mixed,–hard;按照单词的翻译来看。分别是: 软的,混入,硬的;所以对应的回退效果不一样。

    1. --soft :最新的修改文件存在,存储在暂存区; (回退到某个版本,只回退了commit)
    2. --mixed:最新的修改文件存在,存储在工作区; (回退到某个版本,commit 和 add 都会回退)
    3. --hard最新的修改文件不存在,代码以你回退的版本为主。(彻底回退到某个版本,源码也会回到那个版本的状态)

    最新的修改文件:回退目标版本 之后的所有修改的内容

    4.2.已经push到远程分支了

    # 1. 备份本地分支(以防回滚出问题)
    git branch 备份分支名  
    
    # 2. 将备份分支提交到远程
    git push origin 备份分支名:备份远程分支名
    
    # 3. 先将本地仓库重置
    # 在进行下一步操作之前你需要:① git checkout 你需要回退的分支;② git log 查看你要回滚的版本号
    git reset --hard xxxxxxx  --回滚本地分支
    
    # 4.强制提交 (如果不强制提交,它会提示你先pull分支再做提交。)`-f` 是 `--force`的简写
    git push -f origin 需要回退的远程分支名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4.3 revert

    除了reset,还可以使用 revert来撤销一次提交达到回退代码的目的。

    git revert 需要撤销的commitId
    
    # 可能会存在冲突 需要手动解决,然后重新 add commit,最后push即可
    
    • 1
    • 2
    • 3

    reset 和 revert的区别:

    1. git revert 后会多出一条commit,这里可进行回撤操作

    2. git reset 直接把之前 commit 删掉,非 git reset --hard 的操作是不会删掉修改代码,如果远程已经有之前代码,需要强推 git push -f

    end

    • 加油!
  • 相关阅读:
    安科瑞APD高压开关柜局部放电监测装置的设计与应用
    图解系统之 内存管理 —— 摘自小林coding
    Vue----属性侦听器
    蓝桥杯KMP总结
    深入浅出Java多线程(九):synchronized与锁
    win10换ubuntu
    一图看懂CodeArts Inspector 三大特性,带你玩转漏洞管理服务
    Spring Boot 2.x系列【16】功能篇之国际化实现方案
    YOLOV8目标检测——最全最完整模型训练过程记录
    微服务项目:尚融宝(15)(前端平台:完善积分等级模块)
  • 原文地址:https://blog.csdn.net/wswq2505655377/article/details/126216135