将新分支推入远程再次推送所有内容

时间:2015-09-18 15:40:01

标签: git bitbucket git-branch git-push

我从develop创建了一个新分支master。然后我使用来自git push -u origin develop分支的develop将新分支推送到远程分支。此命令花了太多时间来推送新的develop分支。输出是:

$ git push -u origin develop
Counting objects: 11531, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6217/6217), done.
Writing objects: 100% (11531/11531), 38.90 MiB | 142.00 KiB/s, done.
Total 11531 (delta 6220), reused 7234 (delta 3876)
remote: 
remote: Create pull request for develop:
remote:   https://bitbucket.org/scupids/supertext/pull-requests/new?source=develop&t=1
remote: 
To https://knoxxs@bitbucket.org/scupids/supertext.git
 * [new branch]      develop -> develop
Branch develop set up to track remote branch develop from origin.
$

从输出看起来它再次推动了一切。它推动了约40 MiB个数据。

仅供参考,原产地托管在Bitbucket上。

以下是log命令的输出:

$ git log --oneline --graph --all --decorate
* faa7d51 (HEAD, origin/master, origin/develop, master, develop) adds profile data to customer DTO
* 1f562c1 UI/ latest compiled css
* d19ccb0 UI/ Added customer stream and basic styling
.
.
.

我无法理解为什么会这样?

2 个答案:

答案 0 :(得分:2)

Git每次都不会推送所有内容。

这种情况的可能解释:您克隆了一些存储库,然后将本地存储库的origin url更改为指向另一个(可能是空的)存储库(git不会使{{1}无效在这种情况下分支)。然后你推了,git在另一边没有发现任何提交,所以它必须从remotes/origin/*推送每个提交。

我刚刚使用Bitbucket HTTPS传输测试:简单"新分支" develop传输大约200个字节(请参阅push行):

POST git-receive-pack

答案 1 :(得分:0)

我认为这是git的正常行为。

想象一下,没有与远程主分支同步的人想要打开你的分支,其中包含一些他尚未拥有的提交。

您认为它的工作方式会阻止此用户拉动您的分支,因为他没有丢失提交而没有同步他的本地主分支。

由于您的分支树从头开始包含每个提交,因此不会发生此问题,并且用户无论如何都可以提取您的分支。