从pull请求中删除一个修改过的文件

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

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

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

有解决办法吗?

204899 次浏览

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

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

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

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

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

以下是我的建议:

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

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

这是是一个到Gits文档的链接,他们在撤销提交并重做下有一个很好的例子。

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

$ 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

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

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

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

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

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

这是它的命令。

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

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

对我来说,的确如此

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

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

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

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

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

  1. 检出创建PR的分支。 Git checkout branch1

  2. 查看提交历史 git日志 它将为您提供以下详细信息

    commit <(来源/ branch1 branch1) 作者:美国广播公司(abc) 日期:11月2日星期二16:47:03 2021 +0530

    commit <(来源/ branch1 branch1) 作者:他们 日期:11月1日星期二16:47:03 2021 +0530

  3. 查找在您的更改之前提交的提交id,并使用该提交id签出file3 Git checkout <一些id 2>C: \项目代码\ \ file3.java < / p >

  4. Git添加file3.java git commit -m "从PR"中删除file3; git push < / p >

  5. 检查你的PR, file3现在应该被删除了。

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

Delete File .

Commit changes to branch