从pull请求中删除修改后的文件

jle*_*lee 66 git version-control github

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

我想从pull请求中删除其中一个文件,这样pull请求只包含对两个文件的更改,并使第三个文件保持原始的未触摸状态.

我已经尝试过几件事(检查文件的原始版本等等)但它仍然显示为PR中的已更改文件.

这个问题有方法解决吗?

Arp*_*wal 160

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

$ git checkout pull-request-branch
Run Code Online (Sandbox Code Playgroud)

使用另一个分支中的文件覆盖已修改的文件,让我们认为它是主文件:

git checkout origin/master -- src/main/java/HelloWorld.java
Run Code Online (Sandbox Code Playgroud)

提交并将其推送到远程:

git commit -m "Removed a modified file from pull request"
git push origin pull-request-branch
Run Code Online (Sandbox Code Playgroud)

  • 它是经过验证的解决方案,只需正确检查您的路径 (6认同)
  • 无法正常工作,向我显示错误:pathspec'{file / path.js}'与git已知的任何文件都不匹配。 (2认同)
  • 这适用于我实际上想要对其执行操作的文件周围的文件......所以我不认为它的路径有问题 (2认同)

Uma*_*har 37

切换到要恢复文件的那个分支。

这是它的命令。

只需选择文件将恢复到的远程和分支

git checkout <remote>/<branch> -- <file_path_from_project_root_folder>.
Run Code Online (Sandbox Code Playgroud)

就我而言,是

git checkout origin/master -- .github/workflows/ci.yml
Run Code Online (Sandbox Code Playgroud)


Kei*_*ken 8

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

以下是我建议你这样做的方法:

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

现在您的分支已更新,Pull Request将包含您的更改.

这里是 Gits文档的链接,在撤消提交和重做时,他们有一个很好的例子.


Chr*_*ing -5

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

您的拉取请求不“包含”任何内容,它只是一个标记,表示“请将这个分支合并到那个分支”。

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

就您而言,您可能需要修改您的提交。不确定你的确切情况,但交互式变基的一些组合add -p应该可以解决你的问题。