擅长:python、mysql、java
<p>Git不推送<em>文件</em>。Git推送<em>提交</em>。如果文件在某个提交中,并且您推送提交,则他们将获得该文件。如果你不推送那个提交,他们可能已经有了文件,但是你不推送的提交不会让他们得到它</p>
<p>如果您想绝对确保不会意外地推送任何<em>确实</em>有该文件的提交,请确保没有此类提交,方法是不提交该文件。否则,请小心推送哪些提交:当您推送包含该文件的任何提交时,它们就拥有该文件(因为它们拥有该提交,而该提交拥有该文件)</p>
<p>如果您需要从现有提交中删除文件,那么您也必须删除提交本身,因为任何提交都不能更改,一位也不能更改。完全去除它们并不容易,但可以做到。您可能需要新的和改进的提交,您可以使用<em>来代替</em>旧的提交。要以自动化的方式手动完成这项工作并不有趣,您可能会想使用<code>git filter-branch</code>,这是一个非常复杂的Git命令,有大量的选项,可以对存储库做很多事情,或者使用<a href="https://rtyley.github.io/bfg-repo-cleaner/" rel="nofollow noreferrer">BFG</a>,一个Java工具,它只做<code>git filter-branch</code>所做的事情的一个非常有限的子集,但是速度更快,用户更友好<a href="https://stackoverflow.com/search?q=%5Bgit%5D+bfg">See the many StackOverflow questions about the BFG.</a></p>