所以基本上,我知道要看到过去的git提交,你会做git log。但是在我的公司,我们在一次提交时使用gerrit,并对这些提交进行修改。我如何看到对该特定提交的所有过去的修改,所以我看到他们的每个提交消息,我可以在修正之间进行区分?谢谢!
答案 0 :(得分:3)
如果所有修订都具有相同的Change-Id
,那么其中一个是一个更改的补丁集。你没有在问题中指明差异是如何显示的,所以这是可能的解决方案之一。
ssh -p <port> <username>@<gerrithost> gerrit query commit:<commit-id> --patch-sets --format=json
port
默认为29418; username
是要运行的gerrit用户名
gerrit query
。它应该被赋予阅读裁判的权利
存储库; gerrithost
是您的gerrit的主机名或IP地址; commit-id
是提交的sha1值。--format=json
是可选的。默认格式为text
。输出包括有关更改补丁集的详细信息,包括以下条目:
ref: refs/changes/90/812290/3
ref: refs/changes/90/812290/2
ref: refs/changes/90/812290/1
这些是Gerrit为每个推送到refs/for
目的地的提交创建的引用。如果您知道号码812290
,则可以使用change:812290
替换commit:<commit-id>
中的gerrit query
。在本地存储库中获取这些引用:
git fetch origin refs/changes/90/812290/3
下载这些引用指向的提交,然后您可以运行git命令来根据需要操作它们。
git diff commit1 commit2
您可以在Gerrit的文档中搜索gerrit query
以了解详情。
答案 1 :(得分:0)
简短回答,这是不可能的。
修改后的提交实际上是全新的提交,之前的提交将不再在您当前的分支上。
也就是说,您无法访问修改过的提交。
作为替代方案,您可以将所有更改应用为单独的提交,并在使用squash完成审核 interactive rebase (部分:Squashing提交)时将其应用。
答案 2 :(得分:0)
Assuming all "amendments" have the same Change-ID,
(which is how Gerrit associates a set of commits to the same Gerrit-Change,
you can choose which versions of a change you would like to compare to each-other.
The default behavior is to compare the Base (first commit in the set) to the latest one.
In your local (git-)branch, you could also see the different versions of your change
by using the git reflog
command.
(git reflog
shows the history of your work like breadcrumbs,
and you can even show
and cherry-pick
any of those revisions)
答案 3 :(得分:0)
使用 $ git log --reflog
就好像引用日志提到的所有对象都在命令行中列为 commit
。