Git學習-版本衝突

描述

是這樣的,最近在和別人一塊兒作項目的時候,夥伴在上傳他的代碼時,由於上傳速度比較慢,他覺得是卡機了,因此關掉git bash,從新上傳,重複了幾回,最後致使Github上面的代碼亂碼,而我卻把上面亂碼的代碼pull下來,致使個人也亂碼。git

分析

由於咱們以前的commit的版本沒有問題,因此以前的代碼沒事,那麼咱們須要解決的就是實現版本回退,就能夠把代碼恢復至最後一次成功提交的記錄。github

解決

前提

前提是你已經熟悉掌握如何使用git操做本地倉庫和遠程倉庫的更新。bash

我本身建立了一個文件夾 TestGit,裏面有兩個文件,我按兩次分別上傳到GitHub上面 字體

而後咱們要作的就是把本地的項目文件和Github倉庫恢復至只有一個** 1、正常版本.txt** 文件。code

1、本地git倉庫版本回退

查看提交版本

$ git log

經過這個命令能夠查看歷史提交版本,我提交了兩個版本,因此顯示兩個提交版本排序

這些版本都是按提交時間排序的,最後提交的排在最上面。而每個版本都會有個id,你們能夠看到黃色字體commit後面跟着的一寸數字就是每次提交版本的id。rem

撤回以前的版本

當咱們但願退回到上一個版本時能夠使用字符串

git reset --hard HEAD^

當咱們但願退回上兩個版本時能夠使用it

git reset --hard HEAD^^

固然,往上100個版本就直接亂碼

git reset --hard HEAD~100

OK,那麼我執行一下 git reset --hard HEAD^

果真,能夠恢復到正常版本了。

恢復新版本

固然,咱們也會有可能次日打開電腦想恢復錯誤版本,咱們使用git log是不會顯示那個版本的,那麼咱們能夠經過如下命令:

git reflog

這個命令能夠查看咱們每一次的命令,能夠看到咱們的錯誤版本在這裏能夠查看的到,每一行前面的黃色字符串就是咱們版本的id,當咱們須要恢復這些版本時,能夠經過這些id來恢復。

當咱們想恢復到指定版本時,能夠經過如下命令

git reset --hard commit_id

例如,我恢復id爲a016fa8的錯誤版本時,以下:

果真恢復了!

2、Github版本回退

咱們在本地回退了版本以後,github並無回退版本,此時咱們須要將它push到github倉庫中。咱們能夠經過如下命令:

git push <remote> HEAD --force

爲此,我將本身的commit回退到只有正常的版本,這是我本地文件狀態:

這是個人github項目中的狀態:

下面我將本地的版本推送到github

結語

好了,剛失戀,寫完這個算是當作一種宣泄吧,你們晚安。

相關文章
相關標籤/搜索