1.git diff XXX
- 当我们使用git status查看工作区做了什么修改时,可以使用git diff XXX对修改过的文件XXX查看差异
2.git reset --hard
HEAD^
版本库回退
- 首先HEAD是指向当前版本的指针,我们提交的所有操作都建立在这个指针上。
- HEAD是可以移动的,这条命令就是移动HEAD指针在历史版本中移动,HEAD^表示上一版本,HEAD^^和HEAD~2表示上两个版本,以此类推。
由于有
--hard
这个参数,版本库相当于不知道有未来版本了,使用git log也没法查找到未来版本的commit-id。然后使用以下命令:123//用git reflog来找回之前commit的commit-idgit refloggit reset --hard commit_id
即可找回原来的版本。
3.git revert HEAD
回退到上一版本的另一种方法,注意参数HEAD,是回退到上一版本。
- git reset是不会产生新的提交记录,反而有可能抹去提交记录,当我们要推送到远程仓库时,显然没有提交记录怎么推送呢?所以git reset适合操作本地仓库,不需要分享给远程仓库的。
- git revert是会在HEAD节点基础上生成一个提交节点的,也就是新的提交,所以可以推送到远程仓库,别人也能查看到远程记录。
4.git branch -f master HEAD^
在git branch命令后加上参数-f和分支名master以及节点名HEAD^,这样就把master分支强制指向了HEAD的上一版本。即使当前HEAD不在master分支上,使用这个命令也能强制移动master分支的最新提交节点。
5.清空提交记录(慎重)
有时候不小心把敏感信息上传到远程仓库怎么办?别怕按照以下步骤来,代价是以前的提交历史都没了。
- 将敏感信息删除并生成一个commit。
- 创建并切换到临时无提交分支temp:git checkout –orphan temp
- 添加所有文件:git add -A
- 提交更改:git commit -am “init”
- 删除master分支:git branch -D master
- 将temp分支重命名为master:git branch -m master
- 强制推送到远程仓库:git push -f origin master