精简版
当我在Github上比较两个分支时,它不会比较最新的状态,而是基本分叉的当前状态与最后一个公共提交(或者我错了吗?); 那么如何比较Github上的最新状态/头?
更长的版本
我想在Github上比较两个存储库.
它似乎没有比较两个存储库的最新状态.相反,它比较:
同
您可以在Github的fork比较示例中看到这一点,它说这两个存储库之间没有任何变化,但现在有很大不同.
如何比较Github上的最新状态/头?
有没有任何占位符显示提交的分支名称是git --pretty=format(在git log和git show中)?
喜欢%H提交哈希?
这是我在尝试比较分支和主服务器之间的文件时得到的结果:
git diff gamemodes/terrortown/entities/entities/ttt_c4/shared.lua
master:gamemodes/terrortown/entities/entities/ttt_c4/shared.lua
fatal: Path 'gamemodes/terrortown/entities/entities/ttt_c4/shared.lua'
exists on disk, but not in 'master'.
Run Code Online (Sandbox Code Playgroud)
这是master上的文件:
$ git log -n 1 -- gamemodes/terrortown/entities/entities/ttt_c4/shared.lua
commit d0241471298ce617b68dcf268be1c0af0cf8170c
Author: me
Date: Fri Jan 1 23:25:17 2016 -0600
December 2015 Update
Run Code Online (Sandbox Code Playgroud)
这是我的分支real_disarm上的文件:
$ git log -n 1 -- gamemodes/terrortown/entities/entities/ttt_c4/shared.lua
commit 84a7de46b92b8747cf98a57a8f7101682377980e
Author: me
Date: Sun Jan 10 00:27:33 2016 -0600
Remove trailing whitespace
Run Code Online (Sandbox Code Playgroud)
显然,该文件存在于两个分支中.我正在比较文件的全部原因是因为我正在尝试删除尾随空格,以便我的补丁不会给出恼人的"警告:压制5个空格错误警告:10行添加空白错误." 输出.
我想在travis上列出拉取请求中修改的所有文件.
我试过$(git diff --name-only $TRAVIS_PULL_REQUEST_BRANCH $(git merge-base $TRAVIS_PULL_REQUEST_BRANCH master))但git不知道TRAVIS_PULL_REQUEST_BRANCH,因为它是在一个分叉的回购.
我还尝试了git rev-list和$ TRAVIS_COMMIT_RANGE但它还包括主分支上的新提交.
知道如何获取由PR专门修改的文件吗?
当git告诉我我的本地分支在master之后时,我如何告诉git打印出我背后的日志消息.例如,在下面的情况下,如何查看我在master上没有的2个提交源/主站的日志消息?
git status
# On branch master
# Your branch is behind 'origin/master' by 2 commits, and can be fast-forwarded.
#
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud) 自从我上次查看它以来,我希望能够看到分支中的更改,但是忽略了同时发生的master更改。
F - G H - I
/ /
A - B - C - D - E
Run Code Online (Sandbox Code Playgroud)
我有两个提交范围c3af8fc5..7ccc4b49(由表示B - G)和4dfdabdd..301a443c(由表示E - I)。
想象一下,您正在为您的同事进行代码审查,签出他在local上的分支,您HEAD现在指向G。您进行代码审查,然后继续其他工作。
经过一段时间,新提交出现在大师(C,D和E)和你的同事已经解决了从您的评论的意见。他压扁的更改提交F和G,因为他改名方法介绍F和固定它的用法G。他还根据Master调整了分支,以确保一切正常。
现在,您想再次进行代码审查,但是您懒于再次对整个分支进行代码审查,因此您只想查看上次更改的内容。您仍然有从本地获取的旧裁判。你是做什么?
您可以执行类似的操作git-diff G I,但这也可以向您显示master的更改,这些更改根本无济于事。
您也可以将旧的refs放在当前的master上,然后进行比较。这可能会有所帮助,但也可能存在很多冲突,这可能会使再次审查整个分支变得更加容易。
我试过差异补丁
diff <(git-diff c3af8fc5...7ccc4b49) <(git-diff 4dfdabdd...301a443c)
Run Code Online (Sandbox Code Playgroud)
它可以帮助我将注意力转移到某个地方,但这很粗糙。
您知道解决这个问题的更好,更原生的方法吗?谢谢。
编辑:我刚刚发现了interdiff,这使得比较两个diff更好
interdiff <(git-diff -U100 c3af8fc5...7ccc4b49) <(git-diff -U100 4dfdabdd...301a443c) | colordiff
Run Code Online (Sandbox Code Playgroud)
但是仍然缺少git可能提供的上下文-所以...还有什么更好的吗?
我有一个我想删除的分支,但可能能够恢复它的完整历史 - 有没有办法做到这一点?所以想要这个:
a - b - c - d - e master
\
f - g tmp
Run Code Online (Sandbox Code Playgroud)
成为:
a - b - c - d - e
Run Code Online (Sandbox Code Playgroud)
并a - b - f - g以某种方式存储我可以重新应用它 - 它可能吗?
我想获得自主分支分支以来已编辑文件的列表(不是与主分支的最新头进行比较,而是与分支点的主分支进行比较)。
这可能吗?
这似乎是一件很常见的事情,但我的同事不知道 git 命令,也没有在网上找到任何东西(我猜用谷歌搜索有点困难)。
是否可以使用 GitHub Web 界面显示 2 个分支之间的差异?是否可以使用 GitHub Web 界面显示 2 个提交之间的差异?