git 查漏补缺

start

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

基础的命令

1. 基本信息

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

2. 初始化以及状态

# 初始化 生成一个 .git文件夹
git init 

# 查看文件状态
git status

以极简的方式显示文件状态: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

4. 提交到本地仓库

git commit -m '第一次提交'

5. 分支操作

5.1 创建分支
git branch 分支名
5.2 查看分支
git branch -v
# or
git branch -a
5.3 切换分支
git checkout 分支名
5.4 合并分支
# 把分支a合并到当前所在分支
git merge 分支a

# 如果合并有冲突,需要手动搜索 >>>>>> 手动合并

6. 查看日志

# git reflog 可以查看所有操作记录,包括已删除记录,git log不能查看已删除记录
git reflog

git log
  • 将每条历史提交记录展示成一行:git log --onelinegit log --pretty=oneline

7. 回退版本

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

8. 管理远程仓库

# 查看所有关联的远程仓库信息
git remote -v

# 定义  <远程仓库别名> 替代 <远程仓库地址> ;远程仓库别名习惯用origin
git remote add  <远程仓库别名> <远程仓库地址>

# 查看关联的远程仓库的详细信息
git remote remove <远程仓库别名>

9. 推送

git push 别名 分支

10. 拉取

# 同步远程仓库上master分支的更新
git fetch origin master

# 拉取远程分支代码,再与本地分支合并
git pull 远程库地址别名 远程分支名
  • git fetch origin master:test 拉取远程的master代码到本地的test分支

11. 克隆

git clone 远程地址

# clone 会做如下操作 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

思考

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 ----------------

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

git config --global http.sslVerify true

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

参数有三种情况--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 需要回退的远程分支名
4.3 revert

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

git revert 需要撤销的commitId

# 可能会存在冲突 需要手动解决,然后重新 add commit,最后push即可

reset 和 revert的区别:

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

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

end

  • 加油!
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lazy_tomato

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值