我有3个修改文件(没有新文件)在拉请求的时刻。

我想从拉请求中删除其中一个文件,这样拉请求只包含对两个文件的更改,而第三个文件保持原始的、未受影响的状态。

我已经尝试了一些事情(检查文件的原始版本,等等……),但它仍然显示为一个更改的文件在PR。

有解决办法吗?


当前回答

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

以下是我的建议:

关闭PR,这样在你做出更改之前,任何审查它的人都不会把它拉进来。 在你不想要的更改之前对提交进行软重置(如果这是最后一次提交,你可以使用git reset—Soft HEAD^,或者如果是不同的提交,你会想要用提交id替换'HEAD^') 丢弃(或撤消)您不打算更新的文件的任何更改 创建一个新的提交git commit -c ORIG_HEAD Force Push到你的分支 重新打开拉请求

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

这里有一个Gits文档的链接,在撤消提交和重做下面有一个很好的例子。

其他回答

例如,您希望从branch1为文件file1、file2和file3创建PR。 现在您想从PR中删除file3。

Checkout your branch from which PR was created. git checkout branch1 Check commit history git log It will provide you with following details commit <some id 1> (origin/branch1, branch1) Author: abc Date: Tue Nov 2 16:47:03 2021 +0530 commit <some id 2> (origin/branch1, branch1) Author: abc1 Date: Tue Nov 1 16:47:03 2021 +0530 Look for commit id for commit made before your changes and checkout file3 with that commit id git checkout <some id 2> C:\Code\project\file3.java Then do git commit git add file3.java git commit -m "Removing file3 from PR" git push Check your PR, file3 should be removed now.

只需在GitHub web中拉请求,然后点击更多动作(…3点图标)文件>删除文件>提交到当前分支

切换到要还原文件的分支。

这是它的命令。

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

git checkout <remote>/<branch> -- <file_path_from_project_root_folder>.

对我来说,的确如此

git checkout origin/master -- .github/workflows/ci.yml

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

以下是我的建议:

关闭PR,这样在你做出更改之前,任何审查它的人都不会把它拉进来。 在你不想要的更改之前对提交进行软重置(如果这是最后一次提交,你可以使用git reset—Soft HEAD^,或者如果是不同的提交,你会想要用提交id替换'HEAD^') 丢弃(或撤消)您不打算更新的文件的任何更改 创建一个新的提交git commit -c ORIG_HEAD Force Push到你的分支 重新打开拉请求

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

这里有一个Gits文档的链接,在撤消提交和重做下面有一个很好的例子。

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

$ 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