由于心急,提交代码的时候,commit 后,发现多提交了一个文件,然后第一想法是使用
rebase
来修改提交,然后我把那个多提交的文件,恢复成修改前的样子,然后打算在git add .
之后进行 rebase ,结果查看状态发现,它把我之前在编辑器里面忽略的一个文件也给加进来了…所以这个时候,我既多 commit 了, 又多 add 了…蜜汁尴尬…
经过查找资料,问题解决,又 get 到 git 的新技能。
1. git add 多了
git status
查看下 add 的文件git reset HEAD
如果后面什么都不跟,就是把上一次的 git add 全部撤销。
orgit reset HEAD xxx/xxx/xxx.js
,则撤销某个文件的add。这对add了一批文件后,又删除了其中的某个文件,想取消对这个文件的add的情况非常适用。
2. git add 多了之后,又 commit 了
- 先使用
git log --oneline
查看节点,找到这次 commit 的上一次 commit 记录。 - 然后
git reset commit_id
。退回到某一个提交的节点,代码还是现在的样子,只是那个节点之后的commit日志没有了,git add 的暂存区也清掉了,那次节点之后的所有改动都放在了当前工作区。即需要重新 git add 到暂存区,再commit。git reset
有三个参数可选:--hard
--soft
--mixed
,不跟参数就是默认的--mixed
。
3. 使用 git revert 还原已经提交的修改(这个没有验证过)
使用 git revert 后,此次操作之前和之后的 commit 和 history 都会保留,并且把这次撤销作为一次最新的提交。
git revert HEAD
撤销前一次 commitgit revert HEAD^
撤销前一次 commitgit revert commit_id
撤销指定的版本,撤销也会作为一次提交进行保存。
git revert 是提交一个新的版本,将需要 revert 的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。