文章目录
git指令有很多,常用的也就是那么几个,今天回顾一下几个准常用,很重要的几个指令。
1. 撤销暂存区内容
当我把新建的内容通过 git add .
加入暂存区之后,发现有一个文件并不是我想要加入进去的,应当把这个文件撤销加入暂存区,可以使用如下指令:
git reset [fileName]
如想撤销已经加入到暂存区的hello.txt文件,那么执行git reset hello.txt
,这个时候将会把hello.txt文件移出暂存区,相当于撤销了上面的add操作。这个时候hello.txt文件里的内容都还保存着。
如果不指定filename,那么将会把上面执行add操作添加到暂存区的所有文件都移出暂存区,即把HEAD恢复到上一次提交的状态。
git reset
这个相当于后面默认加了–soft,这样会保留更改。还有一种,是直接删除掉新加入的文件,即
git reset --hard
这个操作不但会把文件移出暂存区,还会删除掉当前文件。
2.修改commit comment
当我们做了一次commit之后,想要再修改comment,只要使用如下指令即可:
git commit --amend
这样就可以进入vim修改commit。
这样也可以直接更改
git commit --amend -m "new comments"
3. 合并分支
3.1 git rebase
git rebase最主要的作用是变基:将分支合并,还可以避免四边形的出现。https://git-scm.com/docs/git-rebase
git rebase master feature-A
3.2 git merge
把指定分支合并到当前分支:
git merge test
4. 撤销前3次commit指令
git reset --soft HEAD~3
5. git revert
当想要把前三次commit的内容,其中第二次的内容revert掉,保留第三次的内容,即
a - b - c master
改为只保留a和c的内容,则
先拿到b的commit id,然后直接revert内容
git revert 63c6cb7d8e7ff9c896c7f5a8ae0355bfb0304c14
这样就会删除掉b的内容更改,但是也所之前添加的b的commit不会被删除,同时会增加一个新的commit来说明加了新的revert操作。
a - b - c - d master
当然,如果删除的内容有冲突,需要修改冲突先。修改完冲突以后,和rebase操作类似,使用 --continue继续进行。
ps:这里不用自己添加comments,由系统自动生成Revert 的comment,如:
Revert "update 3.txt -- first"
This reverts commit b8d063d8d5c19ec1b14b1bce2ac5e45639727cae.
6. cherry pick
指令:
git cherry-pick <commitHash>
例如:
原状态
a - b - c - d Master
\
e - f - g Feature
在master分支上执行
git chery-pick f
则
a - b - c - d - f Master
\
e - f - g Feature
可以一次剪切多个commit。