GIT操作随笔

首先我们在github创建了一个项目test,默认存在分支master,我们新建分支develop,本地用idea打开两个窗口,便于我们进行演示,两个窗口都checkout到develop分支,然后clone项目

1、我们演示reset和revert的区别

先解释一下:第一个图片是reset,一共是123三个提交,当我们使用git reset --hard HARD~1时,指针移动到2提交点,随之提交点3消失,此时远程分支还是在3提交点,所以远程分支比我们多了一个版本,所以此时要是推送到远程就必须使用 git push -f  进行强制推送。

第二个图片是revert,当想要回退到提交点2时,找到提交点2的commit_id(可在log->HARD里面找),然后git revert commit_2,此时本地会产生一个新的提交点,然后commit  push

下面解释一下reset的三个参数:soft  mixed  hard

演示一下:

如图,我在本地提交个00000,版本号version是e50f066,我们先看看此时git的状态,使用git status

如图可以看到,我们本地比远程多了一个版本,因为我只commit还没pushd到远程分支,所以git提示我们使用git push将本地push到远端

好了,此时我们使用:git reset --soft b67ca50

我们发现此时提交个00000没了,再看看此时git状态

看到了吧,他说我们有个test.txt可以提交,说明test.txt刚才提交的00000已经从本地版本库拿出来了,现在放在暂存区中;

那我们再看看:git reset --mixed b67ca50

同样我们发现提交个00000没了,但是此时git状态

文件时红色的,说明什么?是不是--mixed命令将test.txt从本地版本库拿出来,现在放在了工作区,也就是说他比soft多使用了git checkout --命令

最后我们看看:git reset --hard b67ca50

同样我们发现此时提交个00000没了,再看看此时git状态

看到没,工作区的00000也没了

所以这三个参数一个比一个狠

 

下面看看revert

在你电脑.git文件夹下找到log,打开HARD文件,找到上一个提交的id:b67ca50b9f59489e82684d2caa623157005006a2

然后使用git revert b67ca50b9f59489e82684d2caa623157005006a2

执行完之后00000的提交版本没有消失,此时看看git状态

看到没,然我们解决一下,然后add commit

此时产生了一个新的提交点

 

 

2、rebase和merge

rebase和merge都是用来合并分支,他俩之间的区别是什么?我们举个例子比较一下,我们在test-master目录提交了11111并push到远端分支

我们在另一个idea的test目录同一行提交222222

此时我们执行pull,肯定会产生冲突

解决完冲突我们提交上去,然后在test-master执行pull操作,22222被更新出来了,但我们看提交记录

提交记录分叉了,但如果我们使用rebase操作呢,即git pull --rebase origin develop

也是让我们解决冲突,解决完冲突提交上去,再在test-master执行pull操作

提交记录时一条直线没有分叉

所以这两个操作都可以用于解决冲突

 

rebase还可以整合提交记录:

合并多个commit为一个完整commit

当我们在本地仓库中提交了多次,在我们把本地提交push到公共仓库中之前,为了让提交记录更简洁明了,我们希望把如下分支B、C、D三个提交记录合并为一个完整的提交,然后再push到公共仓库。

现在我们多次提交几个数字,

我们使用rebase命令将这三次提交合并为1个提交

git rebase -i HEAD~3

上面未被注释的部分列出的是我们本次rebase操作包含的所有提交,下面注释部分是git为我们提供的命令说明。每一个commit id 前面的pick表示指令类型,git 为我们提供了以下几个命令:

  • pick:保留该commit(缩写:p)

  • reword:保留该commit,但我需要修改该commit的注释(缩写:r)

  • edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)

  • squash:将该commit和前一个commit合并(缩写:s)

  • fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)

  • exec:执行shell命令(缩写:x)

  • drop:我要丢弃该commit(缩写:d)

这相当于Linux的vi操作,所以我们可以修改内容

看到3次提交变成了一条提交

3、git fetch和git pull的区别

git pull 比git fetch多了meger操作

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
探索全栈前端技术的魅力:HTML+CSS+JS+JQ+Bootstrap网站源码深度解析 在这个数字化时代,构建一个既美观又功能强大的网站成为了许多开发者和企业追逐的目标。本份资源精心汇集了一套完整网站源码,融合了HTML的骨架搭建、CSS的视觉美化、JavaScript的交互逻辑、jQuery的高效操作以及Bootstrap的响应式设计,全方位揭秘了现代网页开发的精髓。 HTML,作为网页的基础,它构建了信息的框架;CSS则赋予网页生动的外观,让设计创意跃然屏上;JavaScript的加入,使网站拥有了灵动的交互体验;jQuery,作为JavaScript的强力辅助,简化了DOM操作与事件处理,让编码更为高效;而Bootstrap的融入,则确保了网站在不同设备上的完美呈现,响应式设计让访问无界限。 通过这份源码,你将: 学习如何高效组织HTML结构,提升页面加载速度与SEO友好度; 掌握CSS高级技巧,如Flexbox与Grid布局,打造适应各种屏幕的视觉盛宴; 理解JavaScript核心概念,动手实现动画、表单验证等动态效果; 利用jQuery插件快速增强用户体验,实现滑动效果、Ajax请求等; 深入Bootstrap框架,掌握移动优先的开发策略,响应式设计信手拈来。 无论是前端开发新手渴望系统学习,还是资深开发者寻求灵感与实用技巧,这份资源都是不可多得的宝藏。立即深入了解,开启你的全栈前端探索之旅,让每一个网页都成为技术与艺术的完美融合!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值