1. 程式人生 > >git 解決版本衝突

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