Git 如何找出在特定文件中包含更改的拉取请求?

Git 如何找出在特定文件中包含更改的拉取请求?,git,github,Git,Github,在Github中使用大型开源存储库。有300多个请求(PR)等待队列合并到主分支 我想在文件中添加功能,在此之前,我需要确保不存在进行相同更改的PRs 那么,如何找出在特定文件中包含更改的请求呢?您可以尝试获取本地存储库中的所有PR分支,然后搜索修改文件的提交 要做到这一点,就要: 将项目存储库添加为上游远程 git远程添加上游https://github.com/[orga]/[project].git 打开.git\config文件,将行fetch=+refs/pull/*/head:ref

在Github中使用大型开源存储库。有300多个请求(PR)等待队列合并到主分支

我想在文件中添加功能,在此之前,我需要确保不存在进行相同更改的PRs


那么,如何找出在特定文件中包含更改的请求呢?

您可以尝试获取本地存储库中的所有PR分支,然后搜索修改文件的提交

要做到这一点,就要:

  • 将项目存储库添加为上游远程

    git远程添加上游https://github.com/[orga]/[project].git

  • 打开
    .git\config
    文件,将行
    fetch=+refs/pull/*/head:refs/remotes/upstream/pr/*
    添加到
    [upstream]
    部分。结果应该是这样的:

    [远程“源站”]
    fetch=+refs/heads/*:refs/remotes/origin/*
    url=https://github.com/[orga]/[project].git
    fetch=+refs/pull/*/head:refs/remotes/origin/pr/*

  • 执行一个git fetch--all来获取所有远程设备

  • 搜索所需文件的更新:

  • 或者更适合你的需要


    得到@Philippe和@knight9631的帮助,我得到了预期的结果

    先决条件 按照@Philippe回复中所述,进行上游
    变更

    $ git remote add upstream https://github.com/[orga]/[project].git
    
    # add fetch = +refs/pull/*/head:refs/remotes/origin/pr/* to .git/config in session origin
    
    $ git fetch --all
    
    获取尚未合并的相关PRs。 在脚本下面运行

    FILENAME=$1
    
    git log --all --format=%d $FILENAME|awk -F "[\/|\)]" '/pr/{print $3}' |sort -n |while read line
    do
      state=$(curl -s https://api.github.com/repos/ansible/ansible/pulls/$line|jq -r .state)
      if [[ $state == "open" ]]; then
        echo "PR $line hasn't been merged"
      fi
    done
    
    演示 笔记: 获取Github API时需要添加授权令牌。否则你会很容易击中目标


    令牌=“尝试Github API:并且,您可以过滤所有PRs,包括特定文件中的更改。谢谢,@Philippe。”。我遵循这些步骤,但没有得到预期的结果。只显示主分支。我应该把步骤2放在哪里
    upstream
    origin
    ?明白了,我使用这个命令
    git log--all--format=%d$FILENAME | grep pr
    来获取所有相关的pr编号,但无法识别哪个编号仍然处于打开状态(未合并或关闭)。我在您的帮助下工作。下一个问题是,在我获得PR编号后,如何显示该文件中每个打开的PR的更改?
    $ bash PR.sh abc.json
    
    PR 22857 hasn't been merged
    PR 19231 hasn't been merged
    PR 22981 hasn't been merged
    
    TOKEN="<your_own_token"
    
    state=$(curl -s -H "Authorization: token $TOKEN" https://api.github.com/repos/ansible/ansible/pulls/$line|jq -r .state)