忽略拉请求差异中的特定文件,文件类型或文件夹

Bom*_*ley 22 git github pull-request

我们经常使用pull request上的Files Changed选项卡来查看我们在分支上完成的工作,遗憾的是我们开发过程的主要部分是重新生成Flex服务,因此在查看文件时,99%的更改都无关紧要.这使得很容易错过应该审核的重要更改.

我们知道这些重新生成的服务所在的文件夹,如果有帮助,我们可以在一次提交中提交所有重新更改.

有没有人有任何建议我们如何改进这个?理想情况下,我们会从pull request diff中排除一个文件夹.

pro*_*mer 16

Github 现在通过.gitattributes文件支持这一点。

  1. .gitattributes在存储库的根目录中创建一个文件。

  2. 使用 linguist-generated 属性来标记或取消标记您希望在存储库的语言统计中被忽略并默认隐藏在差异中的路径。

例如,要将 search/index.json 标记为生成的文件,请将此行添加到.gitattributes

search/index.json linguist-generated=true
Run Code Online (Sandbox Code Playgroud)

参考:https : //help.github.com/en/github/administering-a-repository/customizing-how-changed-files-appear-on-github

  • 对我来说,目录中标记为“语言学家生成”的所有文件都会弹出空内容(使用“加载差异”按钮)。这是预期行为还是预期文件不会出现在 PR 中? (3认同)
  • 谢谢!对于文件夹递归 - `folder/**/* linguist- generated=true`。 (2认同)
  • 我看到与@livinston 相同的行为,文件仍然显示在差异中,但您必须单击“加载差异”按钮才能查看内容。这对我的目的没有帮助,因为我想要排除的文件很大,所以无论如何它们都是这样显示的,而且我也希望它们从计数中排除。 (2认同)

Vin*_*sil 8

为了排除某个文件夹,我制作了一个棘手的脚本,您可以通过 DevTools 执行该脚本。

const fileElements = document.querySelectorAll("*[data-path*='vendor']")
fileElements.forEach(el => el.parentElement.remove())
Run Code Online (Sandbox Code Playgroud)

%vendor%在我的情况下,这将删除匹配的任何文件差异。


Pau*_*len 5

我知道这是一个老问题,但无论如何都想分享我的解决方案。作为 iOS 开发人员,我在更新使用 Carthage 获取的库时也会遇到这个问题。因此,在对拉取请求进行审查之前,我运行以下脚本:

document.querySelectorAll("*[data-path*='Carthage']").forEach( el => {
    const item = el.querySelectorAll("input[type=checkbox][name=viewed]:not(:checked)")[0]
    if ( typeof item !== "undefined" ) {
        setTimeout(function () {
            item.click()
        }, 1000)
    }
})
Run Code Online (Sandbox Code Playgroud)

在 Mac 上的 Safari 的控制台 (DevTools) 中运行它:CMD+ Option+ U。它将找到所有“已查看”未选中的复选框,用于文件Carthage路径中的文件并“单击”它们。此后,选择过滤器以不显示查看的文件。


bit*_*oiu 1

目前 GitHub 不支持从拉取请求中排除文件或文件夹的方法。

如果我在发送拉取请求时遇到这个问题,并且这给我的开发团队带来了痛苦,我只能想到以下几点:

目标是从差异中排除文件夹和文件,但同时您不希望在整个拉取请求准备好之前合并服务的更改。该解决方案并不理想,但您可以:

  1. 提交并推送您不感兴趣查看的文件夹 - 分支A
  2. 分支并提交您真正打算比较的文件 - 分支B
  3. B从to打开拉取请求A,您只会看到您感兴趣的内容。

我不喜欢这个建议的一些事情:

  • 您需要以某种方式自动执行此操作,否则将需要太多手动工作(bash 脚本?)
  • 如果您需要更改代码作为审查的一部分,则必须重复该过程,可能是因为您希望重新生成这些文件。这会破坏拉取请求的良好对话价值,您可以在其中看到更改的历史记录

也许有人对此有更好的流程,但我对向上游推送的分发文件也有同样的问题,我通过完全传递它们来处理它。不过我想你的用例比我的要棘手得多。

希望这会有所帮助,或者为其他用户提供一些开始的机会。