1

为简单起见,让我们创建一个只有两个提交的存储库:

mkdir somedir
cd somedir
git init
echo hello > somefile
git add somefile
git commit -m 'first'
echo world >> somefile
git commit -am 'second'

为清楚起见,此时git log --oneline返回

fd5b1ce (HEAD -> master) second
f621ab9 first

我想要得到的是以下内容

xxxxxxx (HEAD -> master) third
fd5b1ce second
f621ab9 first

with somefileinthird具有与 in 相同的somefile内容first

我当然可以做git cherry-pick master~(这里masterfd5b1ce)并完全解决冲突first,但也许有更清洁的方法?

4

1 回答 1

3

提交回滚另一个?

这似乎很适合git revert

git revert <second commit>

但这适用于第二次提交的所有文件(正在恢复)

在第三个中与somefile第一个中的 somefile 具有相同的内容。

如果您只需要还原一个文件,请使用git restore.

git restore -SW -s=<first commit> -- somefile
于 2022-02-16T07:42:06.587 回答