假设:
我正在处理一个项目,并且说我在table-settings
之外创建了一个分支master
。我将更改提交到三个文件:
plate.swift
bowl.swift
fork.swift
有人对我的拉取请求发表评论并说,"我们现在不需要对plate.swift
进行这些更改。
在github,命令行或源代码控制桌面应用程序上,有一种方法可以将提交或拉取请求中的所有更改还原为单个文件,返回到当时的状态我创建了分支?
是什么让它与"如何将文件还原到之前的提交",我想知道我是否可以还原已编辑并提交多个文件的文件时间,到我创建功能分支时所处的状态。
答案 0 :(得分:2)
评论中的重复链接基本上涵盖了您,但在这种情况下,我可能倾向于执行以下操作:
git checkout HEAD~1 path/to/plate.swift
这将在您创建分支之前将plate.swift
重置为之前的版本1修订版。然后你可以通过
git commit --amend
现在,您的提交将包含所有先前的更改减去对plate.swift
的更改,哪个文件将保持不变。然后,您必须使用此强制推送:
git push --force origin table-settings
需要强制推送的原因是因为我们已经重写了分支中的最后一次提交。但是对于审稿人来说,这种方法可能会很好,他们会看到一个与他们评论时非常相似的功能分支。
如果您的功能分支已经由审阅者签出,那么更安全的选择就是执行正常提交:
git commit -m 'reverted Plate.swift'
但我发现,当您最终不得不对拉取请求进行一些调整时,修改可能很有用,但是您不希望通过许多提交来修改分支的历史记录。
答案 1 :(得分:1)
如果你想让它进入一个主人的状态,那么从你的分支开始跟随
git checkout master -- /path/to/plate.swift
上面的命令将使它成为一个状态,即在master中。然后提交并正常推送。 e.g。
git commit -m 'reverting not-required changes'
git push;
谢谢!