jinzhe

jinzhe

github
email

Git 进阶

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并不会暂存你未追踪的文件,假如说你新建了一个文件,你还没有来得及addstash,这个文件并不会存起来,想要把这些文件一起暂存使用-u
- 恢复文件请使用git stash pop命令。

想要回滚 commit?#

reset可以重置HEADbranch的位置

  git reset <分支名或SHA-1>
  • --mixed 默认,把工作区和暂存区全部保存为工作区
  • --hard:不保留工作区,你的工作区会被清空!!
  • --soft:保留工作区和暂存区
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。