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