微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何撤消对特定文件的已提交更改而不重新设置?

如何解决如何撤消对特定文件的已提交更改而不重新设置?

在这个分支上做了大约 20 次提交。在这些提交中的某个地方,我不小心向不应该在我的拉取请求中的文件提交了多个重构更改。我不希望为每个包含不需要的更改的文件一个一个地变基,这将是一件令人头疼和噩梦的事情,因为现在这文件中存在合并冲突,而且我知道我想撤消 all 我对特定文件的更改。

我只想创建一个提交,以恢复我在我不打算更改的文件中所做的所有更改。

解决方法

您似乎想要完全还原对目标文件的更改,并将它们重置为根提交中的状态(您用 HEAD~20 指向的那个状态)。

一个简单的方法是:

git checkout <that sha> -- file1 file2 file3 ...
# you can also checkout those files one by one,or if you have a list :
git checkout <that sha> -- $(cat list.txt)

# check the content,then run :
git commit
,

到目前为止,我拥有的最佳解决方案是从当前分支创建一个分支,软重置我所做的所有提交。

git checkout -b <newBranch> <currentBranch>
git reset --soft HEAD~20
git reset

暂存并提交不需要的文件。

git add <unwantedFile1>
git add <unwantedFile2>

然后提交这些更改,然后为这些更改创建一个还原提交。

git commit -m "Unwanted refactoring"
git log

然后复制该提交的 sha,然后创建一个还原提交:

git revert <sha>

然后复制该提交,然后切换回第一个分支并选择恢复提交。

git cherry-pick <revertSha>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。