如何获取未推送本地分支中已提交变更的修改文件列表?
解决未推送本地分支的变更文件列表获取问题
针对你提到的场景——本地分支未推送到远程、且非基于master分支,以下是几个可行的方案:
明确基准分支直接对比
如果你清楚当前分支基于哪个本地分支(比如production),直接对比该分支与当前HEAD的差异:git diff production..HEAD --name-only这完全符合你想要的
<Local branch>..HEAD效果,只需替换成实际的基准分支名称即可。自动查找基准提交
若不确定基准分支,可用git merge-base命令找到当前分支与目标基准分支的共同祖先,再对比差异:git diff $(git merge-base production HEAD)..HEAD --name-only要是完全忘记了基准分支,还能通过
git reflog show --no-abbrev-commit <你的分支名>查看分支创建记录,定位最初的基准提交。利用分支上游追踪
若创建分支时已关联本地基准分支(比如git checkout -b my-branch production),可通过@{upstream}引用上游分支:git diff @{upstream}..HEAD --name-only没设置过上游的话,先执行
git branch --set-upstream-to=production完成关联,再用上述命令即可。提取所有未推送提交的修改文件
若想一次性获取当前分支所有未推送到远程的已提交变更文件,可直接用日志命令筛选:git log --not --remotes=origin --name-only --pretty=format: | sort | uniq这个命令会提取所有未推送到origin远程的提交内的文件,最后自动去重输出。
内容的提问来源于stack exchange,提问作者CookieEater
相关产品推荐
相关产品推荐

