2012-09-30 36 views
2
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)。做git修改需要一个git push -f?

我的猜测是因为它试图推动相同的(?什么字?)提交代码,但注意到文件的差异。

这是正确的吗?

+1

没有'git modify'命令;你指的是'git commit --amend'吗? –

+0

@MarcoLeogrande谢谢你的改变,我已经习惯了我的别名'> _ <' –

+1

有点偏离主题,但我认为在你提交了一个提交之后,对该提交做一个修改是一个坏主意。你的提交就在那里。接受。创建一个新的提交,其中包含您忘记放在原始文件中的更改。然后推这个。 –

回答

7

A git commit --amendgit commit --author=<author>,如果有任何修改,将生成不同的SHA1。
然后,是的,git push -f将需要。

git amend可以在该blog post被定义为一个别名等:

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

此别名添加git amend命令,将重新使用当前时修改它提交消息。

+1

另请参阅以获取更多信息:http://stackoverflow.com/a/10728453/6309。小心git push -f'虽然危险;)http://stackoverflow.com/questions/253055/how-do-i-push-amended-commit-to-the-remote-git-repo – VonC

+0

THanks @VonC就像我怀疑的一样。那么是否有任何方法可以绕过这个问题,或者知道忽视它是否安全? (我可以认为拉本地和'git diff'?) –

+0

@iight忽略'push -f'?如果你想推回一个*修改的*提交(即,由于修改后的元数据信息,具有不同的SHA1的相同内容),你将无法做到这一点。 – VonC