git推送分支与主分支的差异

git推送分支与主分支的差异,git,github,push,branch,Git,Github,Push,Branch,假设有一个名为debug的新本地分支,并且主分支已推送到原点。99%的调试分支与主分支相同。 当我使用gitpush-uorigindebug时,它开始上传整个大约1G的项目。 是否可以不上传整个1gig项目作为一个新的分支,只上传更改后的文件并复制(或者克隆或重用)已上传的主文件中的其余文件?AFAIK您无能为力。Git只发送需要发送的内容。因此,如果有大量数据被传输,那么这意味着您进行了许多更改(至少从git的角度来看) 当您谈论1GB的数据时,我猜您的存储库中有二进制文件。 如果这是真的,

假设有一个名为debug的新本地分支,并且主分支已推送到原点。99%的调试分支与主分支相同。 当我使用gitpush-uorigindebug时,它开始上传整个大约1G的项目。
是否可以不上传整个1gig项目作为一个新的分支,只上传更改后的文件并复制(或者克隆或重用)已上传的主文件中的其余文件?

AFAIK您无能为力。Git只发送需要发送的内容。因此,如果有大量数据被传输,那么这意味着您进行了许多更改(至少从git的角度来看)

当您谈论1GB的数据时,我猜您的存储库中有二进制文件。
如果这是真的,你可以考虑使用Git LFS特性。这将在将来对您有所帮助,但现在对您没有帮助(除非您重写整个git历史)。

只要您使用“智能”传输协议和GitHub,一般情况下已经是这样了。有一些特殊的例外情况,这应该是罕见的。你使用的是浅层克隆吗?(这可能会触发一个例外。)最有可能的情况是,您提交了一个大文件的添加,随后可能会删除同一个大文件,在这种情况下,Git必须按中间提交所需推送大文件的内容。无浅层克隆!刚刚使用了常规的
git分支
@torekIf如果您所做的只是创建一个指向现有提交的新分支名称,
git push
应该非常快:您的git会调用他们的git,说“我需要您提交H”(对于一些散列H),他们会说“我有H,不要发送它”。然后您的git会说:“好了,你现在什么都有了;请创建指向提交H的名称
debug
。“他们应该说“ok,done”或“I't would,因为我不会”(填写空白),对话应该在此时结束。但是,在这种情况下,
debug
master
完全相同。您说的是“99%“。你认为另外1%来自哪里?在进行调试分支后,我调试了6个文件@斗牛士