[Git + gh CLI] 터미널에서 끝내는 브랜치 관리와 PR 상태 확인 총정리

마우스에 손을 대지 않고 키보드만으로 개발 흐름을 유지하는 것은 생산성을 높이는 좋은 습관이다. Git CLI와 GitHub 공식 CLI 도구인 gh를 함께 쓰면 풀 리퀘스트(PR) 상태 조회, 브랜치 behind 확인, 원격 브랜치 제어까지 대부분의 협업 흐름을 터미널 안에서 처리할 수 있다.
이 글에서는 브라우저를 열기 전에 터미널에서 먼저 확인하면 좋은 명령어를 실무 흐름 중심으로 정리한다.
1. 터미널에서 PR 상태 확인하기
웹 브라우저를 열지 않아도 현재 어떤 PR이 열려 있고, 닫혔고, 병합되었는지 플랫폼별 CLI 도구로 확인할 수 있다.
GitHub CLI: gh pr list
GitHub CLI가 설치되어 있고 gh auth login으로 인증되어 있다면 gh pr list 명령어로 PR 목록을 조회한다. 기본값은 열린 PR만 표시하는 것이다.
# 열린 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만 보고 싶다면 --author "@me"를 붙인다.
gh pr list --author "@me"
결과 개수를 늘리거나 다른 저장소를 조회할 수도 있다.
gh pr list --limit 50
gh pr list -R owner/repository-name
자세한 옵션은 GitHub CLI의 gh pr list 공식 문서에서 확인할 수 있다.
GitLab CLI: glab mr list
GitLab에서는 PR 대신 MR(Merge Request)이라는 용어를 사용한다. glab mr list는 기본적으로 열린 MR을 보여준다.
# 열린 MR 보기
glab mr list
# 닫힌 MR 보기
glab mr list --closed
# 병합된 MR 보기
glab mr list --merged
# 모든 MR 보기
glab mr list --all
다른 GitLab 저장소를 조회하려면 -R을 사용한다.
glab mr list -R group/project
현재 glab mr list의 상태 필터는 --closed, --merged, --all 형태로 쓰는 것이 명확하다. 자세한 내용은 GitLab CLI의 glab mr list 공식 문서를 기준으로 확인하는 것이 좋다.
2. 내 브랜치가 뒤처졌는지 확인하기
협업 중에는 main 브랜치에 다른 사람의 커밋이 쌓이면서 내 작업 브랜치가 뒤처지는 일이 자주 생긴다. 비교하기 전에 항상 원격 저장소의 최신 상태를 먼저 가져온다.
git fetch origin
원격에서 삭제된 브랜치 흔적까지 같이 정리하고 싶다면 --prune을 붙인다.
git fetch origin --prune
현재 브랜치 상태 보기
현재 브랜치가 upstream 브랜치보다 앞서 있거나 뒤처졌다면 git status가 이를 알려준다.
git status
더 짧게 보고 싶다면 -sb 옵션을 쓴다.
git status -sb
예를 들어 behind 3처럼 보인다면 현재 브랜치가 upstream 기준으로 3개 커밋 뒤처져 있다는 뜻이다.
기준 브랜치와 커밋 목록 비교하기
작업 브랜치가 origin/main에 비해 무엇을 놓치고 있는지 보려면 다음처럼 비교한다.
# 현재 브랜치에는 없고 origin/main에는 있는 커밋
git log HEAD..origin/main --oneline
특정 브랜치를 명시해서 비교할 수도 있다.
git log my-feature..origin/main --oneline
목록이 출력된다면 뒤처진 상태이고, 아무것도 나오지 않는다면 해당 기준 브랜치에서 새로 가져올 커밋이 없는 상태다.
정확한 커밋 개수 확인하기
몇 개의 커밋이 밀렸는지 숫자로 보고 싶다면 git rev-list --count를 사용한다.
git rev-list --count HEAD..origin/main
앞서 있음(ahead)과 뒤처짐(behind)을 동시에 보려면 삼중 점(...)과 --left-right --count를 함께 쓴다.
git rev-list --left-right --count HEAD...origin/main
출력이 다음과 같다면 첫 번째 숫자는 현재 브랜치에만 있는 커밋 수, 두 번째 숫자는 origin/main에만 있는 커밋 수다.
1 3
즉 현재 브랜치는 기준 브랜치보다 1개 커밋 앞서 있고, 동시에 3개 커밋 뒤처져 있다.
upstream 브랜치와 비교하고 싶다면 @{u}를 사용할 수 있다. 단, 현재 브랜치에 upstream이 설정되어 있어야 한다.
git rev-list --left-right --count HEAD...@{u}
3. gh로 GitHub PR 상태를 더 스마트하게 보기
순수 Git은 커밋 이력과 브랜치 관계를 비교하는 데 강하다. 반면 gh는 GitHub 플랫폼의 PR 상태, 리뷰 상태, 체크 결과까지 함께 보여준다.
현재 계정과 브랜치의 PR 상태 보기
gh pr status
gh pr status는 내가 만든 PR, 나에게 리뷰 요청이 온 PR, 현재 브랜치와 연결된 PR을 요약해서 보여준다. PR을 많이 다루는 저장소에서는 브라우저보다 먼저 실행해 볼 만한 대시보드 역할을 한다.
자세한 옵션은 gh pr status 공식 문서를 참고한다.
GitHub 웹 UI의 behind 상태 확인하기
GitHub 웹 UI에서 보이는 “This branch is out-of-date” 상태는 CLI에서 mergeStateStatus 필드로 확인할 수 있다.
gh pr view --json mergeStateStatus --jq .mergeStateStatus
결과가 BEHIND라면 베이스 브랜치에 새 커밋이 생겨 현재 PR 브랜치가 뒤처진 상태라는 뜻이다. CLEAN이라면 병합 관점에서 충돌이나 behind 문제가 없는 상태로 볼 수 있다.
필요하면 리뷰 결정과 체크 결과도 함께 가져올 수 있다.
gh pr view --json mergeStateStatus,reviewDecision,statusCheckRollup
사용 가능한 JSON 필드는 gh pr view 공식 문서에서 확인할 수 있다.
명령어 한 줄로 PR 브랜치 업데이트하기
PR 브랜치가 behind 상태라면 GitHub 서버에서 베이스 브랜치의 변경을 현재 PR 브랜치에 반영할 수 있다.
gh pr update-branch
기본 방식 대신 rebase로 반영하고 싶다면 --rebase를 사용한다.
gh pr update-branch --rebase
이 명령은 현재 브랜치에 연결된 PR을 대상으로 동작한다. 특정 PR을 지정해야 한다면 PR 번호, URL, 브랜치명을 인자로 넘긴다.
gh pr update-branch 123
자세한 동작 방식은 gh pr update-branch 공식 문서를 참고한다.
4. 원격 브랜치 조회와 정리
원격 저장소에 어떤 브랜치가 있는지 확인하고, 로컬에 남은 오래된 브랜치 참조를 정리하는 명령도 자주 쓰인다.
원격 브랜치 조회하기
# 원격 브랜치만 나열
git branch -r
# 로컬과 원격 브랜치 모두 나열
git branch -a
# 로컬에 fetch하지 않고 원격 서버의 브랜치 목록 조회
git ls-remote --heads origin
원격에서 삭제된 브랜치 흔적 정리하기
GitHub 웹에서 PR이 병합된 뒤 원격 브랜치를 삭제했는데도 로컬 터미널에 origin/feature/... 같은 흔적이 남아 있다면 prune을 실행한다.
git fetch --prune
앞으로 git fetch할 때마다 자동으로 정리되도록 설정할 수도 있다.
git config --global fetch.prune true
병합된 로컬 브랜치 정리하기
이미 main에 병합된 로컬 작업 브랜치를 정리하려면 먼저 목록을 확인한다.
git checkout main
git pull origin main
git branch --merged main
삭제 대상이 맞는지 확인한 뒤, main과 master를 제외하고 정리한다.
git branch --merged main \
| sed 's/^[* ]*//' \
| grep -vE '^(main|master)$' \
| while read branch; do
git branch -d "$branch"
done
git branch -d는 병합되지 않은 브랜치를 삭제하지 않는다. 강제로 지우는 -D는 정말 필요할 때만 사용한다.
요약
- 단순한 로컬 변경 확인은
git status와git status -sb로 충분하다. - 기준 브랜치와의 ahead/behind 비교는
git log,git rev-list,origin/main,@{u}를 조합해서 확인한다. - GitHub PR 상태, 리뷰 상태, 체크 결과는
gh pr status와gh pr view가 더 빠르다. - PR 브랜치가 뒤처졌다면
gh pr update-branch로 베이스 브랜치 변경을 반영할 수 있다. - 원격 브랜치 흔적은
git fetch --prune으로 정리하고, 병합된 로컬 브랜치는 삭제 전 목록을 확인한다.
터미널에서 모든 것을 처리할 필요는 없다. 하지만 로컬 변경, PR 상태, 브랜치 behind 여부를 CLI로 빠르게 확인할 수 있으면 브라우저로 이동하는 횟수가 줄고 개발 흐름도 훨씬 덜 끊긴다.

Keeping a development flow on the keyboard, without reaching for the mouse, is a useful productivity habit. When you combine Git CLI with GitHub's official CLI tool, gh, most collaboration tasks can stay in the terminal: checking pull request status, comparing whether a branch is behind, and managing remote branches.
This post focuses on practical commands worth running before opening the browser.
1. Check PR Status from the Terminal
You can check which PRs are open, closed, or merged without opening the web UI by using the CLI tool for your hosting platform.
GitHub CLI: gh pr list
If GitHub CLI is installed and authenticated with gh auth login, use gh pr list to query PRs. By default, it shows open PRs.
# Show open PRs
gh pr list
gh pr list --state open
# Show closed PRs
gh pr list --state closed
# Show PRs merged into the main branch
gh pr list --state merged
# Show PRs in every state
gh pr list --state all
To show only PRs authored by you, add --author "@me".
gh pr list --author "@me"
You can also increase the result limit or query another repository.
gh pr list --limit 50
gh pr list -R owner/repository-name
For details, see the official gh pr list documentation.
GitLab CLI: glab mr list
GitLab uses the term MR, or Merge Request, instead of PR. glab mr list shows open MRs by default.
# Show open MRs
glab mr list
# Show closed MRs
glab mr list --closed
# Show merged MRs
glab mr list --merged
# Show all MRs
glab mr list --all
Use -R to query another GitLab repository.
glab mr list -R group/project
For current glab mr list state filtering, --closed, --merged, and --all are the clearest forms. Use the official glab mr list documentation as the reference.
2. Check Whether Your Branch Is Behind
In collaborative work, your feature branch often falls behind as other people add commits to main. Before comparing branches, always fetch the latest remote state.
git fetch origin
If you also want to prune references to branches deleted on the remote, add --prune.
git fetch origin --prune
Check the Current Branch State
If your current branch is ahead of or behind its upstream branch, git status tells you.
git status
For a shorter view, use -sb.
git status -sb
If you see something like behind 3, the current branch is three commits behind its upstream branch.
Compare Commits Against a Base Branch
To see what your current branch is missing compared with origin/main, run:
# Commits that exist on origin/main but not on the current branch
git log HEAD..origin/main --oneline
You can also compare a named branch explicitly.
git log my-feature..origin/main --oneline
If commits are listed, the branch is behind. If nothing appears, there are no new commits to bring in from that base branch.
Count the Exact Number of Commits
Use git rev-list --count when you want a clean number.
git rev-list --count HEAD..origin/main
To see ahead and behind counts together, use the triple-dot syntax with --left-right --count.
git rev-list --left-right --count HEAD...origin/main
If the output is:
1 3
the first number is the count of commits only on the current branch, and the second number is the count of commits only on origin/main. In other words, your branch is one commit ahead and three commits behind.
To compare against the upstream branch, use @{u}. The current branch must have an upstream configured.
git rev-list --left-right --count HEAD...@{u}
3. Use gh for Smarter GitHub PR State
Plain Git is strong at comparing commit history and branch relationships. gh adds GitHub platform state, including PR status, review status, and check results.
See the PR Status for Your Account and Branch
gh pr status
gh pr status summarizes PRs you created, PRs requesting your review, and the PR connected to your current branch. In repositories with many PRs, it works well as a first terminal dashboard.
For more options, see the official gh pr status documentation.
Check the Behind State Shown in the GitHub Web UI
The "This branch is out-of-date" state in GitHub's web UI can be checked from the CLI with the mergeStateStatus field.
gh pr view --json mergeStateStatus --jq .mergeStateStatus
If the result is BEHIND, new commits exist on the base branch and the current PR branch is behind. If the result is CLEAN, there is no merge conflict or behind problem from the mergeability perspective.
You can also fetch review decisions and check results.
gh pr view --json mergeStateStatus,reviewDecision,statusCheckRollup
Available JSON fields are listed in the official gh pr view documentation.
Update a PR Branch with One Command
If a PR branch is behind, GitHub can update it with changes from the base branch.
gh pr update-branch
To use rebase instead of the default update method, pass --rebase.
gh pr update-branch --rebase
This command targets the PR connected to the current branch. To target a specific PR, pass a PR number, URL, or branch name.
gh pr update-branch 123
For details, see the official gh pr update-branch documentation.
4. Inspect and Clean Up Remote Branches
You will often need commands for listing remote branches and cleaning old local references.
List Remote Branches
# List remote branches only
git branch -r
# List both local and remote branches
git branch -a
# Query remote branch heads without fetching them locally
git ls-remote --heads origin
Prune References to Deleted Remote Branches
If a branch was deleted on GitHub after a PR was merged, but origin/feature/... still appears locally, prune the remote references.
git fetch --prune
You can also make this happen automatically whenever you run git fetch.
git config --global fetch.prune true
Delete Local Branches That Have Already Been Merged
Before deleting merged local branches, first inspect the list.
git checkout main
git pull origin main
git branch --merged main
After confirming the targets, delete branches except main and master.
git branch --merged main \
| sed 's/^[* ]*//' \
| grep -vE '^(main|master)$' \
| while read branch; do
git branch -d "$branch"
done
git branch -d refuses to delete unmerged branches. Use the forceful -D only when you really need it.
Summary
- For simple local state checks,
git statusandgit status -sbare enough. - For ahead/behind comparison against a base branch, combine
git log,git rev-list,origin/main, and@{u}. - For GitHub PR status, review state, and check results,
gh pr statusandgh pr vieware faster. - If a PR branch is behind,
gh pr update-branchcan bring in base branch changes. - Clean stale remote branch references with
git fetch --prune, and inspect merged local branches before deleting them.
You do not need to do everything in the terminal. But when you can quickly check local changes, PR state, and branch behind status from the CLI, you switch to the browser less often and keep your development flow more intact.

不碰鼠标、只用键盘维持开发节奏,是一种很实用的效率习惯。把 Git CLI 和 GitHub 官方 CLI 工具 gh 结合起来,许多协作任务都可以留在终端中完成:查看 pull request 状态、比较分支是否 behind,以及管理远程分支。
本文按实际工作流整理了在打开浏览器之前,值得先在终端运行的命令。
1. 在终端查看 PR 状态
不打开网页界面,也可以用托管平台对应的 CLI 工具查看哪些 PR 是 open、closed 或 merged。
GitHub CLI:gh pr list
如果已经安装 GitHub CLI,并通过 gh auth login 完成认证,可以用 gh pr list 查询 PR。默认情况下,它只显示 open 状态的 PR。
# 查看 open PR
gh pr list
gh pr list --state open
# 查看 closed PR
gh pr list --state closed
# 查看已合并到主分支的 PR
gh pr list --state merged
# 查看所有状态的 PR
gh pr list --state all
如果只想查看自己创建的 PR,可以加上 --author "@me"。
gh pr list --author "@me"
也可以增加结果数量,或查询另一个仓库。
gh pr list --limit 50
gh pr list -R owner/repository-name
更多细节可以查看官方 gh pr list 文档。
GitLab CLI:glab mr list
GitLab 使用 MR,也就是 Merge Request,而不是 PR。glab mr list 默认显示 open 状态的 MR。
# 查看 open MR
glab mr list
# 查看 closed MR
glab mr list --closed
# 查看 merged MR
glab mr list --merged
# 查看所有 MR
glab mr list --all
使用 -R 可以查询另一个 GitLab 仓库。
glab mr list -R group/project
对于当前的 glab mr list 状态过滤,--closed、--merged 和 --all 是最清晰的写法。建议以官方 glab mr list 文档为准。
2. 检查你的分支是否落后
在协作开发中,其他人不断向 main 添加 commit,你的功能分支经常会落后。比较分支之前,先获取最新的远程状态。
git fetch origin
如果也想顺便清理远程已删除分支的本地引用,可以加上 --prune。
git fetch origin --prune
查看当前分支状态
如果当前分支相对 upstream 分支 ahead 或 behind,git status 会显示出来。
git status
想看更短的输出,可以用 -sb。
git status -sb
如果看到类似 behind 3 的内容,说明当前分支相对 upstream 落后 3 个 commit。
与基准分支比较 commit 列表
如果想看当前分支相对 origin/main 少了哪些 commit,可以运行:
# origin/main 有、当前分支没有的 commit
git log HEAD..origin/main --oneline
也可以显式指定某个分支来比较。
git log my-feature..origin/main --oneline
如果输出了 commit 列表,说明分支落后。如果没有任何输出,说明从该基准分支没有需要引入的新 commit。
查看准确的 commit 数量
想要一个清晰的数字时,用 git rev-list --count。
git rev-list --count HEAD..origin/main
如果想同时查看 ahead 和 behind 数量,可以把三点语法和 --left-right --count 结合使用。
git rev-list --left-right --count HEAD...origin/main
如果输出为:
1 3
第一个数字表示只在当前分支上的 commit 数量,第二个数字表示只在 origin/main 上的 commit 数量。也就是说,当前分支 ahead 1 个 commit,同时 behind 3 个 commit。
如果要和 upstream 分支比较,可以使用 @{u}。不过当前分支必须已经设置 upstream。
git rev-list --left-right --count HEAD...@{u}
3. 用 gh 更智能地查看 GitHub PR 状态
纯 Git 很擅长比较 commit 历史和分支关系。而 gh 会补上 GitHub 平台状态,包括 PR 状态、review 状态和 check 结果。
查看当前账号和分支的 PR 状态
gh pr status
gh pr status 会汇总你创建的 PR、请求你 review 的 PR,以及和当前分支连接的 PR。在 PR 较多的仓库中,它很适合作为终端里的第一屏仪表盘。
更多选项可以查看官方 gh pr status 文档。
查看 GitHub 网页中的 behind 状态
GitHub 网页界面的 "This branch is out-of-date" 状态,可以通过 CLI 的 mergeStateStatus 字段查看。
gh pr view --json mergeStateStatus --jq .mergeStateStatus
如果结果是 BEHIND,说明 base 分支有新 commit,当前 PR 分支已经落后。如果结果是 CLEAN,从可合并性角度看没有冲突或 behind 问题。
需要时也可以同时获取 review decision 和 check 结果。
gh pr view --json mergeStateStatus,reviewDecision,statusCheckRollup
可用 JSON 字段可以在官方 gh pr view 文档中查看。
用一条命令更新 PR 分支
如果 PR 分支已经 behind,GitHub 可以把 base 分支的变更更新到该 PR 分支。
gh pr update-branch
如果想用 rebase 而不是默认更新方式,可以传入 --rebase。
gh pr update-branch --rebase
这个命令默认作用于当前分支连接的 PR。如果要指定特定 PR,可以传入 PR 编号、URL 或分支名。
gh pr update-branch 123
详细行为可以查看官方 gh pr update-branch 文档。
4. 查看并清理远程分支
列出远程分支、清理旧的本地引用,也是经常会用到的命令。
查看远程分支
# 只列出远程分支
git branch -r
# 同时列出本地和远程分支
git branch -a
# 不 fetch 到本地,直接查询远程服务器的 branch heads
git ls-remote --heads origin
清理已删除远程分支的引用
如果 PR 合并后 GitHub 上的远程分支已经删除,但本地仍然看到 origin/feature/...,可以 prune 远程引用。
git fetch --prune
也可以让它在每次 git fetch 时自动执行。
git config --global fetch.prune true
删除已经合并的本地分支
删除已合并的本地分支之前,先查看列表。
git checkout main
git pull origin main
git branch --merged main
确认目标无误后,删除除 main 和 master 之外的分支。
git branch --merged main \
| sed 's/^[* ]*//' \
| grep -vE '^(main|master)$' \
| while read branch; do
git branch -d "$branch"
done
git branch -d 不会删除尚未合并的分支。强制删除的 -D 只在确实需要时使用。
总结
- 简单的本地状态检查,用
git status和git status -sb就够了。 - 与基准分支的 ahead/behind 比较,可以组合
git log、git rev-list、origin/main和@{u}。 - GitHub PR 状态、review 状态和 check 结果,用
gh pr status和gh pr view更快。 - 如果 PR 分支落后,可以用
gh pr update-branch引入 base 分支变更。 - 用
git fetch --prune清理过期远程分支引用,删除已合并本地分支之前先查看列表。
并不是所有事情都必须在终端中完成。但如果你能从 CLI 快速确认本地变更、PR 状态和分支 behind 情况,就能减少切换到浏览器的次数,也更容易保持开发节奏。

マウスに手を伸ばさず、キーボードだけで開発の流れを保つことは、生産性を高める有効な習慣です。Git CLI と GitHub 公式 CLI ツールの gh を組み合わせると、pull request の状態確認、ブランチが behind かどうかの比較、リモートブランチ管理まで、多くの協業フローをターミナル内で処理できます。
この記事では、ブラウザを開く前にターミナルで先に確認したい実務向けコマンドを整理します。
1. ターミナルで PR の状態を確認する
Web UI を開かなくても、利用しているホスティングプラットフォームの CLI ツールで、どの PR が open、closed、merged なのか確認できます。
GitHub CLI: gh pr list
GitHub CLI がインストールされ、gh auth login で認証済みであれば、gh pr list で PR を確認できます。デフォルトでは open 状態の PR だけが表示されます。
# open PR を表示
gh pr list
gh pr list --state open
# closed PR を表示
gh pr list --state closed
# main ブランチに merged された PR を表示
gh pr list --state merged
# すべての状態の PR を表示
gh pr list --state all
自分が作成した PR だけを見たい場合は、--author "@me" を付けます。
gh pr list --author "@me"
結果数を増やしたり、別のリポジトリを確認したりすることもできます。
gh pr list --limit 50
gh pr list -R owner/repository-name
詳しいオプションは公式の gh pr list ドキュメントで確認できます。
GitLab CLI: glab mr list
GitLab では PR ではなく MR、つまり Merge Request という用語を使います。glab mr list はデフォルトで open 状態の MR を表示します。
# open MR を表示
glab mr list
# closed MR を表示
glab mr list --closed
# merged MR を表示
glab mr list --merged
# すべての MR を表示
glab mr list --all
別の GitLab リポジトリを確認するには -R を使います。
glab mr list -R group/project
現在の glab mr list の状態フィルターは、--closed、--merged、--all を使うのが明確です。公式の glab mr list ドキュメントを基準に確認するのが安全です。
2. 自分のブランチが behind か確認する
協業中は、他の人が main に commit を追加することで、自分の作業ブランチが behind になることがよくあります。比較する前に、まずリモートの最新状態を取得します。
git fetch origin
リモートで削除されたブランチの参照も同時に整理したい場合は、--prune を付けます。
git fetch origin --prune
現在のブランチ状態を見る
現在のブランチが upstream ブランチより ahead または behind の場合、git status がそれを表示します。
git status
短い表示にしたい場合は -sb を使います。
git status -sb
例えば behind 3 のように表示された場合、現在のブランチは upstream から 3 commit 遅れているという意味です。
基準ブランチと commit 一覧を比較する
現在のブランチが origin/main と比べて何を取り込めていないのかを見るには、次のように比較します。
# origin/main にはあり、現在のブランチにはない commit
git log HEAD..origin/main --oneline
特定のブランチを明示して比較することもできます。
git log my-feature..origin/main --oneline
commit が表示されれば behind の状態です。何も表示されなければ、その基準ブランチから取り込む新しい commit はありません。
正確な commit 数を確認する
いくつの commit が遅れているかを数字で見たい場合は、git rev-list --count を使います。
git rev-list --count HEAD..origin/main
ahead と behind を同時に見たい場合は、三点構文と --left-right --count を組み合わせます。
git rev-list --left-right --count HEAD...origin/main
出力が次のような場合:
1 3
最初の数字は現在のブランチにだけある commit 数、2 番目の数字は origin/main にだけある commit 数です。つまり現在のブランチは 1 commit ahead で、同時に 3 commit behind です。
upstream ブランチと比較したい場合は @{u} を使えます。ただし、現在のブランチに upstream が設定されている必要があります。
git rev-list --left-right --count HEAD...@{u}
3. gh で GitHub PR の状態をよりスマートに見る
素の Git は commit 履歴やブランチ関係の比較に強いツールです。一方で gh は、GitHub プラットフォーム上の PR 状態、レビュー状態、check 結果まで表示できます。
現在のアカウントとブランチの PR 状態を見る
gh pr status
gh pr status は、自分が作成した PR、自分にレビュー依頼が来ている PR、現在のブランチに接続された PR をまとめて表示します。PR が多いリポジトリでは、ブラウザより先に実行するターミナル上のダッシュボードとして役立ちます。
詳しいオプションは公式の gh pr status ドキュメントを参照してください。
GitHub Web UI の behind 状態を確認する
GitHub の Web UI で表示される "This branch is out-of-date" 状態は、CLI では mergeStateStatus フィールドで確認できます。
gh pr view --json mergeStateStatus --jq .mergeStateStatus
結果が BEHIND なら、base ブランチに新しい commit があり、現在の PR ブランチが behind であることを意味します。CLEAN なら、merge 可能性の観点で conflict や behind の問題がない状態と見なせます。
必要なら、レビュー判定や check 結果も一緒に取得できます。
gh pr view --json mergeStateStatus,reviewDecision,statusCheckRollup
利用できる JSON フィールドは公式の gh pr view ドキュメントに載っています。
1 行のコマンドで PR ブランチを更新する
PR ブランチが behind の場合、GitHub 上で base ブランチの変更をその PR ブランチに反映できます。
gh pr update-branch
デフォルトの更新方法ではなく rebase を使いたい場合は、--rebase を渡します。
gh pr update-branch --rebase
このコマンドは現在のブランチに接続された PR を対象にします。特定の PR を対象にする場合は、PR 番号、URL、またはブランチ名を渡します。
gh pr update-branch 123
詳しい動作は公式の gh pr update-branch ドキュメントを参照してください。
4. リモートブランチを確認して整理する
リモートブランチを一覧表示し、古いローカル参照を整理するコマンドもよく使います。
リモートブランチを一覧表示する
# リモートブランチだけを一覧表示
git branch -r
# ローカルとリモートの両方を一覧表示
git branch -a
# ローカルに fetch せず、リモートサーバーの branch heads を確認
git ls-remote --heads origin
削除済みリモートブランチの参照を整理する
PR が merged された後に GitHub 上でリモートブランチを削除したのに、ローカルに origin/feature/... が残っている場合は prune します。
git fetch --prune
今後 git fetch のたびに自動で整理する設定もできます。
git config --global fetch.prune true
すでに merged されたローカルブランチを削除する
merged 済みのローカルブランチを削除する前に、まず一覧を確認します。
git checkout main
git pull origin main
git branch --merged main
対象が正しいことを確認してから、main と master を除いて削除します。
git branch --merged main \
| sed 's/^[* ]*//' \
| grep -vE '^(main|master)$' \
| while read branch; do
git branch -d "$branch"
done
git branch -d は merged されていないブランチを削除しません。強制削除の -D は本当に必要なときだけ使います。
まとめ
- 単純なローカル状態確認は
git statusとgit status -sbで十分です。 - 基準ブランチとの ahead/behind 比較は、
git log、git rev-list、origin/main、@{u}を組み合わせて確認します。 - GitHub の PR 状態、レビュー状態、check 結果は
gh pr statusとgh pr viewが速いです。 - PR ブランチが behind の場合は、
gh pr update-branchで base ブランチの変更を取り込めます。 - 古いリモートブランチ参照は
git fetch --pruneで整理し、merged 済みローカルブランチは削除前に一覧を確認します。
すべてをターミナルで処理する必要はありません。とはいえ、ローカル変更、PR 状態、ブランチの behind 状態を CLI で素早く確認できると、ブラウザへ移動する回数が減り、開発の流れも保ちやすくなります。

Mantener el flujo de desarrollo desde el teclado, sin tocar el mouse, es un hábito útil para mejorar la productividad. Al combinar Git CLI con la herramienta oficial de GitHub, gh, muchas tareas de colaboración pueden quedarse en la terminal: revisar el estado de pull requests, comparar si una rama está atrasada y gestionar ramas remotas.
Este artículo resume comandos prácticos que conviene ejecutar antes de abrir el navegador.
1. Revisar el estado de PR desde la terminal
Puedes revisar qué PR están abiertos, cerrados o fusionados sin abrir la interfaz web, usando la CLI de la plataforma donde está alojado el repositorio.
GitHub CLI: gh pr list
Si GitHub CLI está instalado y autenticado con gh auth login, usa gh pr list para consultar PR. Por defecto, muestra los PR abiertos.
# Ver PR abiertos
gh pr list
gh pr list --state open
# Ver PR cerrados
gh pr list --state closed
# Ver PR fusionados en la rama principal
gh pr list --state merged
# Ver PR en cualquier estado
gh pr list --state all
Si solo quieres ver PR creados por ti, añade --author "@me".
gh pr list --author "@me"
También puedes aumentar el límite de resultados o consultar otro repositorio.
gh pr list --limit 50
gh pr list -R owner/repository-name
Para más detalles, revisa la documentación oficial de gh pr list.
GitLab CLI: glab mr list
GitLab usa el término MR, o Merge Request, en lugar de PR. glab mr list muestra por defecto los MR abiertos.
# Ver MR abiertos
glab mr list
# Ver MR cerrados
glab mr list --closed
# Ver MR fusionados
glab mr list --merged
# Ver todos los MR
glab mr list --all
Usa -R para consultar otro repositorio de GitLab.
glab mr list -R group/project
Para el filtrado de estado actual de glab mr list, las formas más claras son --closed, --merged y --all. Usa la documentación oficial de glab mr list como referencia.
2. Comprobar si tu rama está atrasada
En trabajo colaborativo, tu rama de feature suele quedarse atrás cuando otras personas añaden commits a main. Antes de comparar ramas, trae siempre el estado remoto más reciente.
git fetch origin
Si también quieres limpiar referencias a ramas eliminadas en el remoto, añade --prune.
git fetch origin --prune
Ver el estado de la rama actual
Si tu rama actual está por delante o por detrás de su rama upstream, git status lo indica.
git status
Para una vista más corta, usa -sb.
git status -sb
Si ves algo como behind 3, significa que la rama actual está tres commits por detrás de su upstream.
Comparar commits contra una rama base
Para ver qué le falta a tu rama actual frente a origin/main, ejecuta:
# Commits que existen en origin/main pero no en la rama actual
git log HEAD..origin/main --oneline
También puedes comparar una rama concreta de forma explícita.
git log my-feature..origin/main --oneline
Si aparece una lista de commits, la rama está atrasada. Si no aparece nada, no hay commits nuevos que traer desde esa rama base.
Contar el número exacto de commits
Usa git rev-list --count cuando quieras un número claro.
git rev-list --count HEAD..origin/main
Para ver los conteos ahead y behind a la vez, usa la sintaxis de tres puntos con --left-right --count.
git rev-list --left-right --count HEAD...origin/main
Si la salida es:
1 3
el primer número es la cantidad de commits que solo están en la rama actual, y el segundo es la cantidad de commits que solo están en origin/main. Es decir, tu rama está un commit por delante y tres commits por detrás.
Para comparar contra la rama upstream, puedes usar @{u}. La rama actual debe tener un upstream configurado.
git rev-list --left-right --count HEAD...@{u}
3. Usar gh para ver mejor el estado de PR en GitHub
Git puro es muy bueno comparando historial de commits y relaciones entre ramas. gh añade el estado de la plataforma GitHub, incluyendo estado del PR, revisión y resultados de checks.
Ver el estado de PR de tu cuenta y rama
gh pr status
gh pr status resume los PR que creaste, los PR que piden tu revisión y el PR conectado con la rama actual. En repositorios con muchos PR, funciona bien como primer panel de control en la terminal.
Para más opciones, revisa la documentación oficial de gh pr status.
Comprobar el estado behind que muestra la UI de GitHub
El estado "This branch is out-of-date" que aparece en la web de GitHub se puede revisar desde la CLI con el campo mergeStateStatus.
gh pr view --json mergeStateStatus --jq .mergeStateStatus
Si el resultado es BEHIND, existen nuevos commits en la rama base y la rama del PR está atrasada. Si el resultado es CLEAN, no hay conflicto ni problema de behind desde la perspectiva de mergeability.
También puedes traer la decisión de revisión y los resultados de checks.
gh pr view --json mergeStateStatus,reviewDecision,statusCheckRollup
Los campos JSON disponibles están en la documentación oficial de gh pr view.
Actualizar una rama de PR con un solo comando
Si una rama de PR está atrasada, GitHub puede actualizarla con cambios de la rama base.
gh pr update-branch
Para usar rebase en lugar del método de actualización por defecto, pasa --rebase.
gh pr update-branch --rebase
Este comando apunta al PR conectado con la rama actual. Para apuntar a un PR concreto, pasa un número de PR, URL o nombre de rama.
gh pr update-branch 123
Para más detalles, revisa la documentación oficial de gh pr update-branch.
4. Inspeccionar y limpiar ramas remotas
También usarás con frecuencia comandos para listar ramas remotas y limpiar referencias locales antiguas.
Listar ramas remotas
# Listar solo ramas remotas
git branch -r
# Listar ramas locales y remotas
git branch -a
# Consultar branch heads remotos sin hacer fetch local
git ls-remote --heads origin
Limpiar referencias de ramas remotas eliminadas
Si una rama fue eliminada en GitHub después de fusionar un PR, pero origin/feature/... sigue apareciendo localmente, limpia las referencias remotas.
git fetch --prune
También puedes hacer que esto ocurra automáticamente cada vez que ejecutes git fetch.
git config --global fetch.prune true
Eliminar ramas locales que ya fueron fusionadas
Antes de eliminar ramas locales fusionadas, revisa primero la lista.
git checkout main
git pull origin main
git branch --merged main
Después de confirmar los objetivos, elimina las ramas excepto main y master.
git branch --merged main \
| sed 's/^[* ]*//' \
| grep -vE '^(main|master)$' \
| while read branch; do
git branch -d "$branch"
done
git branch -d se niega a eliminar ramas no fusionadas. Usa la opción forzada -D solo cuando realmente sea necesario.
Resumen
- Para revisar estado local simple,
git statusygit status -sbson suficientes. - Para comparar ahead/behind contra una rama base, combina
git log,git rev-list,origin/mainy@{u}. - Para estado de PR en GitHub, revisión y checks,
gh pr statusygh pr viewson más rápidos. - Si una rama de PR está atrasada,
gh pr update-branchpuede traer cambios de la rama base. - Limpia referencias remotas obsoletas con
git fetch --prune, y revisa las ramas locales fusionadas antes de eliminarlas.
No necesitas hacer todo desde la terminal. Pero si puedes revisar cambios locales, estado de PR y estado behind desde la CLI, cambiarás menos al navegador y mantendrás mejor el flujo de desarrollo.