git 解決版本衝突

摘要

由於本人剛開是用git,命令不是很熟,遇到問題不知道怎麼解決,第一遇到的問題就是版本衝突,然後通過查資料,看到網上有人提供的解決方案,看這不錯,就搬了過來,希望加深下自己對此問題的理解。

描述

是這樣的,最近在和別人一起做項目的時候,夥伴在上傳他的代碼時,因爲上傳速度比較慢,他以爲是卡機了,所以關掉git bash,重新上傳,重複了幾次,最後導致Github上面的代碼亂碼,而我卻把上面亂碼的代碼pull下來,導致我的也亂碼。

分析

因爲我們之前的commit的版本沒有問題,所以之前的代碼沒事,那麼我們需要解決的就是實現版本回退,就可以把代碼恢復至最後一次成功提交的記錄。

解決

前提

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

我自己創建了一個文件夾 TestGit,裏面有兩個文件,我按兩次分別上傳到GitHub上面 

然後我們要做的就是把本地的項目文件和Github倉庫恢復至只有一個 一、正常版本.txt 文件。

一、本地git倉庫版本回退

查看提交版本

$ git log

通過這個命令可以查看歷史提交版本,我提交了兩個版本,所以顯示兩個提交版本

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

撤回之前的版本

當我們希望退回到上一個版本時可以使用

git reset --hard HEAD^

當我們希望退回上兩個版本時可以使用

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的錯誤版本時,如下:

果然恢復了!

二、Github版本回退

我們在本地回退了版本之後,github並沒有回退版本,此時我們需要將它push到github倉庫中。我們可以通過以下命令:

git push <remote> HEAD --force

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

這是我的github項目中的狀態:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章