Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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
如何更改我的1推式github的git消息?_Git_Github - Fatal编程技术网

如何更改我的1推式github的git消息?

如何更改我的1推式github的git消息?,git,github,Git,Github,我的环境: 我正在与github私有存储库团队合作 我们只有主分行 重现问题: 我做了一些改变(我说的是单一的,而不是多重的),并将+commit+push添加到github私有存储库中 推送之后,我在github中看到了这条消息——我有一个错误,我想改变 如何更改推送消息 编辑: 重要的是,我的错误信息不会留下任何历史 Edit2: 已推送的文件位于github存储库中,而不仅仅位于我的本地存储库中TL;DR git commit -v --amend git push -f 这将允许您编辑

我的环境:

我正在与github私有存储库团队合作

我们只有主分行

重现问题:

  • 我做了一些改变(我说的是单一的,而不是多重的),并将+commit+push添加到github私有存储库中

  • 推送之后,我在github中看到了这条消息——我有一个错误,我想改变

  • 如何更改推送消息

  • 编辑: 重要的是,我的错误信息不会留下任何历史

    Edit2: 已推送的文件位于github存储库中,而不仅仅位于我的本地存储库中

    TL;DR

    git commit -v --amend
    git push -f
    
    这将允许您编辑最后一条提交消息,并用您的编辑替换远程上的提交

    但是

    git commit -v --amend
    git push -f
    
    你很可能只需要推动修正就更好了

    更改现有提交的唯一方法是:

    git add changed # example, add changed to the commit
    git commit -v --amend # launch editor, edit commit message
    
    这将允许您轻松编辑上次提交(内容或提交消息)

    然后,您将发现无法推送到远程,当您尝试时,将被拒绝,并显示如下警告:

    ! [已拒绝]主机->主机(非快进) 错误:无法将某些引用推送到'git@github.com:xxx/xxx.git' 为防止丢失历史记录,拒绝了非快进更新 在再次按下之前,合并远程更改(例如“git pull”)。见 有关详细信息,请参阅“git推送--帮助”的“关于快进的注意”部分。 这为您提供了两种选择:

  • 先拉,再推
  • 强制推送(
    git-push-f
  • 如果您先拉-您将把未编辑的提交放回历史记录中,它仍然存在,但推送到远程分支不会有问题。原始提交将作为合并显示在历史记录中

    如果强制推送,实际上就是强制远程分支接受本地历史记录并覆盖远程分支的历史记录

    git自己的帮助中的注释也许最适合用来描述为什么强制推送通常是个坏主意:

    通常,该命令拒绝更新远程引用,该远程引用不是用于覆盖它的本地引用的祖先。此标志将禁用检查这可能导致远程存储库丢失提交;小心使用

    在上下文中,“丢失的提交”将是您编辑的提交的旧版本,但也可能包括同事在您的第一次推送和强制推送之间所做的更改。出于这个原因,这是一个冒险的策略


    如果您需要它,它是可以做到的——但是要么快速行动(以便没有人下载borked提交),要么知道您将给任何其他开发人员带来问题,并将其推到该分支

    如果没有其他人收到带有错误消息的提交,您可以将头部指针重置为提交前的状态:

    git reset --soft HEAD^
    
    这将撤消上次提交,并将文件作为暂存文件放入该提交中,您可以使用新消息再次提交。请注意,您必须使用--force推送,因为实际上您正在覆盖服务器上的历史记录:

    git commit -m 'new and correct message goes here'
    git push --force origin master