记录一些近期比较常用的git 命令
工作区(在编辑器时)-> 暂存区(git add后)-> 版本区(git commit后)
1、git reset
- --hard 回退到上一个版本,工作区暂存区都不会保留
- --soft 撤销commit回到暂存区
- --mixed 回到工作区,相当于撤销git commit 与git add
示例:git reset --hard HEAD^
指令后面需要加上版本号,HEAD^是指回退到上一个版本,或者可以通过git log查看以往的commit id
上面的指令仅仅是回退本地的代码,如果需要回退已经推到远程的,使用命令
git push origin HEAD --force 强制推到远程
Tip: 在自己的分支可以使用git reset回退代码。但在公共分支不要使用reset,reset是回退到以前的版本,把提交都撤销掉,会对别人的提交有影响。
在公共分支回退代码建议使用revert,回退的同时是新增一个提交。
示例:git revert + commit id,然后正常提交就可以了
2、git stash
- save 例:git stash save '暂存一段代码'
- list 查看当前暂存的列表。列表的编号为stash@{0}、stash@{1}
- show 展示具体的修改,可以加上暂存编号,如git stash show stash@{0}
- apply 不加编号的话就是默认从暂存区的第一个取出来,也可以加上编号 git stash apply stash@{1}
- pop 从暂存区取出的同时,把它从暂存区中删除
- clear 删除所有缓存的stash
还有一点需要注意的是,git stash缓存文件的前提是文件必须要在git版本中。所以新增的文件直接git stash是不会被缓存的,需要执行git add
3、git cherry-pick
这个命令主要是转移提交到另一个分支。详见http://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html
- git cherry-pick <hashA> <hashB>
示例:git cherry-pick 04e2b^..4d92f
用法:现有A,B分支,需要把B分支的04e2b、4d92f之间的提交转移到A,那就切换到A的分支,执行git cherry-pick 04e2b^..4d92f