Git版本回退并强制推送到远端

本文参考廖雪峰的Git教程

前言:本文章解决问题的前提是本人不小心修改了本地代码仓库的最外层目录权限,不知道原权限是什么,导致本地git提示几十个文件被修改过,实际内容并未修改,可能是目录权限改变被git识别为改动,解决方案如些。

温馨提示:目录权限谨慎修改,避免以后在服务器部署时权限引起不必要的麻烦。

1️⃣、首先查看git提交日志,查看commit id

git log     //git log命令显示从最近到最远的提交日志

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数:

git log --pretty=oneline

2️⃣、回滚到上一个提交版本或者指定版本(commit id)

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb…(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。

git reset --hard HEAD^

查看操作后版本库的状态确认是否回退成功,发现最近的那个版本已经看不到了,表示已回滚:

git log  //此时回退的只是本地仓库的回退 远程分支并没有回退

如果还想再次回去原先最新版本,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个原来最新版本的commit id是1094adb…,于是就可以指定回到未来的某个版本:

git reset --hard 1094adb..   //版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。

3️⃣、现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?

在Git中,总是有后悔药可以吃的,Git提供了一个命令git reflog用来记录你的每一次命令:

git reflog  //打印你记录你的每一次操作记录

git reflog 可以查看所有分支的所有操作记录(包括(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录,而且跟进结果可以回退道某一个修改。

4️⃣、把当前分支强制提交到远程

git push -f origin <branch name>(分支名称); //强行将本地回退后的分支提交到远程分支;

5️⃣、别人提交或拉取代码可能会因为我们回退了版本而出现错误或者无法拉取,解决命令如下:

git fetch --all

版权声明:本人原创文章,转载时请保留所有权并以超链接形式标明文章出处,谢谢!

Git版本回退并强制推送到远端相关推荐

  1. Git 更安全的强制推送,--force-with-lease

    由于 git rebase 命令的存在,强制将提交推送到远端仓库似乎也有些必要.不过都知道 git push --force 是不安全的,这让 git rebase 命令显得有些鸡肋. 本文将推荐 - ...

  2. git版本回退(git reset、git revert、git stash)

    文章目录 回退的两种情况 1.已 commit,未push到远程仓库. 1.1 git reset --soft (撤销commit) 1.2 git commit --amend(修改commit ...

  3. git 强制推送_Git 常用命令清单,掌握这些,轻松驾驭版本管理

    工程下载.分支的增删查改 工程下载: clone 远程工程:git clone https://XXXX.git fetch 远程分支到本地某分支:git fetch origin : 分支的增删查改 ...

  4. git强制推送_Git 常用命令

    Git 常用命令总结 1. GIT 工作区 add commitworking directory ------- index(stage) ---------- HEAD | | | | | | 工 ...

  5. git tag创建、远程推送、回退以及强推push -f

    一.给本地仓库分支打轻量级tag标签 1.在Git中打标签非常简单,首先,切换到需要打标签的分支上: $ git branchdevwhdgray * masteroptimize_sel_drive ...

  6. 【Git实战技巧】恢复被强制推送push失踪的代码

    前言 Git是一个易学难精的分布式版本控制系统,被我们码农常用于代码的管理.如果你还不了解Git,建议先通过廖雪峰的Git教程进行了解,再来看本文,因为本文以使用技巧为主,不会在基础名词上做过多解释. ...

  7. git第一次提交代码至远程仓库-强制推送

    一 首次提交代码到git仓库 第一步:git init 初始化项目文件夹 第二步:git add . 键所有文件添加到暂存区 第三步:git commit -m "first commit& ...

  8. Git的强制操作:强制推送[项目中千万不要用] 强制下拉

    强制推送 git push --force origin 强制下拉 git pull --force origin master:master git pull --force origin dev: ...

  9. 乌龟git强制推送(不到万不得已不要使用!!!)

    有时候我们在推送的时候会出现这样那样的问题,比如多添加了文件,需要删除却不知道ignore这个东西的时候,或者链接推送总是失败啊,在这种情况下,TortoiseGit还有一个强制推送的功能,不到万不得 ...

最新文章

  1. 怎么把圆角变直角_明式圆角柜的还原(下)——信民木工DIY达人大赛作品
  2. flume 1.7在windows下的安装与运行
  3. 基于Ubuntu+Owncloud的私有云网盘
  4. java读取文件指定位置_Java读取指定路径下的文件列表
  5. 垃圾收集 java_Java的内置垃圾收集如何使您的生活更美好(大部分时间)
  6. 检查MySQL主从数据一致性
  7. jQuery 源码解析(三十一) 动画模块 便捷动画详解
  8. 常用的python模块
  9. ASP.NET基础教程-DataGrid表格控件-更新数据
  10. 巧用Automator,实现一个鼠标右键转化图像格式的功能
  11. 2012-12-17 → 2013-01-20 周总结:五周没写周总结了,今天来总结下
  12. 拓端tecdat|R语言中实现层次聚类模型
  13. SARIMA时间序列模型预测城市房价数据
  14. excel粘贴时出现故障_解决excel一复制就卡死的问题
  15. 搜索下载免费操作系统(转)
  16. 小学生测验(Java)
  17. 国家开放大学2021春2405现代汉语(1)题目
  18. JAVA基础-GUI实践总结
  19. 【框架思路】python如何读取excel文件内容?如何获取excel文件的路径及sheet名称?
  20. 小技巧:小米手机和小米电脑“勾搭”也能组建家庭安防监控

热门文章

  1. linux基础知识-15
  2. 视频文件格式扩展名/专用名词详解_拔剑-浆糊的传说_新浪博客
  3. 正确对待外链,以及如何建设外链,根据我自己在外链建设和网站诊断中发现的。
  4. uu的HTTP学习笔记
  5. 【洛谷p1605】迷宫
  6. 告别预编译,CSS 直接写嵌套的日子就要来临~
  7. Matlab中mean函数
  8. MATLAB mean() 函数的使用
  9. Activiti学习笔记:Activiti和Spring整合、Activiti和SpringBoot整合之Gradle版
  10. matlab在地图上标点,如何用matlab在地图上显示数据