从拉取请求中删除已修改的文件


102

我目前在请求请求中有3个修改过的文件(没有新文件)。

我想从拉取请求中删除其中一个文件,以便拉取请求仅包含对两个文件的更改,并使第三个文件保持其原始的原始状态。

我尝试了几件事(签出文件的原始版本等),但在PR中它仍显示为更改后的文件。

有针对这个的解决方法吗?


如果对文件的修改是在其自己的提交中进行的,则可以进行交互性变基,并删除影响想要更改为不变的文件的提交,然后强制将其推送到分支。Github应该自动检测到。
Dentych '16

Answers:


238

切换到创建拉取请求的分支:

$ git checkout pull-request-branch

用另一个分支中的文件覆盖修改后的文件,让我们将其视为主文件

git checkout origin/master -- src/main/java/HelloWorld.java

提交并推送到远程:

git commit -m "Removed a modified file from pull request"
git push origin pull-request-branch

4
无法正常工作,向我显示错误:pathspec'{file / path.js}'与git已知的任何文件都不匹配。
raftaar1191

8
它正在工作,并且行之有效的解决方案只是正确地检查您的路径
Pavan T

2
这适用于我实际上要对其执行操作的文件周围的文件...因此,我不认为路径存在问题
Tim Boland

使用这种方法,您将覆盖文件,因此您将丢失对该文件所做的工作,对吧?您不能将其保留用于另一个分支和/或另一个PR吗?
欧内斯特·琼斯

1
@ArpitAggarwal,这工作正常。非常感谢。
Chaklader Asfak Arefe

10

您可能想要修改提交,然后执行强制推送,这将使用PR更新分支。

我建议您这样做的方式如下:

  1. 关闭PR,以便任何人在进行更改之前都无法将其拉入。
  2. 在您不想要的更改之前对提交进行软重置(如果这是您可以使用的最后一个提交,git reset --soft HEAD^或者如果它是不同的提交,则需要用提交ID替换“ HEAD ^”)
  3. 放弃(或撤消)您不打算更新的文件更改
  4. 进行新的提交 git commit -a -c ORIG_HEAD
  5. 强制推送到您的分支
  6. 重新打开拉取请求

现在您的分支已经更新,“拉取请求”将包括您的更改。

这是 Gits文档的链接,其中在撤消提交和重做下有一个很好的示例。


-5

拉取请求就是这样:将一个分支合并到另一个分支的请求。

您的拉取请求没有“包含”任何内容,只是一个标记,上面写着“请将此分支合并到那个分支中”。

PR在Web UI中显示的一组更改只是目标分支和功能分支之间的更改。要修改您的拉取请求,您必须修改功能分支,可能要强行推入功能分支。

在您的情况下,您可能需要修改提交。不确定您的确切情况,但结合一些交互式基础,add -p应该可以解决您的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.