JumpingYeah 2020-02-02
1 ###################################################################[@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git dog * db69602 (HEAD -> dev) add test_reset.md * fab7157 dev修改READM.md * 217fef2 (origin/master, origin/HEAD, master) Update README.md,添加日期 * a565481 (origin/dev) Update README.md * 19cfeea 第一次将远程dev分支代码合并到master分支Merge branch ‘dev‘ |\ | * b1777d8 commit merge_excel_utils | * ee37473 manage utils | * 0b6e16c commit files * | 441940f 添加项目说明 |/ * 0f1f9d7 Initial Commit [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git reset dev^ #撤销上一次commit [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git dog * fab7157 (HEAD -> dev) dev修改READM.md * 217fef2 (origin/master, origin/HEAD, master) Update README.md,添加日期 * a565481 (origin/dev) Update README.md * 19cfeea 第一次将远程dev分支代码合并到master分支Merge branch ‘dev‘ |\ | * b1777d8 commit merge_excel_utils | * ee37473 manage utils | * 0b6e16c commit files * | 441940f 添加项目说明 |/ * 0f1f9d7 Initial Commit 2 ######################################################################### 分三次commit 分别commit test_reset1.md、test_reset2.md、test_reset3.md 到暂存区 [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git dog * 7622464 (HEAD -> dev) test_reset3.md * 56afa1e test_reset2.md * 4797045 add test_reset1.md * fab7157 dev修改READM.md * 217fef2 (origin/master, origin/HEAD, master) Update README.md,添加日期 * a565481 (origin/dev) Update README.md * 19cfeea 第一次将远程dev分支代码合并到master分支Merge branch ‘dev‘ |\ | * b1777d8 commit merge_excel_utils | * ee37473 manage utils | * 0b6e16c commit files * | 441940f 添加项目说明 |/ * 0f1f9d7 Initial Commit [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git reset dev^^^ #撤销最近三次的commit【或git rest dev~5】 [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git dog * fab7157 (HEAD -> dev) dev修改READM.md * 217fef2 (origin/master, origin/HEAD, master) Update README.md,添加日期 * a565481 (origin/dev) Update README.md * 19cfeea 第一次将远程dev分支代码合并到master分支Merge branch ‘dev‘ |\ | * b1777d8 commit merge_excel_utils | * ee37473 manage utils | * 0b6e16c commit files * | 441940f 添加项目说明 |/ * 0f1f9d7 Initial Commit
--hard 工作目录和暂存区的文件都会丢弃 [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git dog * 3a7c43c (HEAD -> dev) add test_reset1.md,test_reset2.md,test_reset3.md #最近的一次commit * 217fef2 (origin/master, origin/HEAD, master) Update README.md,添加日期 #尝试回退到该版本 | * 4e893c1 (origin/dev) add test_reset1.md,test_reset2.md,test_reset3.md |/ * a565481 Update README.md * 19cfeea 第一次将远程dev分支代码合并到master分支Merge branch ‘dev‘ |\ | * b1777d8 commit merge_excel_utils | * ee37473 manage utils | * 0b6e16c commit files * | 441940f 添加项目说明 |/ * 0f1f9d7 Initial Commit [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git reset --hard 217fef2 #hard模式回退 HEAD is now at 217fef2 Update README.md,添加日期 [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git st #工作区 和 暂存区都是空的 On branch dev Your branch and ‘origin/dev‘ have diverged, and have 1 and 1 different commits each, respectively. (use "git pull" to merge the remote branch into yours) nothing to commit, working tree clean [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ ll # 三个文件 test_reset1.md,test_reset2.md,test_reset3.md 在工作区被删除 total 24 drwxr-xr-x 10 walker staff 320B 2 2 22:10 . drwxr-xr-x 9 walker staff 288B 2 2 22:03 .. -rw-r--r-- 1 walker staff 6.0K 2 2 20:16 .DS_Store drwxr-xr-x 15 walker staff 480B 2 2 22:10 .git -rw-r--r-- 1 walker staff 73B 2 2 22:10 README.md -rw-r--r-- 1 walker staff 0B 2 2 13:08 __init__.py drwxr-xr-x 7 walker staff 224B 2 2 13:08 __pycache__ drwxr-xr-x 9 walker staff 288B 2 2 13:08 data drwxr-xr-x 6 walker staff 192B 2 2 13:08 merge drwxr-xr-x 8 walker staff 256B 2 2 13:08 utils
--mixed丢掉暂存区文件,但是不会丢弃工作目录的文件【默认是这种模式】 [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git dog * 4e893c1 (HEAD -> dev, origin/dev) add test_reset1.md,test_reset2.md,test_reset3.md #最新的一次提交 | * 217fef2 (origin/master, origin/HEAD, master) Update README.md,添加日期 #测试回退到该版本 |/ * a565481 Update README.md * 19cfeea 第一次将远程dev分支代码合并到master分支Merge branch ‘dev‘ |\ | * b1777d8 commit merge_excel_utils | * ee37473 manage utils | * 0b6e16c commit files * | 441940f 添加项目说明 |/ * 0f1f9d7 Initial Commit [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git reset 217fef2 #默认--mixed 模式 Unstaged changes after reset: M README.md [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git st #reset之后,暂存区中的文件也被删除 On branch dev Your branch and ‘origin/dev‘ have diverged, and have 1 and 1 different commits each, respectively. (use "git pull" to merge the remote branch into yours) 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: README.md Untracked files: (use "git add <file>..." to include in what will be committed) # 但是工作目录中的文件还存在 test_reset1.md test_reset2.md test_reset3.md no changes added to commit (use "git add" and/or "git commit -a") [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ ll #工作目标中的文件还存在 total 48 drwxr-xr-x 13 walker staff 416B 2 2 22:02 . drwxr-xr-x 9 walker staff 288B 2 2 22:03 .. -rw-r--r-- 1 walker staff 6.0K 2 2 20:16 .DS_Store drwxr-xr-x 15 walker staff 480B 2 2 22:05 .git -rw-r--r-- 1 walker staff 54B 2 2 22:00 README.md -rw-r--r-- 1 walker staff 0B 2 2 13:08 __init__.py drwxr-xr-x 7 walker staff 224B 2 2 13:08 __pycache__ drwxr-xr-x 9 walker staff 288B 2 2 13:08 data drwxr-xr-x 6 walker staff 192B 2 2 13:08 merge -rw-r--r-- 1 walker staff 15B 2 2 19:57 test_reset1.md -rw-r--r-- 1 walker staff 15B 2 2 19:57 test_reset2.md -rw-r--r-- 1 walker staff 15B 2 2 19:57 test_reset3.md drwxr-xr-x 8 walker staff 256B 2 2 13:08 utils
--soft工作目录和暂存区的文件都不会丢弃 [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git dog * f9069ec (HEAD -> dev) add test_reset1.md,test_reset2.md,test_reset3.md #本地dev分支最近一次提交 * 217fef2 (origin/master, origin/HEAD, master) Update README.md,添加日期 #尝试回退到该版本 | * 4e893c1 (origin/dev) add test_reset1.md,test_reset2.md,test_reset3.md |/ * a565481 Update README.md * 19cfeea 第一次将远程dev分支代码合并到master分支Merge branch ‘dev‘ |\ | * b1777d8 commit merge_excel_utils | * ee37473 manage utils | * 0b6e16c commit files * | 441940f 添加项目说明 |/ * 0f1f9d7 Initial Commit [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git reset --soft 217fef2 #回退到该版本 [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git st # 暂存区中的文件还存在 On branch dev Your branch and ‘origin/dev‘ have diverged, and have 1 and 1 different commits each, respectively. (use "git pull" to merge the remote branch into yours) Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: test_reset1.md new file: test_reset2.md new file: test_reset3.md [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ ll #工作目录中的文件也还存在 total 48 drwxr-xr-x 13 walker staff 416B 2 2 22:14 . drwxr-xr-x 6 walker staff 192B 2 2 22:14 .. -rw-r--r-- 1 walker staff 6.0K 2 2 20:16 .DS_Store drwxr-xr-x 15 walker staff 480B 2 2 22:15 .git -rw-r--r-- 1 walker staff 73B 2 2 22:10 README.md -rw-r--r-- 1 walker staff 0B 2 2 13:08 __init__.py drwxr-xr-x 7 walker staff 224B 2 2 13:08 __pycache__ drwxr-xr-x 9 walker staff 288B 2 2 13:08 data drwxr-xr-x 6 walker staff 192B 2 2 13:08 merge -rw-r--r-- 1 walker staff 15B 2 2 19:57 test_reset1.md -rw-r--r-- 1 walker staff 15B 2 2 19:57 test_reset2.md -rw-r--r-- 1 walker staff 15B 2 2 19:57 test_reset3.md drwxr-xr-x 8 walker staff 256B 2 2 13:08 utils
执行完git reset --hard 之后被丢失的 test_reset1.md,test_reset2.md,test_reset3.md 三个文件如何找回:
[@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git reflog 217fef2 (HEAD -> dev, origin/master, origin/HEAD, master) {0}: reset: moving to 217fef2 #上一次reset 8176e66 {1}: commit: add test_reset1.md,test_reset2.md,test_reset3.md #上一次添加三个文件,回退到该版本即可 217fef2 (HEAD -> dev, origin/master, origin/HEAD, master) {2}: reset: moving to 217fef2 f9069ec {3}: commit: add test_reset1.md,test_reset2.md,test_reset3.md 217fef2 (HEAD -> dev, origin/master, origin/HEAD, master) {4}: reset: moving to 217fef2 3a7c43c {5}: commit: add test_reset1.md,test_reset2.md,test_reset3.md 217fef2 (HEAD -> dev, origin/master, origin/HEAD, master) {6}: reset: moving to 217fef2 4e893c1 (origin/dev) {7}: commit: add test_reset1.md,test_reset2.md,test_reset3.md a565481 {8}: reset: moving to a565481 217fef2 (HEAD -> dev, origin/master, origin/HEAD, master) {9}: reset: moving to 217fef2 [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ git reset --hard 8176e66 HEAD is now at 8176e66 add test_reset1.md,test_reset2.md,test_reset3.md [@wooluwalkerdeMacBook-Pro:wenjian (dev)]$ ll # 工作区中的三个文件还存在 total 48 drwxr-xr-x 13 walker staff 416B 2 2 22:27 . drwxr-xr-x 6 walker staff 192B 2 2 22:14 .. -rw-r--r-- 1 walker staff 6.0K 2 2 20:16 .DS_Store drwxr-xr-x 15 walker staff 480B 2 2 22:27 .git -rw-r--r-- 1 walker staff 73B 2 2 22:10 README.md -rw-r--r-- 1 walker staff 0B 2 2 13:08 __init__.py drwxr-xr-x 7 walker staff 224B 2 2 13:08 __pycache__ drwxr-xr-x 9 walker staff 288B 2 2 13:08 data drwxr-xr-x 6 walker staff 192B 2 2 13:08 merge -rw-r--r-- 1 walker staff 15B 2 2 22:27 test_reset1.md -rw-r--r-- 1 walker staff 15B 2 2 22:27 test_reset2.md -rw-r--r-- 1 walker staff 15B 2 2 22:27 test_reset3.md drwxr-xr-x 8 walker staff 256B 2 2 13:08 utils