软件构造笔记(二):一个关于Git的问题

在软件构造的几次实验中,我们提交代码和实验报告到github上时,在对git的各种指令的操作中,遇到了许多小问题,下面对一个记忆犹新的问题给出了一些解决方法。
改变远程仓库上的错误更改的版本。
在实验三中我们最后提交的版本要求如下

在这里插入图片描述master分支为程序主要结果,314change分支是进行了一些改动和扩展之后的结果,但是我一不小心将master分支改成了和314change一模一样的代码,并将其push到远程仓库当中。所以我需要回滚到分支之前那个版本的代码,再将其完善后push到主分支之上。
首先介绍和回滚相关的指令

git reset

git reset的作用是修改HEAD的位置,即将HEAD指向的master位置改变为之前存在的某个版本。
下面介绍几个git reset的常见用法:

git reset --hard HEAD^ 回退到上个版本

git reset --hard commitid 退到/进到 指定commitid

其中–hard指的是版本回退到那个版本的时候将本地文件同时回滚到之前的状态,若将–hard换成–soft,则本地文件保留回滚之前的状态。由于我是想要找到错误更改之前的代码,所以先用–hard回滚到我想要的版本。查找版本号运用git reflog指令,这非常常见,不必多说。
之后由于我想改变提交到github上远程仓库的错误版本,如果我直接git push会报错
在这里插入图片描述

这是因为我们本地库HEAD指向的版本比远程库的要旧。
我通过查阅资料,发现可以在git push后面加上–force来强制上传,

git push–force

并在远程仓库中自动删除该版本后面的几个版本。但是这样强制性的改变往往会出现一些意料外的错误。
后来我又想了一个办法

1.git reset --hard oldcommit

2.git reset --soft newcommit

首先强制回到之前版本,改变文件,再–soft指向最新版本,这样文件保留着老版本,同时master指向新版本,与远程仓库一致。这样直接正常push上去就可以了。下面是最终的成果。

                                            在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值