1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

git pushを小分けにして、最大アップロードサイズ制限を回避するワンライナー

Posted at

githubからgitlabへの以降などで大量のコミットをpushしようとするとアップロードサイズの制限に引っ掛かる場合があります。以下は200MB以上を一度にアップロードできない場合の出力例を示します

$ git push -u origin
Enumerating objects: 42153, done.
Counting objects: 100% (42153/42153), done.
Delta compression using up to 12 threads
Compressing objects: 100% (14835/14835), done.
remote: fatal: pack exceeds maximum allowed size (200.00 MiB)
...

この場合数百コミットごとにpushすることでこのエラーを回避できます。
masterブランチをおよそ256コミットずつコミットする方法を示します

git log --pretty=format:"%H" --reverse | grep -e "^00" | xargs -IX git push -u origin X:refs/heads/master
git push origin --all
  • git log --pretty=format:"%H" --reverse

これはコミットハッシュを最古から順に一行ずつ表示します。

  • grep -e "^00"

これは標準入力を一行ずつ精査し約256個に1個のコミットを通します。確率的に256コミットに1つはコミットのハッシュ値が00から始まります。

  • xargs -IX git push -u origin X:refs/heads/master

通されたコミットハッシュまでをmasterブランチにコミットしています

  • git push origin --all

残留コミットをすべてpushします。

最後に

もっといい方法があれば記事をアップデートします。
コメントいただければ嬉しいです。

貴方の御用のためにお使いください

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?