1

我想实现 featureX 并在编写后提交了它

git commit -m "featureX"

之后我做了一些更改并由

git commit -m "yo1"

通过

git rebase -i HEAD~2

再次进行一些更改并由

git commit -m "yo1"

通过

git rebase -i HEAD~3

现在 git log 显示 -

featureX
yo1
yo2

我想将提交消息 yo1 和 yo2 更改为 change1 和 change2。

另外,我想知道我在yo1和yo2中所做的更改,因为我忘记了我在yo1和yo2中所做的更改。

4

4 回答 4

3

压缩提交意味着为您的提交生成一个新的哈希 id,并将您的提交更改合并到一个提交中。您的提交树中有关提交消息 yo1 和 yo2 的提交的所有信息现在都丢失了(合并到 featureX 中)。

但是,如果您知道它们的提交哈希 id 并且还考虑到 git 没有通过垃圾收集,您仍然可以看到它们。它们仍然会作为一个物体与你的分支分离。

执行git reflog以找出与您的提交消息(yo1 或 yo2)关联的哈希 id。

然后你可以简单地git show hashid#来查看你在那里所做的提交更改。

如果您只是想更改提交消息,它会简单得多,可以通过以下方式完成

git commit --amend

或者

git rebase -i HEAD~1(-i 代表交互模式)

于 2017-01-26T18:42:30.243 回答
2

您可以使用:

git commit --amend -m "New commit message"

修改最近的提交,因为 squash 提交是一个多合一的squashed 提交。

于 2017-01-26T17:43:18.343 回答
0

为了编辑该 HEAD(当前提交),您可以使用

git commit --amend

另外,我想知道如何才能看到我在 yo1 和 yo2 中所做的更改

为了查看最新提交的内容并更新它

git commit --amend --verbose

在此处输入图像描述 为了查看给定提交的内容,您可以使用

git show <sha-1>

在此处输入图像描述

于 2017-01-26T18:37:21.700 回答
0

您无法知道原始更改,因为 squash 将所有提交合并为一个。它进行了新的提交

amend您可以使用最后一次提交或interactive rebase和编辑选项更改提交描述

Git commit --amend
于 2017-01-26T17:41:47.713 回答