git骚操作

1. 如果只想add修改了的文件咋办?

git add . 或者git add -A 都会把全部包括本地不需要的都一股脑添加上了, 也许你需要的是下面的命令: git ls-files --modified | xargs git add

2. 本地有修改又没有验证好或者干脆暂时不想提交,又或者临时有更紧急的bug等着修改,咋破?

这种情况其他可以有两种解决方案:

1. 你修改一个问题就本地拉一个分支,这样你就可以直接提交到本地的分支了;完事后验证OK切换到正确的分支再cherry-pick后推送到服务器等待Code review即可,这种要求你养成改一个bug或者做一个需求,本地都有拉一个对应的分支的好习惯,对于做大功能时很有用;  

2. 也可以直接将改动stash缓存到本地仓库,只要仓库在,你没有主动清除,它就在!stash和tag一样都是不区分分支的,对应的都是仓库,全局有效。

这里重点介绍小而美的第二种方法:

第一步,缓存你的改动:

git stash save "Commit msg of your stash"

第二步,查看你的缓存列表,看看是否成功:

git stash list

正常可以看见你自己已保存的缓存列表

第三步,此时你已经缓存了之前的修改到本地了。处理完其他的事,还想继续完成此项工作的话可以直接运用stash,弹出之前的修改:

git stash apply stash{xxx}(备注:xxx是数字,表示的是第几个缓存!比如可以运用git stash apply stash{2} )把美摄960FPS慢动作的未完善的提交给弹出来继续填,当然也可以直接删除某个stash, 运行git stash drop stash{xxx} 

3. 平常需要查找一个提交,只是大概记得名称又需要定位什么时候提交的,怎么定位呢?也许你可以在grreit上直接搜索关键词,肯定也可以找到的。但是我要说的是其他方法,比如我们想查看下48M超高清的相关提交:

gitlog |grep 48M

咦,为什么他的git log那么好看, 我的丑的一逼呢?! 别着急,我就是设置了一个alias,你也可以的。 alias gitlog alias gitlog='git log --graph --pretty=format:'\''%Cred%h%Creset -%C(yellow)%d%Creset (%cd%Creset) -%Cblue %an%Creset %Cgreen%s%Creset'\'' --date=short'

说到alias,其实自己还可以设置一大堆,简洁又好记!另外,gitlog -n 5  可以显示当前最新的5条提交,有时候git reset --hard时比commit id简便

4. 我已经提交了但是代码review的时候发现有点小问题,需要重新修改调整下咋办哦?
这里分两种情况:

1.只是在原有改动的基础上,新增修改或者调整小部分修改;这种情况最简单了,直接改动后重新git add XXX,然后git commit --amend提交就行了

2.多提交了某些不必要的其他东西,现在希望去掉;这种情况麻烦些,也有很多办法解决,比如可以git reset --soft [上一笔提交的commit id]回到上一笔提交的修改状态,此时你本地就是你之前的提交add状态,再使用git reset HEAD XXX 把需要去掉的文件reset到没有add状态,最后git checkout XXX后重新git commit然后填写一遍信息就行了。

5.提交遇到冲突了怎么办?

方法一:

  • git reset --hard FETCH_HEAD 回退
  • git clean -fd  要是有修改的先
  • git check .

方法二先git fetch在冲突文件中把冲突部分删除后继续操作:

  • git status
  • git add .
  • git cherry-pick --continue
  • git commit --amend
  • git push origin HEAD:refs/for/冲突分支

6.想打个文件补丁,也就是我们所说的patch文件怎么操作呢?

git diff --文件名1 > 文件名2.patch  将文件1打成补丁文件2

7.Git其他骚操作,常用:

git reset --hard HEAD~1  //回退前一笔提交

git checkout .  //清除所有修改

git clean -df   //彻底清除仓修改

git reset HEAD .  //可以把当前git add 的完全撤销

git reset HEAD XXXX/xxxx.c  //对某文件进行撤销

git reset --hard HEDA……(……表示倒V符号)  //倒退版本

git add +文件路径  //只提交文件夹下的修改

git add -A +文件路径   //提交文件夹下的所有修改,包括增加和删除

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

青春~飞鸟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值