我git
经常使用它来与其他人协作。当我们在共享存储库上一起工作时,我希望能够查看其他人在我上次提交和当前 master 分支(或当前HEAD
)之间发生的更改。
到目前为止,我正在使用以下工作流程:
git fetch # download everything
git merge # since I'm a trusting person ;)
git logadog # my git-alias for `git log --all --decorate --oneline --graph`
# manually look into how many commits were performed since my last commit
git diff HEAD~3 # if 3 commits were performed since then
或者,我也可以使用git diff c0ffee
(如果我最后一次提交是c0ffee
)。
虽然这有效,但我更喜欢更简单的东西,例如git diff COMPARE_HEAD_WITH_THE_LAST_COMMIT_FROM_MY_USER
,但我不确定它是如何工作的。
我也在使用很棒的vim
插件fugitive
由 Tim Pope 撰写,如果可以使用:Gdiffsplit HEAD~THE_STUFF_FROM_ABOVE
- 语法来做到这一点,那就太棒了。
答案1
这不是一种非常“类似 git”的解决问题的方法。通常你会保留一个指向你最后一次提交的分支。
不过,要回答这个问题,请尝试以下辅助函数。这不会很有效,我可能需要使用一些较低级别的命令。
my_last_commit(){
local ME="$(git config user.name)"
git log --format='%h%n' --author="$ME" -1
}
然后你可以这样做git diff $(my_last_commit)..HEAD
(如果你愿意,可以省略 HEAD,因为它是默认的)或git logadog $(my_last_commit)^..
答案2
不要成为一个如此容易信任的人。 ;-)
实在抱歉。更严肃地说——合并之前的那一刻是检查你的工作和同事的工作之间发生了什么变化的最佳时机。如果您在合并之前运行它,这将向您显示合并时将要更改的内容:
git fetch
git diff ...@{upstream}
事实上,在我自己的工作流程中,我有一个“whatsnew”别名git log ..@{upstream}
。
如果您想先合并然后再提出问题,您可以创建一个临时分支作为地标:
git fetch
git branch -c my_last_commit # or use -C to overwrite if it already exists
git merge
git diff my_last_commit...