我做了一个git提交和随后的推送.我想更改提交消息.如果我理解正确,这是不可取的,因为有人可能在我进行此类更改之前从远程存储库中取出.如果我知道没有人拉过怎么办?
有没有办法做到这一点?
当我使用我的源代码工作时,我做了我惯常的事情提交,然后我推送到远程存储库.但后来我注意到我忘了在源代码中组织我的导入.所以我做了修改命令来替换以前的提交:
> git commit --amend
Run Code Online (Sandbox Code Playgroud)
不幸的是,提交不能被推回到存储库.这被拒绝了:
> git push origin
To //my.remote.repo.com/stuff.git/
! [rejected] master -> master (non-fast forward)
error: failed to push some refs to '//my.remote.repo.com/stuff.git/'
Run Code Online (Sandbox Code Playgroud)
我该怎么办?(我可以访问远程存储库.)
我想更改之前推送的提交消息。此外,在那之后我还推送了其他提交。如果我更改提交消息,旧消息将显示在 Git 提交历史记录中。
我决定退回一些提交,因为我遵循的路径是错误的.所以我检查了Added cordova to .gitignore提交,并做了一些修改.如下图所示:

现在,当我推送新修改时,会显示一条错误消息:
error: src refspec (detached from aad6423) does not match any.
我怎么能告诉git丢弃以前的提交(紫色)并继续我当地的HEAD作为主人?
有没有办法改变已经推送到git远程存储库的特定旧(不是最新/后面)提交的注释?提交的内容没有变化.我只需要更改我所做的评论,这是一个完全错误!
谢谢
我做了一个Git提交和推送,但在评论中写了完全错误的东西.
如何更改评论?我已经将提交推送到遥控器.
我用"git replace"替换了一个分支(没有共同的祖先)22b2b25来代替master中的提交.我希望这种改变是永久性的.我对以前的历史不感兴趣.在下面的输出中,前五个提交来自原始主分支,而底部2来自不同的分支.
当我把它推到一个新的存储库时,git-replace丢失了,旧的历史又重新出现了.有没有办法让这种变化永久化?
分支大师在原始仓库中看起来像下面.我希望在远程仓库和后续克隆中看到这一点.
[mike@localhost canal_site]$ git log --oneline --decorate
cdf0ae3 (HEAD, origin/master, master) MM: sqlencode course name for ad-hoc courses
2b57df5 MM: fixes for changes so far
7916eaf MM: ad hoc - more refactoring
1e00d22 MM: reformatted code
e36cee1 factored out equal ops
22b2b25 (origin/prod20140313, prod20140313) initial load from production 9-June-2015
08379cd initial inclusion of production files from 9-June-2015
Run Code Online (Sandbox Code Playgroud)