【程序员小技巧】git的常用操作(图解)

日常中git的常见的技巧

用户的基本信息

git config [选项]

  • user.name 用户名

  • user.email 用户的邮箱

  • –global让我们整台机器的git都使用user.name user.email作为config

  • –l

  • –unset: 重置
    示例

git config --user.name “Jerry”
git config --user.email “1746702883@qq.com”
在这里插入图片描述
加上–global就是变成全局的

查看老版本和新版本git的差异

  • git diff 文件名

版本回退

git reset +参数

  • git reset --soft: 回退版本库版本
  • git reset --mixed(默认) : 回退版本库和暂存区
  • git reset --hard(一般不建议): 回退版本库,暂存区,工作区到上一个提交的版本
工作区暂存区版本库
xxxcode
xxxcodexxxcode
xxxcodexxxcodexxxcode

撤销我们的修改

  1. 情况一(我们写了再上一次提交后,又写了很多代码,但是写的差强人意):代码还在工作区,还没有add

解决方式:

  • git checkout – filename(注意这里的–很重要) 这条命令的作用是将filename回退到最近一次add或者commit的状态

  • 也可以手动手动修改,当然这是强烈不建议的

  1. 情况二:代码add后,还没有commit(在暂存区中)

解决方式:

  • git reset --hard: 将我们回退到当前的版本,将我们的工作区和暂存区回退到版本库的版本

  • 推荐) git reset --mixed + git checkout – filename : 能够更加符合预期的帮助我们进行回退
    比如说我想要回退file1.txt

git reset --mixed(可以) HEAD file1.txt  (将file1.txt回退到当前commit的版本)
git checkout -- file1.txt  (将file1.txt回退)
  1. 情况三:代码commit后,最新版本(没有进行push)

解决方法:

  • 暴力解法: git reset --hard HEAD^: 直接暴力将版本回退到上一个版本

  • 最优解: git reset --mixed HEAD^ + git checkout – filename : 可以更加定制化的进行回退的需求。
    这里可以类比上一个操作

如何删除版本库中的文件

  • rm工作区文件 + add + commit

  • git rm filename + commit: 但我觉得有点多此一举

git进行分支管理(git第一个杀手锏)

类似于开个分身同时进行学习,然后最后进行合并,类似于多线程操作,能够大大提高开发的效率。
master一般称作我们的主分支。
git branch可以直接看当前有哪些本地分支。master分支是默认的。*表示HEAD指向仓库的不同的分支,我们当前工作的分支。

创建分支

git branch dev
创建后的状态
在这里插入图片描述

切换分支

git checkout [分支名]
比如:git checkout dev
在这里插入图片描述

删除分支

git branch -d(delete) 分支的名称
在这里插入图片描述
注意: 在删除某个分支的时候,一定不能处在删除的那个分支,我们一般选择切换到主分支后进行删除

合并分支

首先切换到主分支,然后进行合并

git checkout master
git merge dev

合并过程中冲突的解决

两个分支操作同一个文件的时候,git merge会出现问题(这是git最常见的问题之一)

当出现两个分支冲突的时候,我们需要手动在合并进入的分支中处理,并且再进行一次提交(这一步非常重要)
在这里插入图片描述

fast_forward问题

什么事fast_forward问题
在这里插入图片描述
根据图形我们可以看出,如果merge分支改变后,master分支没有任何变化,在merge的时候就不会出现冲突,这个时候,我们的merge操作后git的日志会将这里的branch + merge操作记录成一次提交,也就是忽略了我们这里创建分支的记录,
这在我们以后项目溯源(也就项目出问题了,追责的时候是不合理的,因为找不到是谁的问题)

总结就是看不出来到底是merge进来的,还是master直接提交的

那么我们如何使用非fast_forward(nff)模式呢?

git提供了一个选项叫做–no-ff(表示不使用fast_forward模式)

总结: git merge --no-ff -m “通过nff进行merge” dev,这个操作就是为了我们在追查历史代码的时候能够找到问题,避免扯皮

日常进行分支管理的策略

  • dev:开发人员所在的分支,有bug,测开工程师进行测试。

  • master: 线上跑的代码,用户的代码。

创建标签

  • git tag:列出所有标签。

  • git tag <标签名>:在当前提交上创建标签。

  • git tag -a <标签名> -m “标签信息”:创建带注释的标签。

  • git push <远程仓库名> <标签名>:将标签推送到远程仓库。

  • git push <远程仓库名> --tags:将所有标签推送到远程仓库。

日志

  • 直接看日志: git log在这里插入图片描述

  • 优雅的看日志: git log --pretty=oneline在这里插入图片描述

  • 通过图形化:git log --graph
    在这里插入图片描述

如何将远程仓库和本地连接起来呢

  • HTTPS: 可以直接拷贝仓库中的
  • ssh: 平时我不建议,因为ssh需要你自己在本地创建.ssh公钥,然后添加到gitee上面,我不建议。

如何将本地分支推送到远程服务器

git branch -vv :可以直接看你本地的分支和远程的连接情况,如果没有连接,系统会给你提供连接的命令。
git push 【本地分支名】:【远程分支名】
如果已经连接成功了,也可以直接省略,直接git push即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值