删除文件
1、文件已提交到仓库:
1. git rm <file> // 从工作区和暂存区删除
2. git commit -m "" // 再次提交到仓库
2、只删除暂存区中的文件,本地不做修改:
git rm --cached <file>
3、恢复本地被误删除的文件:
git checkout -- <file> // 将暂存区的文件覆盖本地文件
删除 commit
1、git reset
git reset :回滚到某次提交。
git reset --soft :退回暂存区(不撤销git add file)。
git reset --hard:撤销commit和add,不做任何保留。
1、回滚代码
1. git log // 查询要回滚的 commit_id
2. git reset --hard commit_id // HEAD 就会指向此次的提交记录
3. git push origin HEAD --force // 强制推送到远端
2、误删恢复
回滚到错误 commit_id,或者误删了某次 commit 记录,可以通过下方代码恢复:
1、git relog // 复制要恢复操作的hash值
2、git reset --hard hash // 将hash换成要恢复的历史记录的 hash 值
3、注意:删除某次提交时最好不要用 git reset 回退远程库,因为之后其他人用 git pull 也会把自己的本地仓库回退到之前的版本,容易出现差错进而增加不必要的工作量。
2、git rebase
git rebase:两个分支不在一条线上,需要执行 merge 操作时使用该命令。
1、撤销提交
如果中间的某次 commit 需要删除,可以通过 git rebase 命令实现,方法如下:
git log
git rebase -i commit_id // 将 commit_id 替换成复制的值
进入 Vim 编辑模式,将要删除的 commit 前面的 `pick` 改成 `drop`
保存并退出 Vim
2、解决冲突
该命令执行时极有可能出现 reabase 冲突,可以通过以下方法解决:
git diff // 查看冲突内容
git add <file> 或 git add -A // 手动解决冲突(冲突位置已在文件中标明)
git rebase --continue
--------------------------------------------------------------------------------------------
// 若还在 rebase 状态,则重复之前步骤,直至 rebase 完成出现 applying 字样
git push //最后 push 提交
3、git revert
git revert:放弃某次提交。
操作之前的提交,记录仍会保留在 git log 中,而此次撤销会做为一次新的提交。
git revert -m:用于对 merge 节点的操作,-m 指定具体某个提交点。
1、撤销提交
要撤销中间某次提交时,使用 git revert 也是一个很好的选择:
git log // 查找需要撤销的 commit_id
git revert commit_id // 撤销这次提交
2、撤销 merge 节点提交
如果这次提交是 merge 节点的话,则需要加上 -m 指令:
git revert commit_id -m 1 // 第一个提交点
// 手动解决冲突
git add -A
git commit -m ""
git revert commit_id -m 2 // 第二个提交点
git push