Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何修改旧的现有推式提交?_Git - Fatal编程技术网

Git 如何修改旧的现有推式提交?

Git 如何修改旧的现有推式提交?,git,Git,查看我的提交树,我看到一个相对较旧的推送的提交描述不正确。 我想换一下。可能吗?我怎么做 提交已推送到服务器。提交是一个旧的提交,之后有很多提交被推送。我只想更改消息,而不是内容。无论如何,您必须执行强制推送(不推荐),这将从提交中重写整个树 git rebase -i HEAD~n # Displays a list of the last n commits on the current branch 从列表中可以看出 pick e499d89 Delete CNAME pick 0c39

查看我的提交树,我看到一个相对较旧的推送的提交描述不正确。 我想换一下。可能吗?我怎么做


提交已推送到服务器。提交是一个旧的提交,之后有很多提交被推送。我只想更改消息,而不是内容。

无论如何,您必须执行
强制推送
(不推荐),这将从提交中重写整个树

git rebase -i HEAD~n # Displays a list of the last n commits on the current branch
从列表中可以看出

pick e499d89 Delete CNAME
pick 0c39034 Better README
pick f7fde4a Change the commit message but push the same commit.

# Rebase 9fdb3bd..f7fde4a onto 9fdb3bd
pick
更改为
reword
like

pick e499d89 Delete CNAME
reword 0c39034 Better README #line to change the message
pick f7fde4a Change the commit message but push the same commit.

# Rebase 9fdb3bd..f7fde4a onto 9fdb3bd
  • 保存并关闭提交列表文件。在每个结果提交文件中, 键入新的提交消息,保存文件,然后关闭它

    然后


希望这有帮助。有关更多信息,您必须执行强制推送操作(不推荐),该操作将从提交中重写整个树

git rebase -i HEAD~n # Displays a list of the last n commits on the current branch
从列表中可以看出

pick e499d89 Delete CNAME
pick 0c39034 Better README
pick f7fde4a Change the commit message but push the same commit.

# Rebase 9fdb3bd..f7fde4a onto 9fdb3bd
pick
更改为
reword
like

pick e499d89 Delete CNAME
reword 0c39034 Better README #line to change the message
pick f7fde4a Change the commit message but push the same commit.

# Rebase 9fdb3bd..f7fde4a onto 9fdb3bd
  • 保存并关闭提交列表文件。在每个结果提交文件中, 键入新的提交消息,保存文件,然后关闭它

    然后

希望这有帮助。更多信息

可能吗

是的,伊兹梅翁特的回答涵盖了这一点

我怎么做

不要。提交消息是提交的一部分,并影响SHA1哈希(以及其他元数据,如父提交)

因此,更改消息将创建一个新的提交(在树上具有相同的效果),并因此重写每个后续提交以更改其父级

也就是说,它从原始提交的新版本开始构建一个并行的重复时间线。任何其他与最初的时间表背道而驰的人都会不高兴

可能吗

是的,伊兹梅翁特的回答涵盖了这一点

我怎么做

不要。提交消息是提交的一部分,并影响SHA1哈希(以及其他元数据,如父提交)

因此,更改消息将创建一个新的提交(在树上具有相同的效果),并因此重写每个后续提交以更改其父级


也就是说,它从原始提交的新版本开始构建一个并行的重复时间线。任何其他人都会对原始时间线不满意。

可能重复我尝试过的这个,但它不适用于旧的提交。或者我只是不知道如何将它应用到旧的文件中。@mm759它不是“未推送的提交”,而是“推送的提交”@btw。以防你听到下面的答案。请注意,所有其他已经有这段历史的人都会恨你。因为在重写的commit之上创建的任何commit的每个分支都必须手动重新设置基址,以使事情正确。阅读git rebase手册页的底部,了解如何从上游rebase恢复您将要做的事情。可能是我尝试过的重复,但它不适用于旧的提交。或者我只是不知道如何将它应用到旧的文件中。@mm759它不是“未推送的提交”,而是“推送的提交”@btw。以防你听到下面的答案。请注意,所有其他已经有这段历史的人都会恨你。因为在重写的commit之上创建的任何commit的每个分支都必须手动重新设置基址,以使事情正确。阅读git rebase手册页的底部,了解如何从上游rebase恢复您将要做的事情。请注意,即使您说服所有人容忍您的历史重写,他们仍然会保留旧的提交,直到它被垃圾回收,注意,即使你说服了所有人容忍你的历史重写,他们仍然会保留旧的提交,直到它被垃圾收集,如果他们想让它永远存在,他们也可以对它进行标记。