使用git reset回退Jekyll架站错误

使用git reset回退Jekyll架站错误

在Github上用Jekyll架站,有时不免提交一些代码或内容有误,以致无效更新。这篇文章简介如何使用git reset命令回退到错误前的状态。

问题

在Github上用Jekyll架站,有时不免提交一些代码或内容有误,以致无效更新。

举例来说,这网站的编辑提交史(Commit History)在2017/12/25当天有数次编辑提交导致错误,Github无法解译。那些编辑提交会出现一个红色的小叉叉,而不是正确的绿色小勾勾。

鼠标悬停到那些红色,就可以查看错误的反馈。

要是你不想在Github的编辑提交史留下这样的错误记录,而你又没有其他协同工作者的话,其实是可以采取git reset的方式回退到错误前的状态。

在使用git reset前,还是先理解一下基本的概念。

reset 还是 revert

若你是第一次使用Git命令列,或着是第一次使用git reset,有必要理解一下 git resetgit revert 的差别。

简单说,git reset 是不留任何编辑记录的回退,而git revert则是留有编辑记录的回退。

举例来说,若当下的编辑记录史是;

版本1 → 版本2 → 版本3

若我使用git reset 回退到 版本2 ,编辑记录会变成

版本1 → 版本2

若我使用git revert 回退到 版本2 ,编辑记录会变成

版本1 → 版本2 → 版本3 → 版本2

两种的结果都会让最新的版本处於版本2的状态,但一个是不留记录(git reset),另一个则留了(git revert)。

revert_reset

一般来说,特别是协同工作,都会用git revert,这样比直接不留记录的回退礼貌一些些。但若这只是你一个人做的小项目,又有一些比较小的小错误要回退,不留记录也是可以的。

命令列操作

首先要开启命令列,切换目录至你本地的项目,如mygithub.github.io。

若你有用Github Desktop的话,可以点进去项目後按Ctrl+\`,或着按菜单Repository – Open in Command Prompt

一般步骤如下:

  • 使用git push -f origin HEAD^:master 将HEAD指向当前工作的master
  • 使用git reset –hard SHA长码 将代码重置回退到SHA长码所代表的版本号

执行效果如:

C:\Users\me\Documents\GitHub\mygithub.github.io>git push -f origin HEAD^:master
Everything up-to-date

C:\Users\me\Documents\GitHub\mygithub.github.io>git reset --hard 7cc655458bdb8d878a5f95aeeab5b9bb0837fdbf
HEAD is now at 7cc6554 CSS layout improvement

C:\Users\me\Documents\GitHub\mygithub.github.io>git push --force
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/mygithub/mygithub.github.io.git
 + 4d39ab4...7cc6554 master -> master (forced update)

看到HEAD is now at SHA短码 .... 字样代表HEAD指向到该版本。

SHA码是啥

简单说,在Git中,每个Commit 编辑提交记录有一个代码,确保版本号不会混淆。


hanteng

撰写者

廖汉腾,副教授(网络与新媒体专业) 中山大学南方学院 新媒体研究中心代理主任 ,开设课程:《网络新媒体技术与协作》丶《信息可视化设计》丶《大数据统计》丶《Python语言》丶《网页设计与制作》丶《网站运营与管理实践》等。

更新日期: