【发布时间】:2014-03-04 17:16:32
【问题描述】:
场景解释:我已经完成了我的功能并推送到某个 git 分支并将提交版本共享给我的项目经理。后来,我意识到我错过了一个功能,我想将它推送到同一个分支而不记录任何提交。新推送的提交应该附加到最后一次提交,并使用我共享给我的项目经理的相同提交版本.
【问题讨论】:
标签: git github git-commit
场景解释:我已经完成了我的功能并推送到某个 git 分支并将提交版本共享给我的项目经理。后来,我意识到我错过了一个功能,我想将它推送到同一个分支而不记录任何提交。新推送的提交应该附加到最后一次提交,并使用我共享给我的项目经理的相同提交版本.
【问题讨论】:
标签: git github git-commit
提交哈希取决于几个因素:
有关更多信息,请参阅此问题:How does git compute file hashes?
所以,如果你引入一个新的提交,你将总是收到一个新的哈希。
既然您已经推送了提交,请创建一个新的提交,输入适当的提交消息并同时推送此提交。
是的,您将不得不告诉您的项目经理再次获取,但是修改提交有什么问题?
如果你还没有推送你的提交,你想这样做
git commit --amend
但这也会导致不同的提交哈希。
【讨论】:
就像埃克斯说的,这是不可能的。
有几种解决方法,具体取决于您的需要。
1) 如果它足够快并且还没有其他人提交,您可以用 git reset --hard 覆盖树并“避免分支通过该特定提交”。当您在代码上有一些不应该被其他人看到的东西时,这很好。
git reset --hard hashLastValidCommit
git add files
git commit -m"xxxx"
git push -f
注意:提交仍然存在,但它不再在任何分支中,并且很难在没有哈希的情况下捕捉到。
2) 你也可以做一个 rebase 并将这些提交(新的和不完整的)合并为一个。这比上一步更有效率。
3) 如果您还没有推送提交,那完全是另一个主题。只需进行修改或重置,但无论如何哈希都会改变。
这是一篇关于如何创建哈希的有趣文章,这将为您提供更好的视角并让您走上正轨。
http://alblue.bandlem.com/2011/08/git-tip-of-week-objects.html
【讨论】:
试试
git commit --amend --no-edit.
【讨论】: