获取在git分支中修改的所有文件
有没有办法看到哪些文件已经改变了分支?
@Marco Ponti的答案的替代scheme,并避免结帐:
git diff --name-only <notMainDev> $(git merge-base <notMainDev> <mainDev>)
如果您的特定shell不能理解$()构造,请改用back-ticks。
所有你需要做的是以下几点:
git checkout <notMainDev> git diff --name-only <mainDev>
这将只显示两个分支之间不同的文件名。
惊讶这至今没有说过!
git diff master...branch
所以只能在branch
上看到更改
检查当前分支的使用情况
git diff master...
感谢jqr
这是短暂的
git diff $(git merge-base master branch) branch
所以合并基础(分支之间最近的共同提交)和分支提示
同时使用起源/主人而不是主人将有助于当地的主人约会
我不敢相信有这么多的方法来做到这一点。 我使用之前发布的内容,只是使用以下参数:
git whatchanged --name-only --pretty="" origin..HEAD
这只是列出了文件名,只是在当前分支上更改的文件名。
我真的很喜欢@ twalberg的答案,但我不想一直键入当前的分支名称。 所以我使用这个:
git diff --name-only $(git merge-base master HEAD)
如果它可以像这样简单呢?
git changed
如果你愿意假定主分支被称为“主”,并且你从主创build你的其他分支,那么你可以将这个别名添加到你的~/.gitconfig
文件中,这样做很简单:
cbranch = !"git branch | grep '*' | cut -f2 -d' '" changed = !"git diff --name-only $(git cbranch) $(git merge-base $(git cbranch) master)"
这些假设在大多数情况下都适用于大多数人,但是你必须意识到你正在制造这些假设。
另外,你必须使用一个支持$()
的shell。 这很可能是你的shell支持这个 。
git whatchanged
似乎是一个很好的select。
git show --stat origin/branch_name
这会给你一个在这个分支下已经添加或修改的文件列表。
扩展了@twalberg和@iconoclast的内容,如果你使用cmd出于任何原因,你可以使用:
FOR /F "usebackq" %x IN (`"git branch | grep '*' | cut -f2 -d' '"`) DO FOR /F "usebackq" %y IN (`"git merge-base %x master"`) DO git diff --name-only %x %y
下面的batch file是基于twalberg的答案,但将在Windows中工作:
@ECHO OFF C: :: <== OR USE A DIFFERENT DRIVE CD \path\to\where\git\files\are :: <== CHANGE TO THE ACTUAL PATH SET /pb="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(并且它的位置在path环境中)时包含了git bash。 我实际上需要使用configuration的diff工具(kdiff3)来显示实际的差异,所以用上面的bash命令代替:
bash --login -i -c "git difftool --dir-diff %b% $(git merge-base %b1% origin/drop2/master)"
我使用grep,所以我只得到与diff –git这是文件path的行:
git diff branchA branchB | grep 'diff --git' // OUTPUTS ALL FILES WITH CHANGES, SIMPLE HA :) diff --git a/package-lock.json b/package-lock.json