这篇文章中,一些简单的,大家都知道的git 命令我就不再赘述,我只写出来最近在项目中常用到的一些命令。这些命令可以帮助我更好的开发。
git stash
请大家设想下面的场景,你的本地有两个分支,develop,fix分支,你正在develop分支上写一些需求,但是还没有写好,突然来了一个很紧急的bug,这个bug需要你切换到fix分支进行修改。此时你会怎样?是把未开发完毕的需求commit吗?还是直接变更分支?直接commit会导致本地的提交非常的乱。直接变更分支,那你未开发完毕的代码可就离你而去了……
你有更好的选择。git stash 可以帮助你先将没开发完毕的需求放到暂存区中,允许你切换到其他分支修改完毕后,切回原先的分支并恢复。这样你就可以重新开发了。
使用:
1.git stash
保存当前工作进度,会把暂存区和工作区的改动保存起来。执行完这个命令后,在运行git status
命令,就会发现当前是一个干净的工作区,没有任何改动。使用git stash save 'message...'
可以添加一些注释
2.git stash list
显示保存进度的列表。也就意味着,git stash
命令可以多次执行。
3.git stash pop [–index] [stash]
git stash pop 恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。
git stash pop --index 恢复最新的进度到工作区和暂存区。(尝试将原来暂存区的改动还恢复到暂存区)
git stash pop stash@{1}恢复指定的进度到工作区。stash_id是通过git stash list命令得到的
通过git stash pop命令恢复进度后,会删除当前进度。
4.git stash apply [-index] [stash_id]
通过git stash apply命令恢复进度后,不会删除当前进度,其余和git stash pop 一样
5.git stash drop [stash_id]
删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度。
6.git stash clear
清除所有存储的进度
commit后再撤销commit
当你commit修改了一些代码后,提交到本地了。后来又发现有更好的解决办法,但是此时本地已经有一版commit了,为了保证工作树的清晰,尽量不要commit两次。那么此时如何撤回之前的commit
git reset --soft HEAD^
这样就成功撤销了commit,如果想要连着add也撤销的话,–soft改为–hard(删除工作空间的改动代码)。
命令详解:
HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1
如果进行两次的commit,想要都撤回,可以使用HEAD~2
–soft
不删除工作空间的改动代码 ,撤销commit,不撤销git add file
–hard
删除工作空间的改动代码,撤销commit且撤销add
add 后取消指定文件add
当我们不小心 git add . 将所有更新都提到仓库后,想撤销操作。
这时候可以用
git reset .
将所有add 上的东西全部取消提交,然后再提交指定文件
或者先用 git status 查看提交了哪些文件,然后 git reset + 指定文件 来撤回。
git cherry-pick
在项目中,往往我们会有很多个分支,当我们发现多个分支中存在同样的问题时,这时候我们就可以只在一个分支上进行修改,然后利用cherry-pick 命令将指定的新提交合入另一个分支上。
git cherry-pick 提交号
利用这个命令就可以实现将指定提交合入分支的操作了。