rebase:重设基础点#
将当前的branch
的基础点移动到目标分支。 这么做的好处是主干master
明确。
git rebase <目标分支>
不过rebase
之后 master 并没有跟随过去,需要再合并一下:
git checkout master
git merge <刚刚的分支>
这样 master 就和分支合并了。
刚刚的提交提错了,想要修改怎么办?#
文件修改好之后使用 --amend
,这会产生一个新的commit
并替换掉最后一个commit
git add 文件
git commit --amend -m 说明
错了的是倒数第二个 commit,不是最后一个 commit,还能修改吗?#
当然可以,这里可使用交互式rebase
, 参数:-i
git rebase -i HEAD^^
这里的^^
意思是后退几个commit
,数量为^
的数量,也可以写成~2
, 数字代表后退的数量。
回车之后,我们发现进入到了一个可编辑的页面,值得注意的是,上面的commit
排序是倒叙的,我们可以看到每个commit
前面有一个pick
,我们按i
进入编辑,把想要重新修改的 commit 前面的pick
改成edit
, 退出界面之后我们可以看到状态就是在当前的commit
上了,修改完成之后时候使用--amend
提交,成功之后我们可以通过git rebase --continue
来跳过不需要修改的commit
,整个过程就结束了。
diff:对比#
用来对比修改。
git diff //对比工作区和暂存区
git diff --staged // 对比暂存区和上一次提交
git diff HEAD // 对比工作区和上一次提交
想要暂存工作区?#
暂存并清空工作目录。
git stash
Warning
-git stash
并不会暂存你未追踪的文件,假如说你新建了一个文件,你还没有来得及add
就stash
,这个文件并不会存起来,想要把这些文件一起暂存使用-u
。
- 恢复文件请使用git stash pop
命令。
想要回滚 commit?#
reset
可以重置HEAD
和branch
的位置
git reset <分支名或SHA-1>
--mixed
默认,把工作区和暂存区全部保存为工作区--hard
:不保留工作区,你的工作区会被清空!!--soft
:保留工作区和暂存区