git 撤销与回滚记录

1,872 阅读2分钟

合并中断后继续

git merge --continue 

获取最新commit id或者说sha的简短结果

git rev-parse HEAD
git rev-parse --short HEAD

git commit 之前

  • 未添加到暂存区的撤销即还没git add .

git st现象:

On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   aa.js

no changes added to commit (use "git add" and/or "git commit -a")

补救措施:

// 1、指定文件名  aa.js 是filename
git checkout -- aa.js
// 2、撤销所有
git checkout -- .  // or  git checkout .
  • 已经添加进暂存区的撤销即git add . 之后

git st现象:

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   aa.js

补救措施: 从暂存区撤销 aa.js 是filename

//  1、撤销指定文件
git reset HEAD aa.js
//  2、撤销当前所有暂存区
git reset HEAD

git commit 之后

git st现象:

On branch master
nothing to commit, working tree clean

撤销有两种 1、 git revert 2、 git reset

  • git revert

git revert 命令是撤销某次操作,并且这个操作的之前之后都会被保留。 1、用git log 取全部的唯一值。 2、git revert XXXXXXXXXX 。 xxx 得复制全 3、撤销前会进入到vim 的查看环境 q 退出即可。 4、然后推送到远程更新即可 (注意的是revert奇数次生效,偶数次又回到之前的修改状态)

git log
git revert 209b3a7a5c321330094b2419dd42e6919d309dc3 

revert 之后,如果你想再合并分支代码,就已经合不上了。所以比较大的出错,得用reset。 之后再合入开发分支。

通过git log 看到的commit ID 回滚是指回到本次含本次。

image.png

  • git reset 如果想回到某个版本,可以用reset 命令,这种覆盖是不可逆的,提交之后可能会操作提交记录没有了。
git reset --hard 209b3a7a5c321330094b2419dd42e6919d309dc3

可以用git log 查看,发现提交记录没有了 这个时候唯一的补救就是 git reflog 然后再reset 回去

stash 应用

  • git stash 备份当前工作区的内容,保存到git栈中,从最近的一次commit中读取相关内容(本地stash之后可以切分支等操作)。
  • git stash pop 从git栈中获取到最近一次stash进去的内容,恢复工作区的内容。获取之后,会删除栈中对应的stash。
  • git stash list 显示本地存了多少个shash。
  • git stash clear 清空(还是别用)

gitignore 不起作用的解决办法 Git 忽略提交 .gitignore

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

查看git 操作history

history

清理git 的log

在master 分支处
1、创建临时分支
git checkout --orphan tmp
2、添加并commit 信息
git add -A
git commit -m 'clean log info'
3、删除master 分支(不放心可以备份个)
git branch -D master
4、更名master & push
git branch -m master
git push -f origin master

已验~

参照