git amend需要git push -f吗?

3
make changes
git commit 'made changes' -a
git push origin
make more changes
git ammend -a
git push origin

我注意到当我执行git commit --ammend -a,然后尝试将其推送到远程仓库时,需要强制推送(git push -f)。
我的猜测是因为它正在尝试推送相同的提交代码,但发现文件有差异。
这是否正确/正常?

1
没有 git amend 命令;你是指的 git commit --amend 吗? - Marco Leogrande
@MarcoLeogrande 谢谢,已经做出了修改,我太习惯使用我的别名 >_< - d-_-b
1
有点跑题,但我认为在提交代码之后修改该提交是一个不好的主意。你的代码已经在服务器上了。接受它,创建一个新的提交包含你忘记放入原始提交中的更改。然后再推送新的提交即可。 - Guido Simone
1个回答

7

git commit --amend 或者 git commit --author=<author>,如果有任何修改,都会生成不同的SHA1。
然后,是的,需要使用git push -f

git amend可以像这篇博客文章中所述的那样定义为别名:

git config --global alias.amend 'commit --amend -C HEAD'

这个别名添加了一个git amend命令,它会在修改提交信息时重用当前的提交信息。

1
另请参阅以下链接以获取更多信息:https://dev59.com/hWgv5IYBdhLWcg3wQ-qd#10728453。但要注意`git push -f`的危险;) https://dev59.com/gXVC5IYBdhLWcg3wjx_u - VonC
谢谢@VonC,正如我所料。那么有没有办法规避这个问题或者知道是否可以安全地忽略它?(我可以考虑将远程拉到本地并使用git diff吗?) - d-_-b
你确定要忽略 push -f 吗?如果你想要推送一个已修改的提交(即相同内容,但由于元数据信息的修改而具有不同的SHA1),那么你将无法这样做。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接