我目前在拉取请求中有3个已修改的文件(没有新文件)。
我想从pull请求中删除其中一个文件,因此pull请求只包含对两个文件的更改,并使第三个处于原始的未触摸状态。
我尝试过几件事(检查文件的原始版本等等)但它仍然显示为PR中的已更改文件。
有解决方法吗?
答案 0 :(得分:119)
切换到您从中创建拉取请求的分支:
$ git checkout pull-request-branch
用另一个分支中的文件覆盖修改过的文件,让我们考虑一下 master :
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
答案 1 :(得分:7)
您可能希望修改提交,然后执行强制推送,这将使用PR更新分支。
我建议你这样做:
git reset --soft HEAD^
,或者如果它是不同的提交,则您需要替换' HEAD ^ '使用提交ID)git commit -a -c ORIG_HEAD
现在您的分支已更新,Pull Request将包含您的更改。
Here's指向Gits文档的链接,他们在撤消提交和重做下有一个非常好的示例。
答案 2 :(得分:2)
切换到您从中创建拉取请求的功能分支:
示例:$ git checkout pull-request-branch
用另一个分支中的文件覆盖修改后的文件:
$git checkout origin/master -- src/main/java/HelloWorld.java
提交并推送到远程:
$git commit -m "removed a modified file from PR"
$git push
答案 3 :(得分:0)
拉取请求只是:将一个分支合并到另一个分支的请求。
您的提款请求不包含"什么,它只是一个标记说"请将这个分支合并到那个"。
PR在Web UI中显示的一组更改只是目标分支和功能分支之间的更改。要修改拉取请求,您必须修改功能分支,可能需要强制推送到功能分支。
在您的情况下,您可能想要修改您的提交。不确定您的确切情况,但是交互式rebase和add -p
的某些组合应该让您解决。
答案 4 :(得分:0)
从拉取请求中删除文件,但从本地存储库中删除文件。
git checkout-c:\ temp ..... 下一个 git checkout origin / master-c:\ temp ... u用任何其他分支替换origin / master。 下一个 git commit -m c:\ temp ..... 下一个 git push来源
注意:文件路径没有单引号或双引号
答案 5 :(得分:0)
切换到要还原文件的那个分支。
这是它的命令。
只需要选择你的文件要恢复到的远程和分支
git <remote>/<branch> -- <file_path_from_project_root_folder>.
就我而言,它是
git checkout origin/master -- .github/workflows/ci.yml