如何 git 记录修改
how to git log amendments
所以基本上,我知道要查看过去的 git 提交,你需要做 git 日志。但是在我的公司,我们与 gerrit 合作完成一项提交,然后您对该提交进行修改。我如何查看该特定提交的所有过去修改,以便我看到他们的每个提交消息并且我可以区分这些修改?谢谢!
简答,那是不可能的。
Amended commits are actually entirely new commits and the previous commit will no longer be on your current branch.
也就是说,您将无法访问修改后的提交。
作为替代方案,您可以将所有更改作为单独的提交应用,并在完成审查时应用 squash (section: Squashing commits) them using interactive rebase。
假设所有 "amendments" 具有相同的 Change-ID,
(这就是 Gerrit 如何将一组提交关联到同一个 Gerrit-Change,
您可以选择要相互比较的更改版本。
默认行为是将 Base(集合中的第一个提交)与 latest 进行比较。
在您的本地 (git-) 分支中,您还可以看到您的更改的不同版本
通过使用 git reflog
命令。
(git reflog
像面包屑一样显示您的工作历史,
你甚至可以 show
和 cherry-pick
任何这些修订)
如果所有的修改都相同Change-Id
,那么它们就是一个修改的补丁集。您没有在问题中指定如何显示差异,因此这是可能的解决方案之一。
ssh -p <port> <username>@<gerrithost> gerrit query commit:<commit-id> --patch-sets --format=json
port
默认为29418;
username
是 运行 的 gerrit 用户名
gerrit query
。应该赋予它阅读 refs 的权利
存储库;
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
替换 gerrit query
中的 commit:<commit-id>
。在本地存储库中获取这些引用:
git fetch origin refs/changes/90/812290/3
下载这些引用指向的提交,然后您可以 运行 git 命令来随意操作它们。
git diff commit1 commit2
您可以在 Gerrit 的文档中搜索 gerrit query
以了解更多信息。
使用 $ git log --reflog
就好像 reflogs 提到的所有对象都在命令行上列为 commit
。
所以基本上,我知道要查看过去的 git 提交,你需要做 git 日志。但是在我的公司,我们与 gerrit 合作完成一项提交,然后您对该提交进行修改。我如何查看该特定提交的所有过去修改,以便我看到他们的每个提交消息并且我可以区分这些修改?谢谢!
简答,那是不可能的。
Amended commits are actually entirely new commits and the previous commit will no longer be on your current branch.
也就是说,您将无法访问修改后的提交。
作为替代方案,您可以将所有更改作为单独的提交应用,并在完成审查时应用 squash (section: Squashing commits) them using interactive rebase。
假设所有 "amendments" 具有相同的 Change-ID,
(这就是 Gerrit 如何将一组提交关联到同一个 Gerrit-Change,
您可以选择要相互比较的更改版本。
默认行为是将 Base(集合中的第一个提交)与 latest 进行比较。
在您的本地 (git-) 分支中,您还可以看到您的更改的不同版本
通过使用 git reflog
命令。
(git reflog
像面包屑一样显示您的工作历史,
你甚至可以 show
和 cherry-pick
任何这些修订)
如果所有的修改都相同Change-Id
,那么它们就是一个修改的补丁集。您没有在问题中指定如何显示差异,因此这是可能的解决方案之一。
ssh -p <port> <username>@<gerrithost> gerrit query commit:<commit-id> --patch-sets --format=json
port
默认为29418;username
是 运行 的 gerrit 用户名gerrit query
。应该赋予它阅读 refs 的权利 存储库;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
替换 gerrit query
中的 commit:<commit-id>
。在本地存储库中获取这些引用:
git fetch origin refs/changes/90/812290/3
下载这些引用指向的提交,然后您可以 运行 git 命令来随意操作它们。
git diff commit1 commit2
您可以在 Gerrit 的文档中搜索 gerrit query
以了解更多信息。
使用 $ git log --reflog
就好像 reflogs 提到的所有对象都在命令行上列为 commit
。