在 Git 中撤消遠程提交(git reset -> push -f)【Git 小貼士!】

首先

我整理了关于使用”git reset”命令将自己的环境恢复到特定提交状态的方法,以便进行故障排查等工作(→此处)。

这次是用相同指令,来取消已经推送到远程的提交。

但是,请不要轻易取消远程提交。如果有其他人一起工作,请先确认后再进行操作。

此外,请注意该方法不会留下任何痕迹,完全改变了历史。

操作步骤

我們將繼續進行取消之前放入主分支的修正。

将修正内容合并到本地,并确认其内容。

使用”git pull”命令将修正并合并,使用”git log”命令来确认内容。
若要一次显示更多日志,可以使用”–oneline”选项来方便地实现。

在这里重要的是内容和提交的哈希值。
这次我们想要回到在“收藏功能”之前进行的 f2940ec(从底部数起的第二行)。

$ git pull
 ... (割愛)
$ git log --oneline -n 20
278f6b2 Merge pull request #165 from yokoba569/v1.7.3_dev
7a23fb5 (origin/v1.7.3_dev, v1.7.3_dev) Merge pull request #164 from yokoba569/#418_お気に入り対応
2394231 (origin/#418_お気に入り対応, #418_お気に入り対応) refs #418 DD対応 修正漏れ
8daa0f3 refs #418 お気に入り機能
f2940ec Merge pull request #163 from yokoba569/#445_起動変更オプション変更
a41ef31 ....

回到特定的提交

我知道了要回退的提交的哈希值,所以我将使用git reset命令。
由于不需要保留更改差异,因此应添加–hard选项。

$ git reset --hard f2940ec
HEAD is now at f2940ec Merge pull request #163 from yokoba569/#445_起動変更オプション変更

现在,本地环境已经恢复到“收藏功能”开始之前的状态。

强制将本地状态推送到远程

因为本地状态已经准备好了,所以我们将强制推送到远程。
在push命令中加入-f选项。

$ git push origin master -f
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/yokoba569/SampleProject.git
 + 278f6b2...f2940ec master -> master (forced update)

工作已经完成了。

最后

這裡是我們在不小心將更改合併到主要版本時所求助的地方。
在進行工作之前,我們應該確認好拉取請求的合併目標。

广告
将在 10 秒后关闭
bannerAds