git revert 之后怎么撤销_Git真的操作简单吗?吐血
前言Git想必大家都不陌生,当下最流行的版本控制工具,都觉得它好用、不用连网、操作简单、分布式等等,听着像那么回事,可是,在正式开发环境中真有那么简单吗?进来看看NEWS敲黑板啦先说说git常见的操作指令吧,最熟悉的就是提交代码了 1.查看本地差异:git status 2.添加代码到暂存区:git add 代码 3.提交代码:git commit -m '描述'...
Git想必大家都不陌生,当下最流行的版本控制工具,都觉得它好用、不用连网、操作简单、分布式等等,听着像那么回事,可是,在正式开发环境中真有那么简单吗?进来看看
NEWS敲黑板啦先说说git常见的操作指令吧,最熟悉的就是提交代码了
1.查看本地差异:git status
2.添加代码到暂存区:git add 代码
3.提交代码:git commit -m '描述'
4.推送至远程分支:git push 远程分支
说的这几句,是个程序员都懂,关键是,真实开发环境要有这么简单那就狗年大吉了啊,小编今天就差点死在测试平台上,感觉时间一下午的时间都浪费在提交代码上很不值得,那剩下的几分钟,主要讲讲我今天在Git上踩过的坑以及自己对Git一点小总结吧
首先新建本地分支的事吧,新建分支,必须在本地master新建,这样新建的分支都是基于本地maser的代码,是不是觉得非常ok了,坑就坑在这里,你千万别把本地的master弄“脏”了,举个我今天手残的例子,你把本地修改过的代码不小心合并到了master,(本来是合并master到A,不小心将A合并到master了)这样一来你的本地master就被污染了,这是万万不行的,说白了,任何时候你都必须保证本地的master是正确的,可以不是最新,但必须是正确的,不是最新的可以拉(pull),要是被污染了,拉也拉不出来(pull),是不是很难受?这是为啥捏,因为这时候本地master比远程master超前一个版本,Git认为这就是你将要提交的代码,拉(pull)的时候必然不会覆盖本地master,也不会有任何错误信息提示给你,但是这样一来,你永远不会发现自己在一堆垃圾代码上迭代新功能。真要是遇见这种情况了怎么办:①reset自己的master②删除所有的代码,重新克隆(clone)
然后再说说提交代码的事吧,提交之前,务必啊,务必啊,先拉一下主干的代码,因为你永远不知道这几秒之内有几个损崽子在修改提交代码,修改与你无关的也就没事了,巧就巧在同时两人修改的是一个代码块,那肯定报冲突了啊,所以划重点,每次push之前一定要重新拉取主干代码,保证自己的代码是最新的并且和别人没有冲突,然后再推到(push)远程
再说说git stash这个东西吧,本意是:将当前分支的修改存放在暂缓去
使用场景:你本地分支A上修改了文件还不想commit,但是现在紧急需要和前端同学对接一下B分支,未提交还不能切换分支,那就只能将这些未提交的代码暂时挂起来:git stash (查看存储记录:stash list),这时候可以安安心心的去B分支工作了,工作了一半你又需要回到A分支,也可以将B中的零时文件 git stash挂起来,然后再回到A这个分支,git stash pop 就可将之前的文件pop出来,但是问题来了,你会发现这些文件里会有B分支上的内容,问啥捏?是这样的,git stash的时候会将这些记录放在栈中,栈是何方神圣?栈后进先出啊,git stash先出来的肯定是B中的内容啊,重点来了,git stash list查看存储记录,每条记录都有一个缓存序号,git stash pop +‘序号’,就OK了
这git看着简单,实则处处是坑,提交代码出问题了,那必须得回滚啊,再说说回滚操作吧
1.撤销add操作:git reset
2.撤销commit操作:git reset --soft
(保留源码,只回退commit信息到某个版本,不涉及index的回退,如果还需要提交,直接commit即可)
3.撤销commit和add操作:git reset --mixed
(会保留源码,只是将git commit和index信息回退到了某个版本 git reset默认是--mixed模式,git reset --mixed等价于git reset)
4.撤销commit和add操作,并将本地版本回退到上一版本:git reset –hard
(源码也会回退到某个版本,commit和index都会回退到某个版本)
5.reset和revert的用法:
a.reset: push前
b.revert: push后:git revert 回滚到置顶的版本
既然说到这里了,在分享几个小众而个人觉得有用的git指令
删除分支:git -d branch 分支
删除分支:git -D branch 分支(强制删除)
删除远程分支:git -D branch origin 分支
查看远程仓库:git remote -v
添加远程仓库:git remote add origin URL
更换远程仓库:git remote set -url origin URL
删除文件:rm test.txt
这只是在文件管理器中删除了文件,这样一来工作区和版本库就不一致了,git status会提示那些文件被删除了,方法:
①去版本库删除文件:git rm test.txt删掉,并且commit
②属于误删,回复即可:git checkout --test.txt(git checkout操作其实是用版本库替换工作区,所以比较常用,一般用于撤回本地操作)
☞ 华为收入超过阿里腾讯总和!等等,先把鸿蒙说清楚!
☞ 三次创业,三次跨界,这次凭十万行核心C代码登上 GitHub Top 1!
☞ 中国第一程序员,微软得不到他就要毁了他!
你点的每个“在看”,我都认真当成了喜欢开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)