总结一波很少人知道但是很好用的git命令
情形一: 你已经执行了git add .和git commit -m ‘xxx’,但是你突然发现你改的一些东西有点问题,但是你又不想放弃修改,这时候可以使用git reset HEAD^
情形二: 你在一个分支改东西改到一半,突然另一个分支的版本出现了特别紧急的问题,只能先放下手中一半的工作,去另一个分支,但是因为你本地有修改,切换分支就会报错, 你不想放弃当前的修改,也不想push写了一半的代码, 提供两种方法
- 当你没有新增文件,只在原来存在的文件中做了修改时,你可以用git stash,然后你的修改就被暂存起来了,此时你就可以切换分支了,等你改完问题切回这个分支,使用git stash pop就可以将你之前的修改拿回来了~如果你本地新增了文件,使用git stash时新增的文件不会被暂存
- 不管你本地有没有新增文件,使用git add .和和git commit -m ‘xxx’,然后切换到另一个分支,修改完问题后再切回来,使用git reset HEAD^,这时候你又可以继续写你开始没写完的代码啦
情形三: 你执行了git add .和git commit -m ‘xxx’,然后你忘了先pull代码,push的时候发现有了冲突,突然觉得脑袋好懵啊,我该怎么操作才能既pull云上最新的代码,首先使用git log查看提交的日志,比如显示是:
commit efd8df7985fdb62fc
Author: xxx
Date: xxx
fixed: xxx描述1
commit 1cc77eb74103612
Author: xxx
Date: xxx
fixed: xxx描述2
第一个是commit1,第二个是commit2,commit1是你刚提交的,commit2是你没有修改的时候拉的云上的代码,但是在你修改的期间别人可能已经提交了一个commit,这时候可以使用git reset --hard 1cc77eb74103612回到commit2,然后git pull拉云上最新的代码,这时候你发现你的修改不在了,使用git relog可以看到你的
efd8df7985fdb62fc dev) HEAD@{3}: commit: fixed: xxx描述1
1cc77eb74103612 dev) HEAD@{3}: commit: fixed: xxx描述2
然后使用git cherry-pick efd8df7985fdb62fc拿到你自己的改动就好了,但是可能会有冲突,剩下的就是解决冲突了