我有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.

pull请求就是将一个分支合并到另一个分支的请求。

你的pull请求不“包含”任何东西,它只是一个标记说“请将这个分支合并到那个分支”。

PR在web UI中显示的变化集只是目标分支和你的特性分支之间的变化。要修改你的pull请求,你必须修改你的特征分支,可能需要用力推到特征分支。

在您的情况下,您可能需要修改提交。不确定您的确切情况,但一些交互式rebase和add -p的组合应该会帮您解决问题。

从pull请求中删除文件,但不从本地存储库中删除文件。

使用以下命令转到您创建请求的分支

Git checkout——c:\temp..... 下一个 Git checkout origin/master——c:\temp…U替换原点/主与任何其他分支。 下一个 Git提交-m c:\temp..... 下一个 Git推源

注意:文件路径没有单引号或双引号

对于刚接触git或使用Azure DevOps的人来说,这是一种简单的方法。

如果文件更改很简单,并且PR仍然打开,那么只需转到您的分支,将文件修改回最初的方式,然后提交并推送您的更改。您的PR应该更新,如果它与目标分支完全匹配,该文件将消失。

如果这是一个复杂的更改,做同样的事情,但你可能想要查看文件历史,复制以前的版本(在Windows上按Ctrl-A),覆盖你的开发分支的版本,然后提交和推送。

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

这是它的命令。

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

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

对我来说,的确如此

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