我只想将 TortoiseGit 的最后一次提交推送到 sourceforge 存储库。以前的所有内容都不得推送。据说我可以创建一个新分支并推送这个分支。但是新分支包含所有以前的提交,而不仅仅是最后一个提交。
我做错了什么?
谢谢!
我认为这主要是对git工作原理的误解。当你推送一个提交时,如果该提交有一个父级,git 将确保该父级也在远程仓库中。除了稀疏克隆(这对于保留带宽和/或磁盘使用量可能很有用,但对如何与远程存储库交互施加了一些限制)之外,git 旨在保持对象数据库的完整和一致性。如果您可以推送提交而其父级也不在存储库中,则会违反完整性/一致性。因此,根据设计,你不能只推送一个提交而不使用 git 确保保留提交世系。
也就是说,有两种特定方法可以安排只推送单个提交:1)确保要推送的提交的父级已经在远程数据库中(例如,使用rebase
将分支上的所有提交压缩为单个提交,并在必要时可能重新定位该分支 - 但这可能不是您的工作流程的最佳选择), 或 2) 确保要推送的提交没有父项 - 例如 git checkout -b somebranch --orphan
最新版本的 git 中,然后创建提交。