由于本人剛開是用git,命令不是很熟,遇到問題不知道怎么解決,第一遇到的問題就是版本沖突,然后通過查資料,看到網(wǎng)上有人提供的解決方案,看這不錯,就搬了過來,希望加深下自己對此問題的理解。
是這樣的,最近在和別人一起做項目的時候,伙伴在上傳他的代碼時,因為上傳速度比較慢,他以為是卡機了,所以關(guān)掉git bash,重新上傳,重復了幾次,最后導致Github上面的代碼亂碼,而我卻把上面亂碼的代碼pull下來,導致我的也亂碼。
因為我們之前的commit的版本沒有問題,所以之前的代碼沒事,那么我們需要解決的就是實現(xiàn)版本回退,就可以把代碼恢復至最后一次成功提交的記錄。
前提是你已經(jīng)熟悉掌握如何使用git操作本地倉庫和遠程倉庫的更新。
我自己創(chuàng)建了一個文件夾 TestGit,里面有兩個文件,我按兩次分別上傳到GitHub上面
然后我們要做的就是把本地的項目文件和Github倉庫恢復至只有一個 一、正常版本.txt 文件。
$ git log
通過這個命令可以查看歷史提交版本,我提交了兩個版本,所以顯示兩個提交版本
這些版本都是按提交時間排序的,最后提交的排在最上面。而每一個版本都會有個id,大家可以看到黃色字體commit后面跟著的一寸數(shù)字就是每次提交版本的id。
當我們希望退回到上一個版本時可以使用
git reset --hard HEAD^
當我們希望退回上兩個版本時可以使用
git reset --hard HEAD^^
當然,往上100個版本就直接
git reset --hard HEAD~100
OK,那么我執(zhí)行一下 git reset --hard HEAD^
果然,可以恢復到正常版本了。
當然,我們也會有可能第二天打開電腦想恢復錯誤版本,我們使用git log
是不會顯示那個版本的,那么我們可以通過以下命令:
git reflog
這個命令可以查看我們每一次的命令,可以看到我們的錯誤版本在這里可以查看的到,每一行前面的黃色字符串就是我們版本的id,當我們需要恢復這些版本時,可以通過這些id來恢復。
當我們想恢復到指定版本時,可以通過以下命令
git reset --hard commit_id
例如,我恢復id為a016fa8的錯誤版本時,如下:
果然恢復了!
我們在本地回退了版本之后,github并沒有回退版本,此時我們需要將它push到github倉庫中。我們可以通過以下命令:
git push <remote> HEAD --force
為此,我將自己的commit回退到只有正常的版本,這是我本地文件狀態(tài):
這是我的github項目中的狀態(tài):
聯(lián)系客服