Git gh CLI - 브랜치 관리와 PR 상태 확인

Git CLI와 GitHub CLI인 gh를 함께 쓰면 브라우저를 열지 않고도 풀 리퀘스트 상태, 브랜치 ahead/behind 상태, 원격 브랜치 목록, 병합 후 브랜치 정리까지 터미널에서 처리할 수 있다.
표준 Git은 커밋 이력과 브랜치를 다루고, gh는 GitHub의 PR, 리뷰, CI 상태 같은 플랫폼 정보를 다룬다. 두 도구의 역할을 나누어 쓰면 로컬 Git 상태와 GitHub PR 상태를 함께 관리하기 쉽다.
1. 터미널에서 PR 상태 확인하기
GitHub CLI가 설치되어 있고 로그인되어 있다면 gh pr list로 PR 목록을 확인한다. 공식 문서 기준으로 gh pr list는 기본적으로 열린 PR만 표시하고, --state로 open, closed, merged, all을 지정할 수 있다.
gh auth status
gh pr list
상태별 조회:
# 열린 PR만 보기
gh pr list
gh pr list --state open
# 닫힌 PR만 보기
gh pr list --state closed
# 병합된 PR만 보기
gh pr list --state merged
# 전체 PR 보기
gh pr list --state all
내가 작성한 PR만 보고 싶다면:
gh pr list --author "@me"
현재 브랜치와 연결된 PR의 상태를 보고 싶다면:
gh pr status
gh pr status는 내가 만든 PR, 나에게 리뷰 요청된 PR, 현재 브랜치와 연결된 PR 정보를 한 번에 보여준다. 공식 문서에 따르면 PR 번호, 제목, CI checks, 리뷰 상태 같은 요약 정보도 함께 확인할 수 있다.
2. GitLab에서는 glab 사용
GitLab은 PR 대신 MR, 즉 Merge Request라는 용어를 쓴다. GitLab CLI인 glab을 사용하면 비슷한 방식으로 조회할 수 있다.
# 열린 MR 보기
glab mr list
# 닫힌 MR 보기
glab mr list --closed
# 병합된 MR 보기
glab mr list --merged
# 닫힌 MR과 병합된 MR까지 포함해 보기
glab mr list --all
주의할 점은 gh pr list는 --state를 쓰지만, 현재 GitLab CLI 공식 문서의 glab mr list는 --closed, --merged, --all 같은 플래그를 쓴다는 점이다.
3. 브랜치가 뒤처졌는지 확인하기
브랜치 비교 전에는 원격 저장소의 최신 상태를 먼저 가져온다.
git fetch --all
현재 체크아웃한 브랜치가 원격 추적 브랜치보다 뒤처졌는지 확인한다.
git status
예시 메시지:
Your branch is behind 'origin/main' by 3 commits.
이 메시지가 나오면 현재 브랜치가 원격 기준 브랜치보다 뒤처진 상태다.
4. 두 브랜치의 커밋 차이 확인하기
my-feature 브랜치에는 없고 main에는 있는 커밋을 확인한다.
git log my-feature..main --oneline
결과가 출력되면 my-feature가 main보다 뒤처진 것이다. 아무것도 출력되지 않으면 해당 방향의 누락 커밋은 없다.
정확한 개수만 보고 싶다면:
git rev-list --count my-feature..main
Ahead와 behind를 한 번에 보고 싶다면 ... 문법과 --left-right --count를 같이 쓴다.
git rev-list --left-right --count my-feature...main
출력 예시:
1 3
my-feature...main 기준으로 첫 번째 숫자는 my-feature에만 있는 커밋 수이고, 두 번째 숫자는 main에만 있는 커밋 수다. 즉 위 예시는 내 브랜치가 1개 커밋 앞서 있고, 3개 커밋 뒤처진 상태다.
5. gh로 GitHub PR 상태 확인하기
표준 Git은 GitHub의 리뷰 상태나 CI 상태를 알지 못한다. GitHub PR의 실제 병합 가능 상태는 gh로 확인하는 편이 좋다.
현재 브랜치의 PR 상태를 본다.
gh pr status
PR의 merge state만 확인한다.
gh pr view --json mergeStateStatus --jq .mergeStateStatus
gh pr view는 인자를 주지 않으면 현재 브랜치에 연결된 PR을 표시한다. JSON 필드에는 mergeStateStatus, mergeable, reviewDecision, statusCheckRollup 등이 포함되어 있으므로 필요한 상태만 뽑아볼 수 있다.
결과가 BEHIND라면 GitHub 웹 UI에서 보이는 “This branch is out-of-date” 상태에 가깝다. 베이스 브랜치에 새 커밋이 생겨 PR 브랜치가 뒤처진 것이다.
6. gh로 PR 브랜치 업데이트하기
PR 브랜치가 베이스 브랜치보다 뒤처졌다면 gh pr update-branch로 업데이트할 수 있다.
gh pr update-branch
리베이스 방식으로 업데이트하려면:
gh pr update-branch --rebase
공식 문서 기준으로 gh pr update-branch는 인자를 생략하면 현재 브랜치에 연결된 PR을 선택한다. 기본 동작은 베이스 브랜치를 PR 브랜치에 merge commit으로 반영하는 것이고, --rebase를 붙이면 최신 베이스 브랜치 위로 rebase한다.
다만 저장소의 branch protection, 권한, merge queue 설정에 따라 동작이 제한될 수 있다.
7. 원격 브랜치 조회하기
원격 브랜치만 나열한다.
git branch -r
로컬과 원격 브랜치를 모두 나열한다.
git branch -a
로컬에 fetch하지 않고 원격 서버의 브랜치 목록을 직접 조회한다.
git ls-remote --heads origin
8. 원격에서 삭제된 브랜치 흔적 정리하기
GitHub에서 PR이 병합되고 원격 브랜치가 삭제되어도 로컬에는 origin/branch-name 형태의 추적 정보가 남을 수 있다. 이런 원격 추적 브랜치 흔적은 prune으로 정리한다.
git fetch --prune
Git 공식 문서에서 git fetch --prune은 원격에 더 이상 존재하지 않는 remote-tracking reference를 fetch 전에 제거한다고 설명한다.
매번 git fetch할 때 자동으로 prune되게 설정하려면:
git config --global fetch.prune true
9. 병합 완료된 로컬 브랜치 정리하기
먼저 기준 브랜치로 이동하고 최신 상태를 가져온다.
git checkout main
git pull origin main
삭제 대상이 될 병합 완료 브랜치를 먼저 확인한다.
git branch --merged | grep -v "^\\*" | grep -v "main" | grep -v "master"
문제가 없을 때만 삭제한다.
git branch --merged | grep -v "^\\*" | grep -v "main" | grep -v "master" | xargs git branch -d
팀에서 develop, staging, release/* 같은 장기 브랜치를 쓴다면 삭제 제외 목록에 추가해야 한다.
요약
| 작업 | 추천 명령 |
|---|---|
| 열린 PR 확인 | gh pr list |
| 내 PR 확인 | gh pr list --author "@me" |
| 현재 PR 상태 확인 | gh pr status |
| GitHub merge state 확인 | gh pr view --json mergeStateStatus --jq .mergeStateStatus |
| PR 브랜치 업데이트 | gh pr update-branch |
| 원격 최신 상태 가져오기 | git fetch --all |
| 브랜치 behind 확인 | git log my-feature..main --oneline |
| ahead/behind 개수 확인 | git rev-list --left-right --count my-feature...main |
| 원격 브랜치 목록 | git branch -r |
| 원격 추적 브랜치 정리 | git fetch --prune |
표준 Git은 커밋과 브랜치의 실제 이력을 확인할 때 적합하고, GitHub CLI는 PR 상태, 리뷰, CI, 브랜치 업데이트처럼 GitHub 플랫폼과 연결된 작업에 적합하다.
참고한 공식 문서

When you use Git CLI together with GitHub CLI, gh, you can handle pull request status, branch ahead/behind state, remote branch lists, and post-merge branch cleanup from the terminal without opening a browser.
Standard Git manages commit history and branches, while gh handles GitHub platform information such as PRs, reviews, and CI status. Separating the roles of the two tools makes it easier to manage both local Git state and GitHub PR state.
1. Check PR status from the terminal
If GitHub CLI is installed and authenticated, use gh pr list to view pull requests. According to the official documentation, gh pr list shows open PRs by default, and --state can be set to open, closed, merged, or all.
gh auth status
gh pr list
Query by state:
# Open PRs only
gh pr list
gh pr list --state open
# Closed PRs only
gh pr list --state closed
# Merged PRs only
gh pr list --state merged
# All PRs
gh pr list --state all
To see only PRs authored by you:
gh pr list --author "@me"
To see the status of the PR connected to the current branch:
gh pr status
gh pr status shows PRs you created, PRs requesting your review, and PR information connected to the current branch in one place. The official documentation says it also summarizes details such as PR number, title, CI checks, and reviews.
2. Use glab for GitLab
GitLab uses MR, or Merge Request, instead of PR. With GitLab CLI, glab, you can inspect merge requests in a similar way.
# Open MRs
glab mr list
# Closed MRs
glab mr list --closed
# Merged MRs
glab mr list --merged
# Include closed and merged MRs
glab mr list --all
One important difference is that gh pr list uses --state, while the current official glab mr list documentation uses flags such as --closed, --merged, and --all.
3. Check whether a branch is behind
Before comparing branches, fetch the latest state from the remote repository.
git fetch --all
Check whether the currently checked-out branch is behind its remote tracking branch.
git status
Example message:
Your branch is behind 'origin/main' by 3 commits.
If this message appears, the current branch is behind the remote base branch.
4. Compare commits between two branches
Check commits that exist in main but not in my-feature.
git log my-feature..main --oneline
If output appears, my-feature is behind main. If nothing appears, there are no missing commits in that direction.
If you only want the exact count:
git rev-list --count my-feature..main
To see ahead and behind at the same time, use the ... syntax with --left-right --count.
git rev-list --left-right --count my-feature...main
Example output:
1 3
For my-feature...main, the first number is the number of commits only in my-feature, and the second number is the number of commits only in main. In this example, your branch is ahead by 1 commit and behind by 3 commits.
5. Check GitHub PR state with gh
Standard Git does not know GitHub review status or CI status. For the actual merge readiness of a GitHub PR, it is better to use gh.
View the PR status for the current branch.
gh pr status
Check only the merge state of the PR.
gh pr view --json mergeStateStatus --jq .mergeStateStatus
When no argument is provided, gh pr view displays the PR connected to the current branch. Its JSON fields include mergeStateStatus, mergeable, reviewDecision, and statusCheckRollup, so you can extract only the state you need.
If the result is BEHIND, it is close to the "This branch is out-of-date" state shown in the GitHub web UI. New commits have landed on the base branch, so the PR branch is behind.
6. Update a PR branch with gh
If a PR branch is behind the base branch, update it with gh pr update-branch.
gh pr update-branch
To update by rebasing:
gh pr update-branch --rebase
According to the official documentation, gh pr update-branch selects the PR connected to the current branch when no argument is provided. By default, it updates the PR branch with a merge commit from the base branch. With --rebase, it rebases the PR branch on top of the latest base branch.
The behavior may be limited by branch protection, permissions, or merge queue settings in the repository.
7. List remote branches
List only remote branches.
git branch -r
List both local and remote branches.
git branch -a
Query branch heads directly from the remote server without fetching them into local references.
git ls-remote --heads origin
8. Clean up remote-tracking branches deleted on the remote
Even after a PR is merged on GitHub and the remote branch is deleted, local remote-tracking references such as origin/branch-name can remain. Clean those references with prune.
git fetch --prune
The official Git documentation explains that git fetch --prune removes remote-tracking references that no longer exist on the remote before fetching.
To prune automatically on every git fetch:
git config --global fetch.prune true
9. Clean up merged local branches
First move to the base branch and update it.
git checkout main
git pull origin main
Preview merged branches that may be deleted.
git branch --merged | grep -v "^\\*" | grep -v "main" | grep -v "master"
Delete only when the list looks correct.
git branch --merged | grep -v "^\\*" | grep -v "main" | grep -v "master" | xargs git branch -d
If your team uses long-lived branches such as develop, staging, or release/*, add them to the exclusion list.
Summary
| Task | Recommended command |
|---|---|
| Check open PRs | gh pr list |
| Check my PRs | gh pr list --author "@me" |
| Check current PR status | gh pr status |
| Check GitHub merge state | gh pr view --json mergeStateStatus --jq .mergeStateStatus |
| Update PR branch | gh pr update-branch |
| Fetch latest remote state | git fetch --all |
| Check branch behind state | git log my-feature..main --oneline |
| Count ahead/behind commits | git rev-list --left-right --count my-feature...main |
| List remote branches | git branch -r |
| Clean remote-tracking branches | git fetch --prune |
Standard Git is best for checking real commit and branch history. GitHub CLI is best for work connected to the GitHub platform, such as PR status, reviews, CI, and branch updates.
Official references

把 Git CLI 和 GitHub CLI gh 一起使用,就可以不用打开浏览器,在终端里处理 Pull Request 状态、分支 ahead/behind 状态、远程分支列表,以及合并后的分支清理。
标准 Git 负责提交历史和分支,gh 负责 GitHub 平台上的 PR、Review、CI 状态等信息。把两个工具的角色分开使用,就能更容易同时管理本地 Git 状态和 GitHub PR 状态。
1. 在终端确认 PR 状态
如果已经安装 GitHub CLI 并完成登录,可以用 gh pr list 查看 PR 列表。根据官方文档,gh pr list 默认只显示打开的 PR,并且可以用 --state 指定 open、closed、merged、all。
gh auth status
gh pr list
按状态查询:
# 只查看打开的 PR
gh pr list
gh pr list --state open
# 只查看关闭的 PR
gh pr list --state closed
# 只查看已合并的 PR
gh pr list --state merged
# 查看全部 PR
gh pr list --state all
如果只想查看自己创建的 PR:
gh pr list --author "@me"
如果想查看当前分支关联的 PR 状态:
gh pr status
gh pr status 会同时显示自己创建的 PR、请求自己 Review 的 PR,以及当前分支关联的 PR 信息。官方文档说明,它也会汇总 PR 编号、标题、CI checks、Review 等信息。
2. GitLab 使用 glab
GitLab 不使用 PR,而是使用 MR,也就是 Merge Request。使用 GitLab CLI glab,也可以用类似方式查询。
# 查看打开的 MR
glab mr list
# 查看关闭的 MR
glab mr list --closed
# 查看已合并的 MR
glab mr list --merged
# 包含关闭和已合并的 MR
glab mr list --all
需要注意的是,gh pr list 使用 --state,而当前 GitLab CLI 官方文档中的 glab mr list 使用的是 --closed、--merged、--all 等 flag。
3. 确认分支是否落后
比较分支之前,先获取远程仓库的最新状态。
git fetch --all
确认当前 checkout 的分支是否落后于远程跟踪分支。
git status
示例消息:
Your branch is behind 'origin/main' by 3 commits.
如果出现这条消息,说明当前分支落后于远程基准分支。
4. 查看两个分支的提交差异
查看 main 中有、但 my-feature 中没有的提交。
git log my-feature..main --oneline
如果有输出,说明 my-feature 落后于 main。如果没有输出,说明这个方向上没有缺失提交。
如果只想看准确数量:
git rev-list --count my-feature..main
如果想同时查看 ahead 和 behind,可以把 ... 语法与 --left-right --count 一起使用。
git rev-list --left-right --count my-feature...main
输出示例:
1 3
以 my-feature...main 为基准,第一个数字是只存在于 my-feature 的提交数,第二个数字是只存在于 main 的提交数。上面的例子表示你的分支领先 1 个提交,同时落后 3 个提交。
5. 用 gh 确认 GitHub PR 状态
标准 Git 不知道 GitHub 上的 Review 状态或 CI 状态。要确认 GitHub PR 的实际可合并状态,最好使用 gh。
查看当前分支的 PR 状态。
gh pr status
只查看 PR 的 merge state。
gh pr view --json mergeStateStatus --jq .mergeStateStatus
gh pr view 在不传参数时,会显示当前分支关联的 PR。它的 JSON 字段包含 mergeStateStatus、mergeable、reviewDecision、statusCheckRollup 等,因此可以只抽取需要的状态。
如果结果是 BEHIND,就接近 GitHub Web UI 中的 “This branch is out-of-date” 状态。也就是说,base 分支有了新的提交,PR 分支已经落后。
6. 用 gh 更新 PR 分支
如果 PR 分支落后于 base 分支,可以用 gh pr update-branch 更新。
gh pr update-branch
如果想用 rebase 方式更新:
gh pr update-branch --rebase
根据官方文档,gh pr update-branch 在不传参数时,会选择当前分支关联的 PR。默认行为是通过 merge commit 把 base 分支合入 PR 分支;添加 --rebase 后,会把 PR 分支 rebase 到最新 base 分支之上。
不过,仓库的 branch protection、权限、merge queue 设置可能会限制该命令的行为。
7. 查看远程分支
只列出远程分支。
git branch -r
同时列出本地和远程分支。
git branch -a
不 fetch 到本地引用,直接查询远程服务器的分支列表。
git ls-remote --heads origin
8. 清理远程已删除分支的本地痕迹
即使 GitHub 上的 PR 已合并并删除了远程分支,本地仍可能残留 origin/branch-name 这种远程跟踪引用。可以用 prune 清理这些引用。
git fetch --prune
Git 官方文档说明,git fetch --prune 会在 fetch 前删除远程上已经不存在的 remote-tracking reference。
如果想每次 git fetch 时自动 prune:
git config --global fetch.prune true
9. 清理已合并的本地分支
先切换到基准分支并更新。
git checkout main
git pull origin main
先预览可能被删除的已合并分支。
git branch --merged | grep -v "^\\*" | grep -v "main" | grep -v "master"
确认列表没有问题后再删除。
git branch --merged | grep -v "^\\*" | grep -v "main" | grep -v "master" | xargs git branch -d
如果团队使用 develop、staging、release/* 等长期分支,要把它们加入排除列表。
总结
| 任务 | 推荐命令 |
|---|---|
| 查看打开的 PR | gh pr list |
| 查看我的 PR | gh pr list --author "@me" |
| 查看当前 PR 状态 | gh pr status |
| 查看 GitHub merge state | gh pr view --json mergeStateStatus --jq .mergeStateStatus |
| 更新 PR 分支 | gh pr update-branch |
| 获取远程最新状态 | git fetch --all |
| 查看分支 behind | git log my-feature..main --oneline |
| 统计 ahead/behind 提交数 | git rev-list --left-right --count my-feature...main |
| 查看远程分支列表 | git branch -r |
| 清理远程跟踪分支 | git fetch --prune |
标准 Git 适合确认真实的提交和分支历史。GitHub CLI 适合处理 PR 状态、Review、CI、分支更新等与 GitHub 平台连接的工作。
参考的官方文档

Git CLI と GitHub CLI の gh を組み合わせると、ブラウザを開かなくても、Pull Request の状態、ブランチの ahead/behind、リモートブランチ一覧、マージ後のブランチ整理までターミナルで処理できる。
標準の Git はコミット履歴とブランチを扱い、gh は GitHub の PR、レビュー、CI 状態のようなプラットフォーム情報を扱う。2つの役割を分けて使うと、ローカルの Git 状態と GitHub PR 状態を一緒に管理しやすい。
1. ターミナルでPR状態を確認する
GitHub CLI がインストールされ、認証済みであれば、gh pr list で PR 一覧を確認できる。公式ドキュメントによると、gh pr list はデフォルトで開いている PR だけを表示し、--state で open、closed、merged、all を指定できる。
gh auth status
gh pr list
状態別の確認:
# 開いているPRだけを見る
gh pr list
gh pr list --state open
# 閉じたPRだけを見る
gh pr list --state closed
# マージ済みPRだけを見る
gh pr list --state merged
# すべてのPRを見る
gh pr list --state all
自分が作成した PR だけを見たい場合:
gh pr list --author "@me"
現在のブランチに紐づく PR の状態を見たい場合:
gh pr status
gh pr status は、自分が作成した PR、自分にレビュー依頼された PR、現在のブランチに紐づく PR 情報をまとめて表示する。公式ドキュメントでは、PR 番号、タイトル、CI checks、レビュー状態などの要約情報も確認できると説明されている。
2. GitLab では glab を使う
GitLab では PR ではなく MR、つまり Merge Request という用語を使う。GitLab CLI の glab を使えば、似た流れで確認できる。
# 開いているMRを見る
glab mr list
# 閉じたMRを見る
glab mr list --closed
# マージ済みMRを見る
glab mr list --merged
# 閉じたMRとマージ済みMRも含めて見る
glab mr list --all
注意点として、gh pr list は --state を使うが、現在の GitLab CLI 公式ドキュメントの glab mr list は --closed、--merged、--all のようなフラグを使う。
3. ブランチが遅れているか確認する
ブランチを比較する前に、まずリモートリポジトリの最新状態を取得する。
git fetch --all
現在 checkout しているブランチが、リモート追跡ブランチより遅れているか確認する。
git status
表示例:
Your branch is behind 'origin/main' by 3 commits.
このメッセージが出れば、現在のブランチはリモートの基準ブランチより遅れている。
4. 2つのブランチのコミット差分を確認する
my-feature ブランチにはなく、main にはあるコミットを確認する。
git log my-feature..main --oneline
結果が表示されれば、my-feature は main より遅れている。何も表示されなければ、その方向の不足コミットはない。
正確な数だけ見たい場合:
git rev-list --count my-feature..main
Ahead と behind を同時に見たい場合は、... 構文と --left-right --count を組み合わせる。
git rev-list --left-right --count my-feature...main
出力例:
1 3
my-feature...main を基準にすると、最初の数字は my-feature にだけあるコミット数、2つ目の数字は main にだけあるコミット数だ。つまりこの例では、自分のブランチが1コミット進んでいて、3コミット遅れている。
5. gh で GitHub PR 状態を確認する
標準の Git は GitHub のレビュー状態や CI 状態を知らない。GitHub PR の実際のマージ可能状態は、gh で確認するほうがよい。
現在のブランチの PR 状態を見る。
gh pr status
PR の merge state だけを確認する。
gh pr view --json mergeStateStatus --jq .mergeStateStatus
gh pr view は、引数なしで実行すると現在のブランチに紐づく PR を表示する。JSON フィールドには mergeStateStatus、mergeable、reviewDecision、statusCheckRollup などが含まれるため、必要な状態だけを取り出せる。
結果が BEHIND なら、GitHub の Web UI に表示される “This branch is out-of-date” に近い状態だ。ベースブランチに新しいコミットが入り、PR ブランチが遅れている。
6. gh で PR ブランチを更新する
PR ブランチがベースブランチより遅れている場合は、gh pr update-branch で更新できる。
gh pr update-branch
rebase 方式で更新したい場合:
gh pr update-branch --rebase
公式ドキュメントによると、gh pr update-branch は引数を省略すると現在のブランチに紐づく PR を選択する。デフォルトではベースブランチを PR ブランチに merge commit として反映し、--rebase を付けると最新のベースブランチ上に rebase する。
ただし、リポジトリの branch protection、権限、merge queue の設定によっては動作が制限される場合がある。
7. リモートブランチを確認する
リモートブランチだけを表示する。
git branch -r
ローカルとリモートの両方のブランチを表示する。
git branch -a
ローカルに fetch せず、リモートサーバー上のブランチ一覧を直接問い合わせる。
git ls-remote --heads origin
8. リモートで削除されたブランチの痕跡を整理する
GitHub で PR がマージされ、リモートブランチが削除されても、ローカルには origin/branch-name のようなリモート追跡参照が残ることがある。このような参照は prune で整理する。
git fetch --prune
Git 公式ドキュメントでは、git fetch --prune は fetch の前に、リモートに存在しなくなった remote-tracking reference を削除すると説明されている。
毎回 git fetch のたびに自動で prune したい場合:
git config --global fetch.prune true
9. マージ済みローカルブランチを整理する
まず基準ブランチに移動し、最新状態にする。
git checkout main
git pull origin main
削除対象になり得るマージ済みブランチを先に確認する。
git branch --merged | grep -v "^\\*" | grep -v "main" | grep -v "master"
問題がない場合だけ削除する。
git branch --merged | grep -v "^\\*" | grep -v "main" | grep -v "master" | xargs git branch -d
チームで develop、staging、release/* のような長期ブランチを使っている場合は、除外リストに追加する必要がある。
まとめ
| 作業 | 推奨コマンド |
|---|---|
| 開いているPRを確認 | gh pr list |
| 自分のPRを確認 | gh pr list --author "@me" |
| 現在のPR状態を確認 | gh pr status |
| GitHub merge state を確認 | gh pr view --json mergeStateStatus --jq .mergeStateStatus |
| PRブランチを更新 | gh pr update-branch |
| リモートの最新状態を取得 | git fetch --all |
| ブランチの behind を確認 | git log my-feature..main --oneline |
| ahead/behind 数を確認 | git rev-list --left-right --count my-feature...main |
| リモートブランチ一覧 | git branch -r |
| リモート追跡ブランチを整理 | git fetch --prune |
標準の Git は、コミットとブランチの実際の履歴を確認するときに向いている。GitHub CLI は、PR 状態、レビュー、CI、ブランチ更新のように GitHub プラットフォームと結びついた作業に向いている。
参考にした公式ドキュメント

Si usas Git CLI junto con GitHub CLI, gh, puedes revisar el estado de pull requests, el estado ahead/behind de ramas, la lista de ramas remotas y la limpieza de ramas después de un merge directamente desde la terminal, sin abrir el navegador.
Git estándar se encarga del historial de commits y las ramas, mientras que gh maneja información de la plataforma GitHub, como PRs, revisiones y estado de CI. Separar el papel de ambas herramientas facilita gestionar a la vez el estado local de Git y el estado de PRs en GitHub.
1. Revisar el estado de PR desde la terminal
Si GitHub CLI está instalado y autenticado, usa gh pr list para ver la lista de PRs. Según la documentación oficial, gh pr list muestra por defecto solo PRs abiertos, y --state permite especificar open, closed, merged o all.
gh auth status
gh pr list
Consulta por estado:
# Ver solo PRs abiertos
gh pr list
gh pr list --state open
# Ver solo PRs cerrados
gh pr list --state closed
# Ver solo PRs fusionados
gh pr list --state merged
# Ver todos los PRs
gh pr list --state all
Si quieres ver solo PRs creados por ti:
gh pr list --author "@me"
Si quieres ver el estado del PR conectado a la rama actual:
gh pr status
gh pr status muestra en un solo lugar los PRs que creaste, los PRs que solicitan tu revisión y la información del PR conectado a la rama actual. La documentación oficial indica que también resume datos como número de PR, título, CI checks y revisiones.
2. En GitLab usa glab
GitLab usa MR, es decir Merge Request, en lugar de PR. Con GitLab CLI, glab, puedes consultar merge requests de una forma parecida.
# Ver MRs abiertos
glab mr list
# Ver MRs cerrados
glab mr list --closed
# Ver MRs fusionados
glab mr list --merged
# Incluir MRs cerrados y fusionados
glab mr list --all
La diferencia importante es que gh pr list usa --state, mientras que la documentación oficial actual de glab mr list usa flags como --closed, --merged y --all.
3. Comprobar si una rama está atrasada
Antes de comparar ramas, trae primero el estado más reciente del repositorio remoto.
git fetch --all
Comprueba si la rama actualmente checkout está atrasada respecto a su rama remota de seguimiento.
git status
Mensaje de ejemplo:
Your branch is behind 'origin/main' by 3 commits.
Si aparece este mensaje, la rama actual está atrasada respecto a la rama base remota.
4. Ver diferencias de commits entre dos ramas
Comprueba los commits que existen en main pero no en my-feature.
git log my-feature..main --oneline
Si hay salida, my-feature está atrasada respecto a main. Si no aparece nada, no hay commits faltantes en esa dirección.
Si solo quieres el conteo exacto:
git rev-list --count my-feature..main
Para ver ahead y behind al mismo tiempo, usa la sintaxis ... junto con --left-right --count.
git rev-list --left-right --count my-feature...main
Salida de ejemplo:
1 3
Con my-feature...main, el primer número es la cantidad de commits que existen solo en my-feature, y el segundo número es la cantidad de commits que existen solo en main. En este ejemplo, tu rama está 1 commit por delante y 3 commits por detrás.
5. Revisar estado de PR de GitHub con gh
Git estándar no conoce el estado de revisión ni el estado de CI de GitHub. Para saber si un PR de GitHub está realmente listo para fusionarse, conviene usar gh.
Ver el estado del PR de la rama actual.
gh pr status
Consultar solo el merge state del PR.
gh pr view --json mergeStateStatus --jq .mergeStateStatus
Cuando no se pasa ningún argumento, gh pr view muestra el PR conectado a la rama actual. Sus campos JSON incluyen mergeStateStatus, mergeable, reviewDecision y statusCheckRollup, por lo que puedes extraer solo el estado que necesitas.
Si el resultado es BEHIND, se parece al estado “This branch is out-of-date” de la interfaz web de GitHub. La rama base recibió nuevos commits y la rama del PR quedó atrasada.
6. Actualizar una rama de PR con gh
Si la rama de PR está atrasada respecto a la rama base, puedes actualizarla con gh pr update-branch.
gh pr update-branch
Para actualizar con rebase:
gh pr update-branch --rebase
Según la documentación oficial, gh pr update-branch selecciona el PR conectado a la rama actual cuando no se pasa ningún argumento. Por defecto, actualiza la rama del PR con un merge commit desde la rama base. Con --rebase, rebasea la rama del PR sobre la rama base más reciente.
El comportamiento puede verse limitado por branch protection, permisos o configuración de merge queue del repositorio.
7. Listar ramas remotas
Listar solo ramas remotas.
git branch -r
Listar ramas locales y remotas.
git branch -a
Consultar directamente las ramas del servidor remoto sin traerlas a referencias locales.
git ls-remote --heads origin
8. Limpiar rastros de ramas eliminadas en remoto
Aunque un PR se haya fusionado en GitHub y la rama remota se haya eliminado, pueden quedar referencias locales de seguimiento como origin/branch-name. Esas referencias se limpian con prune.
git fetch --prune
La documentación oficial de Git explica que git fetch --prune elimina antes de hacer fetch las remote-tracking references que ya no existen en el remoto.
Para ejecutar prune automáticamente en cada git fetch:
git config --global fetch.prune true
9. Limpiar ramas locales ya fusionadas
Primero muévete a la rama base y actualízala.
git checkout main
git pull origin main
Revisa antes las ramas fusionadas que podrían eliminarse.
git branch --merged | grep -v "^\\*" | grep -v "main" | grep -v "master"
Elimina solo si la lista es correcta.
git branch --merged | grep -v "^\\*" | grep -v "main" | grep -v "master" | xargs git branch -d
Si tu equipo usa ramas de larga vida como develop, staging o release/*, añádelas a la lista de exclusión.
Resumen
| Tarea | Comando recomendado |
|---|---|
| Ver PRs abiertos | gh pr list |
| Ver mis PRs | gh pr list --author "@me" |
| Ver estado del PR actual | gh pr status |
| Ver GitHub merge state | gh pr view --json mergeStateStatus --jq .mergeStateStatus |
| Actualizar rama de PR | gh pr update-branch |
| Traer estado remoto más reciente | git fetch --all |
| Revisar branch behind | git log my-feature..main --oneline |
| Contar commits ahead/behind | git rev-list --left-right --count my-feature...main |
| Listar ramas remotas | git branch -r |
| Limpiar ramas remotas de seguimiento | git fetch --prune |
Git estándar es adecuado para revisar el historial real de commits y ramas. GitHub CLI es adecuado para trabajos conectados con la plataforma GitHub, como estado de PR, revisiones, CI y actualización de ramas.