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