git push -f origin master和git push origin master之间的区别--force?

问题描述:

今天,我试图使用git filter-branch永久删除所有提交中的文件。之后,我需要明确强制推送,以确保所有协作者都可以在没有此文件的情况下访问存储库。git push -f origin master和git push origin master之间的区别--force?

所以,我试着git push -f origin <branch-name>,这给了我通常的“确保你有正确的访问权限”错误。

所以,我做了以下命令:

git push -f origin <branch-name> 
git checkout <branch-name> 
git push origin <branch-name>:<branch-name> --force 

git push origin master --force后,它的工作。为什么以及这有什么不同?谢谢。

+2

您是否对'branch-name'或'master'进行了更改?你的问题不清楚。 –

+0

我对主分支以外的分支进行了更改。由于'master'是一个分支,我试图通过使用'branch-name'来使问题更一般化。如果这改变了这个问题的答案,那么很抱歉不清楚。 – Hunle

git push -f <remote> <branch>git push --force <remote> <branch>之间没有区别。 -f只是--force的简写。

git checkout <branch-name>结帐退出<branch-name>。由于您指定了要推送的分支,因此没有任何效果。

git push origin <branch-name>:<branch-name> --force将您在当地的<branch-name>中的提交推送到遥控器的<branch-name>。由于分支名称相同,因此与git push origin <branch-name> --force相同。

如果您遇到了访问错误,但没有访问其他错误,那么您可能没有使用正确的凭据。

https://git-scm.com/docs/git-push

+0

我已更新我的问题更详细的信息 - 遗憾的是不包括此前。 – Hunle

+0

我同意他可能使用了错误的凭证。 –