持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
身为一个程序员,git工具几乎是每天都会用到的工具。常用的命令,哪怕不知其原理,但是经常敲,闭着眼都能熟练使用了。
如果一个人开发,使用git基本不会出现什么问题,如果是团队多人多分支,那就可能会出现很多问题。我还遇到过团队多人共用一个分支推送代码的公司....那真是一言难尽了
本文会根据实际工作中遇到的情况进行逐步展开介绍。
版本回退
当合并了同事代码,项目无法运行,原来他把问题代码推送了上去!唉,只能退回到合并前版本。
版本回退命令不怎么常用(对于我个人而言...),随意查了一下。
发现两种命令
git reset --hard 版本号
git revert -n 版本号
注:要回退到哪个历史版本,可以去git仓库里查看,也可以使用git命令 git log
cimmit 后面跟着的一串字符就是版本号了,从开头截取大于10位即可,当然,全部截取更好(版本号最少不能少于6位哦)
这个版本号其实是唯一的,相当于commit_short_id,为区分每一次提交记录
那么这两种回退方式有什么区别呢
简单查看后,发现区别:
reset回退后,会删除回退版本到目前版本之间的所有历史记录,比如 1-->2-->3-->4-->5,当前在5,要回退到2,那采用本方式,回退后,将变成 1-->2;
而revert回退后会变成1-->2-->3-->4-->5-->2
想都不用想,肯定采用revert方式啊,起码有迹可查
查到的文章博主也这样推荐的,我想都没想,直接用了它。
成功版本回退,并没有结束!因为待同事完善代码后,我会重新git pull然后合并操作
合并后,以外发现我的代码丢失了,这还不是最严重的
没办法,只能再次回退,这时,我为了清除之前痕迹,采用了git reset回退方式
再次git push发现无法推送了,糟心了!
仔细一看,再细心一想,不难发现,回滚是本地回滚,远程代码还是之前的,而本地是回滚到历史版本,那现在的关系是:本地的版本 < 远程的!当推送代码比远程版本还低时,git就会阻止啊,本能反应,因为版本只会越来越高,不可能越来越低!
低版本推送到远程仓库,只有一个办法:强制推送 -f ---->
git push -f origin you_branch_name
注:you_branch_name 为你的分支名称
此时就完成了对远程仓库高版本代码的强制覆盖效果
如果我一开始使用reset回退,也许不会遇到那么多问题,但是不遇到那么多问题,也就没有这个文章了....
追查某几行代码是谁在什么时间提交的
有时候同事甩锅烂代码时,面对那几千行代码中,插入的几行烂代码!明知不是我写的,但是就是找不到谁是肇事者!
但是,有了git一切都有迹可查!
照妖镜可以让妖精现原形!什么时间是谁最后提交或者最后修改的!就找他就对了!
git blame -L 30,90 ./Code/ComeApp01/Page/Origin/ledgert.cshtml
命令解析:查找第30行到90行代码修改历史记录
路径可以写相对路径(git当前路径要跟这个相对路径能对的上...),也可以写绝对路径
这里就不放图出来了,可自行测试使用。
当然不写-L 30,90也可以,那就是查看文件全部了,如果代码很多,这个不太推荐,还是对症下药比较好
然后截图给领导看,甩他大嘴巴子[dog]
代码推送小技巧
其实网上教程很多,如何偷懒等等,这里不是,因为长时间使用什么git acp commit_content这种方式,时间一长,原来怎么写的都会不写了!
我要说的是下面三条命令可以放在一起写\
- git add .
- git commit -m commit_content
- git push
改成一句: git add . && git commit -m commit_content && git push
注:git push单独拿出来更好,因为先推送到本地仓库,然后再往远程推送,防止推送本地仓库时出现问题
emmm....暂时就想到那么多,后续有再补充吧,常用的不想再重复写了,就写一些实用,但不常用的