3

我只想将 TortoiseGit 的最后一次提交推送到 sourceforge 存储库。所有之前的都不会被推送。据说我可以创建一个新分支并推送这个分支但是新分支包含所有以前的提交,而不仅仅是最后一个。

我究竟做错了什么?

谢谢!

4

1 回答 1

2

我认为这主要是对 git 工作原理的误解。当你推送一个提交时,如果该提交有一个父级,git 将确保该父级也在远程存储库中。除了稀疏克隆(这可能有助于保留带宽和/或磁盘使用,但对如何与远程存储库交互施加一些限制),git 旨在保持对象数据库的完整性和一致性。如果您可以在其父母不在存储库中的情况下推送提交,则会违反完整性/一致性。因此,按照设计,您不能只推送一个提交而不使用 git 确保保留提交沿袭。

也就是说,有两种特定的方法可以安排只推送一个提交:1)确保您要推送的提交的父级已经在远程数据库中(例如,用于rebase将分支上的所有提交压缩到单个提交,并可能在必要时重新定位该分支 - 但这可能不是您的工作流程的最佳选择),或 2)确保您要推送的提交没有父级 - 例如git checkout -b somebranch --orphan在最新版本的 git 中,然后创建你的承诺。

于 2012-05-24T14:17:57.117 回答