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

结语

好了,刚失恋,写完这个算是当作一种宣泄吧,你们晚安。

相关文章
相关标签/搜索