clone git อย่างเร็วด้วย shallow clone

Posted on August 2, 2017

หากต้องการแค่ใช้ code ล่าสุดโดยไม่สนใจประวัติการแก้ไขก่อนหน้านั้น หรือต้องการใช้กับ Continuous Integration (CI) เราสามาถเลือกความลึกของประวัิตได้ ด้วย --depth n

ตัวอย่าง: ความลึกเท่ากับ 1 จะได้ commit ล่าสุดเพียง commit เดียว ด้วยขนาด 14MiB

$ git clone --depth 1 https://github.com/NixOS/nixpkgs
Cloning into 'nixpkgs'...
remote: Counting objects: 20622, done.
remote: Compressing objects: 100% (14606/14606), done.
remote: Total 20622 (delta 592), reused 14395 (delta 339), pack-reused 0
Receiving objects: 100% (20622/20622), 14.38 MiB | 152.00 KiB/s, done.
Resolving deltas: 100% (592/592), done.

$ git log --oneline
87b215d5 (grafted, HEAD -> master, origin/master, origin/HEAD) android-studio-preview: 3.0.0.7 -> 3.0.0.8

เทียบกับ full clone: ได้ประวัติตั้งแต่เริ่ม ด้วยขนาด 513Mib

$ git clone https://github.com/NixOS/nixpkgs
Cloning into 'nixpkgs'...
remote: Counting objects: 959262, done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 959262 (delta 5), reused 3 (delta 3), pack-reused 959244
Receiving objects: 100% (959262/959262), 513.09 MiB | 35.00 KiB/s, done.
Resolving deltas: 100% (641363/641363), done.
      
      title        clone git อย่างเร็วด้วย shallow clone    
      url            /posts/git-tip-shallow-clone_th/      
      path          posts/git-tip-shallow-clone_th.md     
      date          August  2, 2017     
      author   
      metadata 
      missing  
      teaser   
      snippet