我已经查看了有关使用git diff和git修订(HEAD,ORIG_HEAD,FETCH_HEAD等)的各种SO答案,我仍然没有找到一种简单的方法来列出自本地分支开始以来所做的更改,或者自上次以来变基.
通过简单的我的意思是,无需查找并粘贴提交SHA也不必指望我想多少提交回头.
git diff origin/master 是接近,但它指的是遥控器,因为我检查了它的新分支.
我希望有类似的东西git diff BASE_HEAD可供选择.
......除非已经有办法做到这一点.有人有答案吗?
fra*_*ale 40
你可以找到分支点使用git merge-base.考虑您感兴趣master的主线和dev分支.要找到dev分支的点master,运行:
git merge-base --fork-point master dev
Run Code Online (Sandbox Code Playgroud)
我们现在可以dev反对这个基础:
git diff $(git merge-base --fork-point master dev)..dev
Run Code Online (Sandbox Code Playgroud)
如果dev是当前分支,则简化为:
git diff $(git merge-base --fork-point master)
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅git-merge-base文档.
o11*_*11c 28
使用git diff @{u}...HEAD,有三个点.
有两个点,或者HEAD省略,它将显示两侧变化的差异.
有三个点,它只会显示你身边变化的差异.
编辑:对于需求略有不同的人,您可能会感兴趣git merge-base(请注意,它有比其他答案更多的选项).
您可以使用以下方法从分支起始点区分当前分支:
git diff (start point)...
Run Code Online (Sandbox Code Playgroud)
其中(起始点)是分支名称,commit-id或标记.
例如,如果您正在处理分支的功能分支develop,则可以使用:
git diff develop...
Run Code Online (Sandbox Code Playgroud)
对于自分支点以来当前分支的所有更改.
这已在评论中提及,但我认为它应该得到回答.我不知道自从上次变种以来它会做什么.
对于差异,您需要三点符号。如果您的分支被调用dev并且它从master以下分支:
% git diff master...dev
Run Code Online (Sandbox Code Playgroud)
对于日志,您需要两点表示法:
% git log master..dev
Run Code Online (Sandbox Code Playgroud)
修订语法r1..r2(带两个点)的意思是“从r2(包含)可到达的所有东西,但从(包含的)不可到达的r1”。使用它的正常方法是考虑r1并r2指定一系列提交(r1独占、r2包含)中的范围,因此如果您有 10 个修订,3..7将显示更改 4、5、6 和 7。它是{1, 2, 3, 4, 5, 6, 7}减号{1, 2, 3}。但r1不一定必须是r2. 把它想象成一个集合操作,r1从r1后面开始代表整个祖先,从后面r2代表整个祖先r2,你从第二个集合中减去第一个集合。
那么:
git log master..dev
Run Code Online (Sandbox Code Playgroud)
是分支的整个历史减去 master 的整个历史。换句话说,只是分支。
| 归档时间: |
|
| 查看次数: |
17342 次 |
| 最近记录: |