Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git远程分支重用大型文件_Git - Fatal编程技术网

Git远程分支重用大型文件

Git远程分支重用大型文件,git,Git,嗨 我有两个本地分支-master和test 我将一个20MB的文件添加到分支master,并将其推送到远程master 现在我将master合并到test中。并将test推到远程test 现在我必须再次上传20MB。关于这个问题呢 两个远程分支位于同一个远程分支上 (master) touch hugefile (master) git add hugefile (master) git commit -m "huge" (master) git push origin master (u

嗨 我有两个本地分支-
master
test

我将一个20MB的文件添加到分支
master
,并将其推送到远程
master

现在我将
master
合并到
test
中。并将
test
推到远程
test

现在我必须再次上传20MB。关于这个问题呢

两个远程分支位于同一个远程分支上

(master) touch hugefile
(master) git add hugefile 
(master) git commit -m "huge"
(master) git push origin master  (upload 20MB)
(test)   git merge master
(test)   git push origin test       (< upload 20 MB again)
(主控)触摸雨果文件
(主)git添加hugefile
(主)git提交-m“巨大”
(主机)git推送源主机(上传20MB)
(测试)git合并主机
(测试)git推送源测试(<再次上传20 MB)
解决方案

检测为文本的
autocrlf=True
二进制文件可能有问题

我通过强制git将*.pdf文件检测为二进制文件来解决这个问题


Git将不会再次上载该文件。文件内容将作为blob存储在存储库中,多个提交可以指向该存储库(通过.trees)。执行新提交时,为其创建的树对象将指向您第一次添加的文件。在您的特定情况下,合并只需将
test
分支移动到与
head
相同的位置,并在推送时将该信息发送回服务器。将不会添加任何文件

你确定它真的在重新上传吗?我认为git应该足够聪明,能够传输关于更改内容的信息,而不是重新发送整个文件。可能是一个
git获取——所有的
都丢失了。