【git】reset / revert / rebase

rebase

多个commit合并:rebase -i

  1. git rebase -i commit_id
  2. 将后续的commit_id前的字符改成f
  3. 保存commit 文件,则该commit后的所有commit都合成了一个commit

rebase其他分支

  1. 将“其他分支”更新到最新(git pull)
  2. 切换到当前分支,然后git rebase "其他分支名"

revert

主要作用是撤销某次commit的修改,会留下一个revert的commit记录

简单示例

git revert commit_id

reset

主要作用是回退到某次commit,该commit后的记录会全部被删除

简单示例

git reset --hard HEAD^ 回退到上个版本
git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
git reset --hard HEAD^^^ 回退到上上上个版本(同HEAD~3)
git reset --hard commit_id 退到/进到 指定commit的sha码

reset单个文件

git reset commitId needrevertfile
git checkout -- needrevertfile
git commit -m "revert old file"

详细用法

git reset [--soft || --hard || --mixed] HEAD [--filename]

  • --soft 不删除工作空间改动代码
  • --hard 删除工作空间改动代码
  • --mixed 不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
  • HEAD
    • HEAD 当前commit的版本(没有commit的不算);
    • HEAD~1 || HEAD^ 上一个版本提交的版本;
    • HEAD~2 || HEAD^^上两次提交;
    • 也可以填commit_id

强推

强推到远程:git push origin HEAD --force

posted @ 2022-12-27 10:24  山上有只羊  阅读(86)  评论(0)    收藏  举报