一、查看歷史
? ? ? ? 編寫一個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就可以進行拉取遠程庫內容了。