git 解决版本冲突
2016-05-12 10:47
1956 查看
摘要
由于本人刚开是用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
相关文章推荐
- RPC failed; result=22, HTTP code = 411
- git更新已經刪除的文件
- 提取Git每次提交后Commit的文件
- GIT迁移服务器
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- git终极指南:在实际开发中的应用
- Git远程操作详解
- 25个 Git 进阶技巧(翻译)
- 详解版本控制利器Git,SVN的异同以及适用范围
- Ruby实现的删除已经合并的git分支脚本分享
- 在 Shell 提示符中显示 Git 分支名称的方法
- Git使用基础篇(一些常用命令和原理)
- git eclipse 插件的安装
- git fork同步是什么意思?
- Git使用小坑 Out of memory错误的解决方法
- Python的高级Git库 Gittle
- 使用python搭建Django应用程序步骤及版本冲突问题解决
- 使用GIT进行源码管理――GUI客户端小结
- 使用git代替FTP部署代码到服务器的例子
- linux系统安装git及git常用命令