【发布时间】:2021-09-30 05:58:18
【问题描述】:
我正在为 Udacity 程序开发 Python/Git 项目,我被告知需要修复我的提交消息以遵守 Udacity 格式(被指示为“鼓励”而不是“必需” ,但没关系)。但是,我无法使用 git rebase 命令替换现有的提交消息。
我尝试使用来自gitHub docs 的建议,使用git rebase -i HEAD~13(修改我所有的提交),然后在最初的rebase 提示中,我将每个提交行从pick 更改为reword,然后完成放入新提交消息的过程。但是,最后,我的分支中添加了 13 个新提交,每个提交都有新的提交消息。现有的提交保持不变。
然后我尝试使用StackOverflow 中的此解决方案,其中涉及使用git rebase 并将每个提交设置为edit,并使用git commit --amend 修改最后一个提交,然后使用git rebase --continue 前进到下一个,用--amend 将每个提交慢慢修改为“最近的”。在这种情况下,它还向分支添加了一系列新提交,而没有实际编辑旧提交。
这可能是因为我已经在 gitHub 上将我的分支推送到了原点吗?还是因为我的分支已经合并?如果这是一个愚蠢的问题,我深表歉意,但我在谷歌上找不到任何关于这个特定问题的结果,除了更多的说明来做我已经做过的事情。
我的仓库:https://github.com/WJTownsend/pdsnd_github
【问题讨论】:
-
你问如何没有旧的提交?这将涉及重写 git 历史记录。
-
我最初的想法是你还没有在 rebase 之后强制推出你的分支。但是,“或者因为我的分支已经合并了”是什么意思?
-
实际上不可能更改任何提交的任何部分。提交的哈希 ID 是存储在该提交中的所有数据的加密校验和,因此哈希 ID 是提交,反之亦然。这就是为什么 Git 所做的一切都会永远存在(或者直到人们停止使用它),这就是为什么“更改提交”真正意味着“进行新的提交并使用它来代替仍然存在的旧提交”。
-
我显然误解了你可以用
rebase或git commit --amend做什么。我认为可以修改消息,尤其是在 rebase 中使用reword中的措辞。当然,这可能是一种不好的做法,但可能。就像我在上面说的那样,我正在学习,但我发现它实际上并没有说“这根本不可能”。不知道为什么会被否决,但我很欣赏这里的答案。
标签: git