是否有一种方法可以查看分支中哪些文件发生了更改?
当前回答
接受的答案- git diff——name-only <notMainDev> $(git merge-base <notMainDev> <mainDev>) -非常接近,但我注意到它的删除状态是错误的。我在分支中添加了一个文件,但是这个命令(使用——name-status)给了我删除的文件“a”状态和我添加的文件“D”状态。
我不得不使用这个命令:
git diff --name-only $(git merge-base <notMainDev> <mainDev>)
其他回答
我使用grep,所以我只得到diff -git的行,这是文件路径:
git diff branchA branchB | grep 'diff --git'
// OUTPUTS ALL FILES WITH CHANGES, SIMPLE HA :)
diff --git a/package-lock.json b/package-lock.json
2020年11月更新:
要获得当前分支中修改(并提交!)的文件列表,您可以使用使用标准git的最短控制台命令:
Git diff -name-only master…
If your local "master" branch is outdated (behind the remote), add a remote name (assuming it is "origin"): git diff --name-only origin/master... If you want to include uncommitted changes as well, remove the ...: git diff --name-only master If you use different main branch name (eg: "main"), substitute it: git diff --name-only main... If your want to output to stdout (so its copyable): git diff --name-only master... | cat If your want filenames to be clickable in VSCode terminal no matter what folder you are running this command from, add --relative: git diff --name-only --relative master... | cat
每个非常好的详细解释不同的选项https://blog.jpalardy.com/posts/git-how-to-find-modified-files-on-a-branch/
下面的批处理文件是基于twalberg的回答,但可以在Windows中工作:
@ECHO OFF
C: :: <== OR USE A DIFFERENT DRIVE
CD \path\to\where\git\files\are :: <== CHANGE TO THE ACTUAL PATH
SET /p b="Enter full path of an ALREADY MERGED branch to compare with origin/master: "
bash --login -i -c "git diff --name-only %b% $(git merge-base %b1% origin/drop2/master)"
PAUSE
上面假设主分支是origin/master,并且在安装git时包含了git bash(它的位置在path环境中)。我实际上需要使用配置的diff工具(kdiff3)来显示实际的差异,因此替换了上面的以下bash命令:
bash --login -i -c "git difftool --dir-diff %b% $(git merge-base %b1% origin/drop2/master)"
@Marco Ponti的另一个答案,避免结帐:
git diff --name-only <notMainDev> $(git merge-base <notMainDev> <mainDev>)
如果您的特定shell不理解$()结构,则使用反引号代替。
令人惊讶的是,到目前为止还没有人这么说!
git diff main...branch
所以只在分支上看到变化
检查当前分支的使用情况
git diff main...
感谢jqr
这是简称
git diff $(git merge-base main branch) branch
所以合并基(分支之间最近的共同提交)和分支尖端
此外,使用origin/main而不是master将有助于防止本地main过期
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别