在Git中恢复到特定的提交(→完成任务后,恢复到最新状态)(git reset)【Git技巧!】

首先

有时候,在排除故障时,我们要一次取消提交并回退,直到找到问题所在。这种情况下,我们会使用 git reset 命令。

操作步骤

首先确认提交

使用git log命令可以确认提交的哈希值。
若要一次显示多个日志,则–oneline选项非常方便。

我想要返回到 f2940ec(从底部第二行开始)之前进行”收藏功能”的工作。

$ git log --oneline -n 20
2a2584e (HEAD -> v1.7.4_dev, origin/v1.7.4_dev, origin/master, origin/HEAD, master) v1.7.3 リリース
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”选项,可以清除所有的更改内容。
如果使用”–soft”选项,则保留未提交的更改内容。

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

回到最新的状态

当调查完成或者在错误地重置提交时,可以使用这个方法。
使用git reflog命令确认要恢复的状态,然后再次使用git reset命令。

git reflog コマンドにより作業前の状態が HEAD@{2} であることがわかります。
$ git reflog -n 3
f2940ec (HEAD -> v1.7.4_dev) HEAD@{0}: reset: moving to f2940ec
2a2584e (origin/v1.7.4_dev, origin/master, origin/HEAD, master) HEAD@{1}: checkout: moving from
master to v1.7.4_dev
2a2584e (origin/v1.7.4_dev, origin/master, origin/HEAD, master) HEAD@{2}: commit: v1.7.3 リリース

git reset コマンドで作業前の HEAD@{2} に戻します。
変更差分をクリアしていい場合は –hard をつけましょう。
(保持したい場合は –soft ですが、あまり使わないかも?)
$ git reset –hard HEAD@{2}
HEAD is now at 2a2584e v1.7.3 リリース

追加说明:即使指定了提交编号,也可以执行以下操作
$ git reset –hard 2a2584e
当前HEAD指向编号2a2584e,版本为v1.7.3

终于

回到特定的提交方式如上所述。

在调查不良情况时,有时候我们会感到很不耐烦。那种时候,我们不希望因为要使用git命令而增加麻烦。

如果这篇文章对你有所帮助,我将感到幸福。

bannerAds