我有3个修改文件(没有新文件)在拉请求的时刻。
我想从拉请求中删除其中一个文件,这样拉请求只包含对两个文件的更改,而第三个文件保持原始的、未受影响的状态。
我已经尝试了一些事情(检查文件的原始版本,等等……),但它仍然显示为一个更改的文件在PR。
有解决办法吗?
我有3个修改文件(没有新文件)在拉请求的时刻。
我想从拉请求中删除其中一个文件,这样拉请求只包含对两个文件的更改,而第三个文件保持原始的、未受影响的状态。
我已经尝试了一些事情(检查文件的原始版本,等等……),但它仍然显示为一个更改的文件在PR。
有解决办法吗?
当前回答
对于那些更喜欢UI解决方案而不是git命令的人… 您可以从主分支(或您要合并到的任何分支)下载未修改的文件,然后将其与修改后的文件一起粘贴到您的本地文件夹,有效地将其替换为未修改的版本。然后提交更改并将其推送。
其他回答
切换到创建拉请求的分支:
$ 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
对于刚接触git或使用Azure DevOps的人来说,这是一种简单的方法。
如果文件更改很简单,并且PR仍然打开,那么只需转到您的分支,将文件修改回最初的方式,然后提交并推送您的更改。您的PR应该更新,如果它与目标分支完全匹配,该文件将消失。
如果这是一个复杂的更改,做同样的事情,但你可能想要查看文件历史,复制以前的版本(在Windows上按Ctrl-A),覆盖你的开发分支的版本,然后提交和推送。
只需在GitHub web中拉请求,然后点击更多动作(…3点图标)文件>删除文件>提交到当前分支
你可能想要修改提交,然后执行强制推送,这将用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.