如何创建回滚另一个提交的提交?

How can I create a commit that rolls back another one?

为简单起见,让我们创建一个仅包含两次提交的存储库:

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 returns

fd5b1ce (HEAD -> master) second
f621ab9 first

我想得到的是以下内容

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

somefile in thirdsomefile in first 的内容相同。

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

commit that rolls back another one?

这似乎很适合 git revert

git revert <second commit>

但这适用于第二次提交(被还原)的所有文件

with somefile in third having the same content as somefile in first.

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

git restore -SW -s=<first commit> -- somefile