一、查看历史
编写一个java类进行测试
选择Git -> Show Git Log查看日志。
第一次修改推送到远程仓库了,所以有origin(远程仓库地址),第二次修改只提交到本地仓库所以没有。
二、版本回退
1、本地回退
在要回退的版本上右键,复制版本号。
选择Git -> Reset HEAD...选项。
选择Hard类型,将回退的版本号复制进去。
日志和代码都回退到指定的版本了。
三种回退模式解析
- hard:会清空工作目录和暂存区的改动。
- soft:会保留工作目录的内容,并把因为保留工作目录内容所带来的新的文件差异放进暂存区。
- mixed:git reset 如果不加参数,那么默认使用 --mixed 参数。此时表示要:保留工作目录,并清空暂存区。
2、远程仓库回退
上面一种情况是还没有把修改提交到远程仓库的回退,是比较好修改的。下面要介绍的远程仓库版本回退就没有那么容易了。接下来还是构造一下场景,接着上面的程序版本,首选对Main进行第三次修改,提交修改并推送到远程Github仓库上。下面是修改后的结果。(第三次忘改备注了)
复制版本号进行本地回退。
可以看到Main文件的内容确实回退了,本地master也指向了第二次提交,但是远程仓库origin/master依然指向的是第三次提交,这会出现问题的。接下来我们要把本地“版本退回”这个修改提交到远程仓库上去。
可以看到拒绝了推送。其原因应该是远程仓库的仓库快照(commit)是提前我们本地的,所以不行。那现在怎么解决呢?
首先点击Cancel。然后我们复制刚才回退之前的最新版本的版本号,也就是第三次提交的版本号。
然后再进行本地版本退回,不过这次要选择Mixed类型,把我们上边复制的退回之前的最新版本号粘贴进去。
然后点击Reset按钮,可以看到文件内容没变,但是本地master和远程origin/master都指向第三次修改。
接下来就是先提交修改,然后向远程仓库推送这一次的修改了。
查看远程仓库,内容回到第二次提交了。
三、拉取远程仓库
点击Git->pull就可以进行拉取远程库内容了。