-
撤销本地全部没有git add过的修改
git checkout -- .
-
使用库上文件覆盖本地修改(当然是指用本地库覆盖)
git checkout file_name
-
回退掉某一次commit,回退方式是自动生成一个反向的commit,不会影响其他commmit
git revert commitID
-
将git库状态强制回退到某个节点号,这个节点号之后的commit全部丢失
git reset --hard commitID
-
将远端库强制覆盖到本地,放弃本地全部修改
git reset --hard origin 分支名
-
回退最近一次的commit,且该次commit所作的修改会退到没有被add的状态
git reset --mixed HEAD~1
-
回退最近的一次commit,回退后该次commit所作的修改仍处于add过了的状态,可以通过git status查看状态,
git reset --soft HEAD~1
-
回退最近一次的commit,回退的同时working tree也会被修改,也就是回退的这次的commit所做的修改都会消失
git reset --hard HEAD~1
二、撤销分支的方法
在使用git的过程中,因为人为因素造成分支(commit)被删除,可以使用以下步骤进行恢复。
首先用以下步骤创建一个新分支,修改一些文件后删除,以便进行恢复。
1.创建分支 abc
git branch abc
- 1
2.查看分支列表
git branch -a
abc
* develop
remotes/origin-dev/develop
- 1
- 2
- 3
- 4
3.切换到abc分支,随便修改一下东西后 commit
切换分支
git checkout abc
Switched to branch 'abc'
创建一个文件
echo 'abc' > test.txt
commit
git add .
git commit -m 'add test.txt'
[abc 3eac14d] add test.txt
1 file changed, 1 insertion(+)
create mode 100644 test.txt
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
4.删除分支abc
git branch -D abc
Deleted branch abc (was 3eac14d).
- 1
- 2
5.查看分支列表,abc分支已不存在
git branch -a
* develop
remotes/origin-dev/develop
- 1
- 2
- 3
恢复步骤如下:
1.使用git log -g 找回之前提交的commit
commit 3eac14d05bc1264cda54a7c21f04c3892f32406a
Reflog: HEAD@{1} (fdipzone <fdipzone@sina.com>)
Reflog message: commit: add test.txt
Author: fdipzone <fdipzone@sina.com>
Date: Sun Jan 31 22:26:33 2016 +0800
add test.txt
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
2.使用git branch recover_branch[新分支] commit_id命令用这个commit创建一个分支
git branch recover_branch_abc 3eac14d05bc1264cda54a7c21f04c3892f32406a
git branch -a
* develop
recover_branch_abc
remotes/origin-dev/develop
- 1
- 2
- 3
- 4
- 5
- 6
可以见到recover_branch_abc已创建
3.切换到recover_branch_abc分支,检查文件是否存在
git checkout recover_branch_abc
Switched to branch 'recover_branch_abc'
ls -lt
total 8
-rw-r--r-- 1 fdipzone staff 4 1 31 22:38 test.txt
- 1
- 2
- 3
- 4
- 5
- 6
这样就可以恢复被误删的分支了