在个人开发和协同开发过程中,我们是通过git把我们本地仓库和远程仓库联系起来,首先 我们要知道的是git 有工作区、暂存区和Git仓库。我们本地编写的代码,不执行git命令都处于工作区。
执行 git add 将工作区的文件标记为已暂存,添加到暂存区。
执行 git commit 将标记的已暂存的文件都保存到本地仓库。
而正常开发过程中,我们经常要使用到的git命令就是: git add、 git commit 、git push、git pull、git merge 等,但这些命令都是在一切操作都很顺利的过程下,如果需要有一些撤回和回退操作的话,又会有哪些命令可以帮助我们呢,接下来我们就一起梳理一下:
1.工作区的撤销
本地的修改,没有操作git命令,我们可以通过git diff来查看修改的内容。
如果我们可能只是写了一些测试代码,想取消这些修改,可以通过下面命令撤销:
// 全部文件撤销
git checkout -- .
//单个文件撤销
git checkout -- [filename]
此时再 git diff 就没有输出。 注意:上面的命令一旦执行了,之前的修改就找不回来了。
2. 暂存区的撤销
本地写完代码之后,我们会通过 git add 添加到暂存区,此时我们想看文件的修改 git diff不会输出任何东西。想查看暂存区的修改,可以执行下面命令:
git diff --staged
这个时候可以看到我们 git add 之前一样的输出。
如果我们想将修改从暂存区撤回,可以通过下面的方式:
// 全部文件撤销
git reset .
//单个文件撤销
git reset [filename]
回到提交暂存前的工作区状态。
3. 提交到本地仓库的撤销
提交本地仓库,我们会通过下面命令:
git commit -m "commit一次"
// 查看一下操作记录
git log
想撤销这一次的commit 可以找到上一次commit的记录:
git checkout a6dbda177723c7615a095f494e6152fda12be11f
// 或者
git reset --hard HEAD~1
//再次查看日志
git log
如果不是想撤销最新一次的commit,想撤回之前的某一次commit:
git revert 99053897bc56d302af8f0d4ed68311d21af3174c
revert之后,会在提交历史的最前面生成一个新的revert commit 记录。
4. 修改commit 的message
commit 文案写错了,然后想要修改:
git commit --amend -m "修改正确的msg"
不会多生成一条commit记录,只是把之前的一次修改掉。
5. 合并到上一次commit
第一次修改了文件,提交了一次commit;后面又修改了一些东西,不想生成两条commit:
git commit --amend
6.撤销merge
如果git merge 分支之后有冲突,想先撤回这次merge:
git merge --abort
因为最近的工作过程中,有一些意外情况进行了一些git的回退操作,所以总结了以上几种回退和撤回操作,也希望可以给大家带来一些帮助~