文档章节

Git学习-版本冲突

Ryane
 Ryane
发布于 2016/05/12 00:16
字数 873
阅读 103
收藏 6

描述

是这样的,最近在和别人一起做项目的时候,伙伴在上传他的代码时,因为上传速度比较慢,他以为是卡机了,所以关掉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

结语

好了,刚失恋,写完这个算是当做一种宣泄吧,大家晚安。

© 著作权归作者所有

Ryane
粉丝 42
博文 22
码字总数 55318
作品 0
程序员
私信 提问
let's starting git

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。 Git 是 Linu...

柳白子
2016/11/04
0
0
VCS简介(GIT GITLAB)

VCS(版本控制系统) 版本控制系统(version control system),是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,...

我很水嘚
2017/11/25
0
0
Git Rebase 操作的分析与整理

文前说明 作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。 本文仅供学习交流使用,侵权必删。 不用...

羽杰
2017/04/23
0
0
Git+IntellijIDE 使用总结

Git+IntellijIDE是当前最流行的开发工具组合,相信用过的人都体会到了他们的强大和易用。下面就对使用该工具接近一年,写一个总结,以备后来者学习和借鉴。 首先,安装git和IDE工具,以及搭建...

bill2candy
2016/09/10
143
0
用git合并分支时,如何保持某些文件不被合并

使用git作为版本控制工具有半年多了。目前还是在边学边用的阶段,因为git这东西内容实在是太多了,学习路线比较陡峭,而且学习过程当中时不时会冒出一些特别有意思的小tips让你十分的惊喜。因...

408582708
2018/09/12
60
0

没有更多内容

加载失败,请刷新页面

加载更多

LeetCode 第 287 号问题:寻找重复数,一道非常简单的数组遍历题,加上四个条件后感觉无从下手

今天分享的题目来源于 LeetCode 第 287 号问题:寻找重复数。 题目描述 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只...

五分钟学算法
33分钟前
3
0
vuex mapActions

本文转载于:专业的前端网站➧vuex mapActions 在组件中使用 this.$store.dispatch('xxx') 分发 action,或者使用 mapActions 辅助函数将组件的 methods 映射为 store.dispatch 调用(需要先在...

前端老手
34分钟前
3
0
使用bash -x 调试信息查看lvextend -r的调用

--1.打开调试: [root@db01 storage]# set -x --2.执行命令: [root@db01 storage]# /usr/sbin/lvextend -r -L 710M /dev/shazam/storage + /usr/sbin/lvextend -r -L 710M /dev/shazam/sto......

突突突酱
43分钟前
3
0
Linux重定向及反弹shell详解

这里说Linux重定向的原因主要还是为了详细了解一下Linux中的反弹shell 目录 0x01 文件描述符 0x02 重定向 0x03 反弹shell 0x04 交互重定向 0x05 命令变形 0x01 文件描述符 Linux的文件描述符...

无心的梦呓
48分钟前
3
0
开发经验 初学51单片机建议用C语言

typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   新手学习51单片机建议用C语言。因为使用C语言入门的话,上手速度快。实现几个例程后...

志成就
54分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部