gpt4 book ai didi

Git commit --amend merge 两个提交

转载 作者:太空狗 更新时间:2023-10-29 14:26:01 25 4
gpt4 key购买 nike

我有一个远程“开发”分支并在本地处理它。

我使用提交消息“my_feature”在“dev”上进行了第一次提交,将我的本地分支领先于远程 1 次提交。

然后我开发了一些新东西并制作了一个 git add -u,准备提交。然后我意识到我想将之前的提交消息修改为“my_feature (1/2)”,使我当前的提交消息为“my_feature (2/2)”,将我的本地分支提前 2 次提交。

所以我做了一个 git commit --amend(我认为它只会编辑之前提交的消息),将“my_feature”提交消息编辑为“my_feature (1/2)”并且.. . 以一次提交结束,标记为“my_feature (1/2)”拥有我的所有更改(第一次提交 + 暂存文件差异)——我的索引现在是干净的。

所以如果我做对了,我的命令实际上做了一个提交,还提交了暂存文件,这产生了一个( merge 的?)提交?

我没想到 Git 会做这样的事情。我只是想编辑我的旧提交消息,而不是将旧提交消息与我当前的暂存文件 merge 。(现在我想到了 rebase 本来可以更好。)

虽然我能理解为什么 git commit --amend 可以提交(即使我只想编辑提交消息),我还是无法理解 Git 如何将我的两个提交 merge 到一个带有 commit 命令。

谁能给我解释一下?

$ git --version
git version 1.7.10.4

最佳答案

如果您有暂存文件并执行

git commit --amend

您将创建一个新的提交,其中包含之前提交中的所有内容以及暂存的所有内容,并且这个新提交将替换之前的提交作为您已 checkout 的分支的提示。

git commit --amend 没有任何暂存文件可用于更改提交消息,但请注意,即使在没有暂存文件的情况下,您也会得到一个新的 sha1,换句话说新提交。

来自documentation :

Used to amend the tip of the current branch. Prepare the tree object you would want to replace the latest commit as usual (this includes the usual -i/-o and explicit paths), and the commit log editor is seeded with the commit message from the tip of the current branch. The commit you create replaces the current tip — if it was a merge, it will have the parents of the current tip as parents — so the current top commit is discarded.

关于Git commit --amend merge 两个提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28631204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com