为什么GIT有时只会将更改推送到服务器,有时甚至是所有内容?

时间:2013-02-20 14:33:54

标签: git github

对于当前项目,我们在github上有一个存储库。每次我处理一个问题时,我都会创建一个本地分支,并在完成后将其推送到repo。有时推送是即时的,有时我必须等待它将所有文件上传到repo(150MB)。我不确定,但我认为当我创建一个本地分支工作时,同时主分支得到更新,我当前的本地落后,推送到服务器总是需要更长的时间。

我使用

分支localy
git checkout -b branch_name_issue_num

然后,当我完成后,我将更改推送到repo上的新分支

git push origin branch_name_issue_num

有什么想法为什么有时会再次上传所有文件?

1 个答案:

答案 0 :(得分:1)

当'即时推送'时,最有可能是指快进合并 - 即远程分支中没有变化,因为您创建了本地功能分支它。在这种情况下,remote只接受您的更改并更新分支指针。

引用git documentation

  

你会注意到那个合并中的短语“快进”。因为您合并的分支所指向的提交直接位于您所在的提交的上游,所以Git将指针向前移动。换句话说,当你尝试将一个提交与可以通过遵循第一个提交的历史记录到达的提交合并时,Git通过向前移动指针来简化事情,因为没有不同的工作要合并在一起 - 这称为“快进“。

关于问题的第二部分,很难准确理解你的问题是什么?我你正在推动你的本地功能分支并创建一个远程功能分支,但是当你说“为什么它再次上传所有文件?”时我不知道你的意思。

没有深入研究细节,git将文件存储为对象 - 它没有“文件”的概念。如果您修改现有文件,git将不会存储该文件的全新版本,而是存储两者之间差异的增量。