我发现我经常这样做。
git pull
或git pull --rebase
我想知道是否有一种方法可以指定“最后一次拉或合并之前的HEAD
状态”,这样我就可以始终运行相同的命令。
git log -p HEAD@{before pull}..HEAD
简单地始终使用HEAD@{1}
是关闭的,可能对git pull
起作用,但对git pull --rebase
不起作用,因为这会将多个条目添加到重触发器中:
$ git reflog
4111cc6 (HEAD -> master) HEAD@{0}: rebase finished: returning to refs/heads/master
4111cc6 (HEAD -> master) HEAD@{1}: pull --rebase: A local commit
b795f99 (origin/master, origin/HEAD) HEAD@{2}: pull --rebase: checkout b795f9924503c05da91b08e0e9ad3ffb48229bc8
d3379e5 HEAD@{3}: commit: A local commit
发布于 2018-03-15 07:36:15
另一种选择是使用分支重放。在重基过程中,HEAD
重放将获得多个条目,但分支重发应该只在最后得到一个条目。(至少在我的测试中起作用。)所以这并不完全是“一个总是相同的命令”,但是
git diff master@{1}..master
更接近你想要的。
另一种选择是使用基于时间的重放符号。例如,如果您知道HEAD
在过去没有移动,比如5分钟,那么在重基之后立即可以这样说
git diff HEAD@{5.minutes.ago}..HEAD
而且,只要在HEAD
第一次更新后5分钟内没有奇怪的慢下来,这应该是可以的。但当然,如果rebase
导致冲突解决,可能会出现如此缓慢的解决方案,而且总的来说,这是一个半生不熟的解决方案,我只提到这是因为它通常在命令之间的变化较小的情况下工作。
您可以在合并之前记录系统时间,然后说
git diff HEAD@{10:25:03}
以避免依赖于重基定时。但是现在又回到记录要插入命令的值了。
更新-删除了我最初提到的一个选项,因为它并没有真正做正确的事情;今天感冒时,头脑有点模糊。
https://stackoverflow.com/questions/49301956
复制相似问题