本篇文章分享几个git的命令,本人在代码托管中,有时候需要用到的命令,虽然并不是常用命令,但是偶尔需要也是很方便的
1、cherry-pick (拣选)
- 简介:
当一个我们的活动分支(如qa),需要另一个分支(如dev)需要某个提交时,我们在活动分支(如qa)执行git cherry-pick xxx,拣选出(如dev上)这个提交所引入的修改 - 使用场景:
假如我们在dev分支开发一个功能,我们将功能提交到dev上了,但是后面需要将这个功能分到qa上去提测的时候,可在qa分支上cherry-pick拣选出改功能进行修改 -
注意事项:
1、一般拣选出来以后如果有冲突,如没有特殊情况采用传入的更改覆盖即可
2、拣选的时候,同一个文件,在这个拣选点先前的修改也会被拣选出来的,不同文件则不会
2、reset (重置)
2.1 git reset --hard XXX (硬重置)
- 简介:
有时候我们并不想保留特定提交引入的修改,后续也不需要访问他,可以就可直接重置到特定提交之前的状态
硬重置,重置以后,提交记录不保留 - 使用场景:
错误提交一个A功能,需要重置回去提交前的状态
合并错误的时候也可以通过reset还原 - 注意事项:
如果重置的是远程的提交,重置 完成以后,push需要加上-f,进行强制推送,例如: git push origin dev -f
2.1 git reset --soft XXX (软重置)
- 简介:
有时候我们并不想保留特定提交引入的修改,后续也不需要访问他,可以就可直接重置到特定提交之前的状态
软重置,重置以后,移至指定提交,但是修改记录不会移除 - 使用场景:
错误提交一个A功能,但是需要保留部分修改,需要重置回去提交前的修改状态,进行处理 - 注意事项:
如果重置的是远程的提交,重置 完成以后,push需要加上-f,进行强制推送,例如: git push origin dev -f
3、revert(撤销修改)
- 简介:
撤销指定提交的修改内容,通过对特定的提交执行还原操作,我们会创建一个包含已还原修改的新提交 - 使用场景:
错误提交一个A功能,后续要提交了多个功能其他的功能,这个时候需要撤销之前的功能A的修改 - 注意事项:
如果revert 的点,后续没有改同个文件的提交,直接有一个撤销之前的修改
如果revert 的点,后续存在有改同个文件的提交,则会撤销后续的修改,存在冲突需要解决
4、commit --amend (修改上一次提交的注释)
- 简介:
修改上一次提交的注释,git commit --amend,然后弹出编辑框修改注释内容 - 使用场景:
提交一个A功能,但是注释写错啦,又提交了甚至推送到远程啦,需要修改注释 - 注意事项:
如果重置的是远程的提交,重置 完成以后,push需要加上-f,进行强制推送,例如: git push origin dev -f
5、rebase (补充第4点修改指定提交的注释)
- 简介:
修改指定提交的注释,git rebase -i xxx,xxx是我们需要修改提交的上一次提交的header,进入编辑默认,修改提交注释的pick为reword,保存,再编辑修改新的注释内容,保存提交即可 - 使用场景:
提交一个A功能,但是注释写错啦,中间又有其他提交,又提交了甚至推送到远程啦,需要修改注释 - 注意事项:
如果重置的是远程的提交,重置 完成以后,push需要加上-f,进行强制推送,例如: git push origin dev -f
里面操作还有很多,可以去了解,但不是很推荐用这个,感觉不熟悉风险比较大