如何git日志修改

时间:2017-11-14 16:02:28

标签: git gerrit

所以基本上,我知道要看到过去的git提交,你会做git log。但是在我的公司,我们在一次提交时使用gerrit,并对这些提交进行修改。我如何看到对该特定提交的所有过去的修改,所以我看到他们的每个提交消息,我可以在修正之间进行区分?谢谢!

4 个答案:

答案 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)

简短回答,这是不可能的。

来自Atlassian's Git Tutorials

  

修改后的提交实际上是全新的提交,之前的提交将不再在您当前的分支上。

也就是说,您无法访问修改过的提交。

作为替代方案,您可以将所有更改应用为单独的提交,并在使用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