git 操作

89 阅读2分钟
  1. git reset

    可以用来commit,但本质上不是撤销操作,而是移动HEAD并且带上所指向的分支,重置head及分支

    • git reset 'HEAD^' 撤销最近的一次提交

    • git reset 'HEAD^^' 或者 git reset HEAD~2 撤销最近的2次提交

    reset撤销操作不会丢失之前的提交,可以通过reset重置到原来的hash提交位置,如果找不到之前的提交,可以使用git reflog

    • git reflog

    • git reset 6d7cbfc(reset到之前的某次提交)

    git reset进阶

    • git reset 'HEAD^' --hard 尽量避免使用,会重置工作目录,丢失暂存
    • git reset 'HEAD^' --soft 保留工作目录,与原分支差异放到暂存区
    • git reset --mixed(默认) 保留工作目录,并且清空暂存区
  2. git rebase

    rebase变基,和merge同样都是进行合并操作的,将一个分支的内容都移至另一个分支上

    工作流程: 1. 首先找到两个分支的共同祖先 2.然后对比当前分支与祖先的历次提交,进行提取相应的修改,并保存为临时文件,将当前分支指向目标基底,最后将之前存为临时文件的修改依次应用

    效果实现,从图1变成图2的样子

    image.png 如上图,如果以master为基底,需要切换到branch1上,然后执行git rebase master image.png 然后再切回master, 执行

    • git checkout master
    • git merge branch
  3. git tag

    • 设置标签:
      • git tag v1.0 (默认在最新的commit上)
    • 查看标签
      • git tag
    • 给特定commit添加tag
      • git tag v0.1 1094adl
    • 添加带有说明的标签
      • git tag -a v0.1 -m '描述信息' 1094adb
    • 删除标签
      • git tag -d v0.1
  4. git 撤销

      1. 修改提交的信息
      • git commit --amend 进入vim模式,也可以合并两次的提交
      • git commit -m 'xxx' --amend 修正紧挨着的一次提交,与本次提交合并
    • 取消暂存
      • git reset HEAD a.txt (git add之后取消暂存)
    • 撤销对文件的修改
      • git checkout -- a.txt (add之前取消修改)
  5. 分支操作

    • 新建
      • git branch 分支名
    • 切换分支
      • git checkout 分支名
    • 在当前分支的基础上新建分支
      • git checkout -b 分支名
    • 删除
      • git branch -d 分支名
      • git branch -D 分支名 强制删除
  6. 取消合并

    • git merge --abort
  7. git reverse

    在Git中,revert是用来恢复一些修改的。git revert 命令是用来还原一些操作,是一个撤销类型的命令。但它不是一个传统的撤销命令,因为整个过程中不会删除任何数据;相反,它将创建一个具有相反改动的新提交,从而撤销掉指定的提交。本质上看,git revert是一个新的提交。