Vivasoft-logo

ā§§ā§Ļ.ā§­ āĻ°āĻ•ā§āĻˇāĻ¨āĻžāĻŦā§‡āĻ•ā§āĻˇāĻŖ āĻ“ āĻ¤āĻĨā§āĻ¯āĻžāĻĻāĻŋ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ°

āĻ°āĻ•ā§āĻˇāĻŖāĻžāĻŦā§‡āĻ•ā§āĻˇāĻŖ āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ°:

āĻŽāĻžāĻā§‡ āĻŽāĻžāĻā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ•āĻŋāĻ›ā§ āĻ•ā§āĻ˛āĻŋāĻ¨āĻ†āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ – āĻāĻ•āĻŸāĻŋ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ•ā§‡ āĻ†āĻ°ā§‹ āĻŦā§‡āĻļāĻŋ āĻ•āĻŽā§āĻĒā§āĻ¯āĻžāĻ•ā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻ•āĻŋāĻ‚āĻŦāĻž āĻšāĻžāĻ°āĻžāĻ¨ā§‹ āĻĄāĻžāĻŸāĻž āĻĢāĻŋāĻ°ā§‡ āĻĒā§‡āĻ¤ā§‡ āĻ‡āĻŽā§āĻĒāĻ°ā§āĻŸā§‡āĻĄ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸā§‹āĻ°āĻŋāĻ•ā§‡ āĻ•ā§āĻ˛āĻŋāĻ¨-āĻ†āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ¨āĻŋāĻšā§‡ āĻāĻ‡ āĻĻā§ƒāĻļā§āĻ¯āĻĒāĻŸ āĻ¨āĻŋā§Ÿā§‡ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤

āĻ°āĻ•ā§āĻˇāĻŖāĻžāĻŦā§‡āĻ•ā§āĻˇāĻŖ:

āĻŽāĻžāĻā§‡ āĻŽāĻžāĻā§‡, āĻ—āĻŋāĻŸ āĻ¸ā§āĻŦā§ŸāĻ‚āĻ•ā§āĻ°āĻŋā§ŸāĻ­āĻžāĻŦā§‡ “auto gc” āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻŸāĻŋ āĻ°āĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— āĻ¸āĻŽā§Ÿ āĻāĻ‡ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻŸāĻŋ āĻ•āĻŋāĻ›ā§āĻ‡ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ¯āĻĻāĻŋ āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻ˛ā§āĻœ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ (āĻĒā§āĻ¯āĻžāĻ•āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ¨āĻ¯āĻŧ āĻāĻŽāĻ¨ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ) āĻŦāĻž āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ¯āĻžāĻ•āĻĢāĻžāĻ‡āĻ˛ āĻĨāĻžāĻ•ā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ—āĻŋāĻŸ āĻāĻ•āĻŸāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āĻ—āĻŋāĻŸ gc āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻšāĻžāĻ˛ā§ āĻ•āĻ°ā§‡ āĨ¤ “gc” āĻŦāĻ˛āĻ¤ā§‡ āĻŦā§‹āĻāĻžāĻ¯āĻŧ āĻ—āĻžāĻ°āĻŦā§‡āĻœ āĻ¸āĻ‚āĻ—ā§āĻ°āĻšā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻāĻŦāĻ‚ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻŸāĻŋ āĻŦā§‡āĻļ āĻ•āĻŋāĻ›ā§ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡: āĻāĻŸāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ˛ā§āĻœ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸāĻ•ā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻĒā§āĻ¯āĻžāĻ•āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ°āĻžāĻ–ā§‡, āĻāĻŸāĻŋ āĻĒā§āĻ¯āĻžāĻ•āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻĄāĻŧ āĻĒā§āĻ¯āĻžāĻ•āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡, āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻāĻŽāĻ¨ āĻ…āĻŦā§āĻœā§‡āĻ•ā§āĻŸāĻ—ā§āĻ˛ā§‹āĻ•ā§‡ āĻ¸āĻ°āĻŋāĻ¯āĻŧā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¯ā§‡āĻ—ā§āĻ˛āĻŋ āĻ•ā§‹āĻ¨āĻ“ āĻ•āĻŽāĻŋāĻŸ āĻĨā§‡āĻ•ā§‡ āĻĒā§ŒāĻāĻ›āĻžāĻ¨ā§‹ āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻž āĻāĻŦāĻ‚ āĻ•āĻ¯āĻŧā§‡āĻ• āĻŽāĻžāĻ¸ āĻĒā§āĻ°āĻ¨ā§‹ āĨ¤

āĻ†āĻĒāĻ¨āĻŋ “auto gc” āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻŸāĻŋ āĻŽā§āĻ¯āĻžāĻ¨ā§ā§ŸāĻžāĻ˛āĻŋ āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤
				
					$ git gc --auto
				
			
āĻ†āĻŦāĻžāĻ°, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻŸāĻŋ āĻ•ā§‹āĻ¨ āĻ•āĻŋāĻ›ā§ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤ Git āĻāĻ•āĻŸāĻŋ gc āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžā§ŸāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ 7,000 āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻŦāĻž 50 āĻŸāĻŋāĻ° āĻŦā§‡āĻļāĻŋ āĻĒā§āĻ¯āĻžāĻ•āĻĢāĻžāĻ‡āĻ˛ āĻĨāĻžāĻ•āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¸ā§‡āĻ‡ āĻ¸ā§€āĻŽāĻžāĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ gc.auto āĻāĻŦāĻ‚ gc.autopacklimit config āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻĻāĻŋā§Ÿā§‡āĨ¤

gc āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¯ā§‡āĻŸāĻŋ āĻšāĻ˛ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨āĻ¸āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻĒā§āĻ¯āĻžāĻ• āĻ•āĻ°āĻŦā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ¤ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻļāĻžāĻ–āĻž (branch) āĻāĻŦāĻ‚ āĻŸā§āĻ¯āĻžāĻ— āĻĨāĻžāĻ•ā§‡:
				
					$ find .git/refs -type f
.git/refs/heads/experiment
.git/refs/heads/master
.git/refs/tags/v1.0
.git/refs/tags/v1.1

				
			
āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻŋ git gc āĻšāĻžāĻ˛āĻžāĻ¨, āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻ° āĻāĻ‡ āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ refs āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋāĻ¤ā§‡ āĻ°āĻžāĻ–āĻŦā§‡āĻ¨ āĻ¨āĻžāĨ¤ āĻ—āĻŋāĻŸ āĻ¤āĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ .git/packed-refs āĻ¨āĻžāĻŽā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ¸āĻ°āĻžāĻŦā§‡, āĻ¯āĻž āĻāĻ‡āĻ°āĻ•āĻŽ āĻĻā§‡āĻ–āĻžāĻŦā§‡āĨ¤
				
					$ cat .git/packed-refs
# pack-refs with: peeled fully-peeled
cac0cab538b970a37ea1e769cbbde608743bc96d refs/heads/experiment
ab1afef80fac8e34258ff41fc1b867c702daa24b refs/heads/master
cac0cab538b970a37ea1e769cbbde608743bc96d refs/tags/v1.0
9585191f37f7b0fb9444f35a9bf50de191beadc2 refs/tags/v1.1
^1a410efbd13591db07496601ebc7a059dd55cfe9

				
			
āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°ā§‡āĻ¨, āĻ¤āĻŦā§‡ Git āĻāĻ‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻ¨āĻ¤ā§āĻ¨ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ refs/heads āĻ āĻ˛ā§‡āĻ–ā§‡āĨ¤ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ¯ā§āĻ•ā§āĻ¤ SHA-1 āĻĒā§‡āĻ¤ā§‡, Git āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ āĻ āĻ¤āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻšā§‡āĻ• āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ packed-refs āĻĢāĻžāĻ‡āĻ˛ āĻāĻ° āĻ¸āĻžāĻĨā§‡ fallback āĻ•āĻ°ā§‡āĨ¤ āĻ¤āĻžāĻ‡ āĻ†āĻĒāĻ¨āĻŋ refs āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋāĻ¤ā§‡ āĻĒāĻžāĻŦā§‡āĻ¨ āĻ¨āĻž, āĻ¸ā§‡āĻŸāĻŋ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ†āĻĒāĻ¨āĻžāĻ° packed-refs āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻļā§‡āĻˇ āĻ˛āĻžāĻ‡āĻ¨ āĻ¨ā§‹āĻŸāĻŋāĻļ āĻ•āĻ°ā§āĻ¨, āĻ¯āĻž āĻāĻ•āĻŸāĻŋ ^ āĻĻāĻŋā§Ÿā§‡ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧāĨ¤ āĻāĻ° āĻŽāĻžāĻ¨ā§‡ āĻ‰āĻĒāĻ°ā§‡āĻ° āĻŸā§āĻ¯āĻžāĻ— āĻāĻ•āĻŸāĻŋ āĻāĻ¨ā§‹āĻŸā§‡āĻļāĻ¨āĻžāĻ˛ āĻŸā§āĻ¯āĻžāĻ— āĻāĻŦāĻ‚ āĻ¤āĻžāĻ° āĻ˛āĻžāĻ‡āĻ¨āĻŸāĻŋ āĻšāĻ˛ āĻāĻ¨ā§‹āĻŸā§‡āĻļāĻ¨āĻžāĻ˛ āĻŸā§āĻ¯āĻžāĻ—ā§‡āĻ° āĻ•āĻŽāĻŋāĻŸ āĨ¤

āĻĄā§‡āĻŸāĻž āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ°

āĻ†āĻĒāĻ¨āĻžāĻ° āĻ—āĻŋāĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻ¸āĻŽā§Ÿ āĻ­ā§āĻ˛āĻ•ā§āĻ°āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻŽāĻŋāĻŸ āĻšāĻžāĻ°āĻŋā§Ÿā§‡ āĻĢā§‡āĻ˛āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤, āĻāĻŸāĻŋ āĻ¤āĻ–āĻ¨āĻ‡ āĻ˜āĻŸā§‡ āĻ¯āĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§‹āĻ¨ā§‹ āĻāĻ•āĻŸāĻž āĻŦā§āĻ°āĻžāĻžā§āĻšā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽā§Ÿ āĻ­ā§āĻ˛āĻŦāĻļāĻ¤ āĻ¸ā§‡āĻŸāĻŋ āĻĢā§‹āĻ°ā§āĻ¸ āĻĄāĻŋāĻ˛āĻŋāĻŸ āĻ•āĻ°āĻ›ā§‡āĻ¨ āĻ•āĻŋāĻ‚āĻŦāĻž āĻ•ā§‹āĻ¨ā§‹ āĻāĻ•āĻŸāĻž āĻŦā§āĻ°āĻžāĻžā§āĻš āĻšāĻžāĻ°ā§āĻĄ āĻ°āĻŋāĻ¸ā§‡āĻŸ āĻ•āĻ°āĻ›ā§‡āĻ¨āĨ¤ āĻ§āĻ°ā§‡ āĻ¨āĻŋāĻ˛āĻžāĻŽ, āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻž āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻĒā§œāĻ›ā§‡āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻŽāĻŋāĻŸāĻ—ā§āĻ˛ā§‹ āĻĢāĻŋāĻ°āĻŋā§Ÿā§‡ āĻ†āĻ¨āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨?

āĻāĻ–āĻžāĻ¨ā§‡ āĻāĻ• āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§‡āĻ“ā§ŸāĻž āĻšāĻ˛ā§‹āĻƒ āĻ§āĻ°ā§‡āĻ¨, āĻ†āĻĒāĻ¨āĻžāĻ° āĻŸā§‡āĻ¸ā§āĻŸ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ° āĻŽāĻžāĻ¸ā§āĻŸāĻžāĻ° āĻŦā§āĻ°āĻžāĻžā§āĻš āĻšāĻžāĻ°ā§āĻĄ āĻ°āĻŋāĻ¸ā§‡āĻŸ āĻ•āĻ°ā§‡ āĻĢā§‡āĻ˛āĻ˛ā§‡āĻ¨, āĻāĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ° āĻšāĻžāĻ°āĻžāĻ¨ā§‹ āĻ•āĻŽāĻŋāĻŸ āĻ°āĻŋāĻ•ā§‹āĻ­āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻšā§āĻ›ā§‡āĻ¨āĨ¤ āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻĻā§‡āĻ–ā§‡ āĻ¨āĻŋāĻ‡ āĻ¯ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ° āĻ°āĻŋāĻĒā§‹āĻ¸āĻŋāĻŸāĻ°āĻŋ āĻāĻ‡ āĻŽā§‚āĻšā§āĻ°ā§āĻ¤ā§‡ āĻ•āĻŋ āĻ…āĻŦāĻ¸ā§āĻĨāĻžā§Ÿ āĻ†āĻ›ā§‡āĻƒ
				
					$ git log --pretty=oneline
ab1afef80fac8e34258ff41fc1b867c702daa24b Modify repo.rb a bit
484a59275031909e19aadb7c92262719cfcdf19a Create repo.rb
1a410efbd13591db07496601ebc7a059dd55cfe9 Third commit
cac0cab538b970a37ea1e769cbbde608743bc96d Second commit
fdf4fc3344e67ab068f836878b6c4951e3b15f3d First commit

				
			
āĻāĻ–āĻ¨, āĻŽāĻžāĻ¸ā§āĻŸāĻžāĻ° āĻŦā§āĻ°āĻžāĻžā§āĻšāĻ•ā§‡ āĻŽāĻžāĻā§‡āĻ° āĻ•āĻŽāĻŋāĻŸā§‡ āĻ¨āĻŋā§Ÿā§‡ āĻ¯āĻžāĻ‡āĻƒ
				
					$ git reset --hard 1a410efbd13591db07496601ebc7a059dd55cfe9
HEAD is now at 1a410ef Third commit
$ git log --pretty=oneline
1a410efbd13591db07496601ebc7a059dd55cfe9 Third commit
cac0cab538b970a37ea1e769cbbde608743bc96d Second commit
fdf4fc3344e67ab068f836878b6c4951e3b15f3d First commit

				
			
āĻ†āĻĒāĻ¨āĻŋ āĻāĻ–āĻ¨ āĻ¸āĻŦāĻžāĻ° āĻ‰āĻĒāĻ°ā§‡āĻ° āĻĻā§āĻ‡āĻŸāĻž āĻ•āĻŽāĻŋāĻŸ āĻšāĻžāĻ°āĻŋā§Ÿā§‡ āĻĢā§‡āĻ˛āĻ›ā§‡āĻ¨ – āĻ†āĻĒāĻ¨āĻžāĻ° āĻāĻ–āĻ¨ āĻāĻŽāĻ¨ āĻ•ā§‹āĻ¨ā§‹ āĻŦā§āĻ°āĻžāĻžā§āĻš āĻ¨ā§‡āĻ‡ āĻ¯āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻšāĻžāĻ°āĻžāĻ¨ā§‹ āĻ•āĻŽāĻŋāĻŸ āĻ—ā§āĻ˛ā§‹ āĻĢāĻŋāĻ°ā§‡ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻ•āĻŽāĻŋāĻŸā§‡āĻ° SHA-1 āĻ–ā§āĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻž āĻŦā§āĻ°āĻžāĻžā§āĻš āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻŽāĻ¨ āĻ¨āĻž āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻ•āĻŽāĻŋāĻŸā§‡āĻ° SHA-1 āĻŦā§‡āĻ° āĻ•āĻ°āĻžāĻ° āĻŸā§āĻ°āĻŋāĻ• āĻŸāĻŋ āĻŽā§āĻ–āĻ¸ā§āĻĨ āĻ•āĻ°ā§‡ āĻ°āĻžāĻ–āĻ›ā§‡āĻ¨, āĻ¤āĻžāĻ‡āĻ¨āĻž?

āĻāĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻĻā§āĻ°ā§āĻ¤āĻ¤āĻŽ āĻ‰āĻĒāĻžā§Ÿ āĻšāĻ˛ā§‹ git reflog āĻ¨āĻžāĻŽāĻ• āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻ–āĻ¨ āĻ•āĻŋāĻ›ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡āĻ¨, āĻ—āĻŋāĻŸ āĻ¤āĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° HEAD āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ•āĻ°ā§‡ āĻ°āĻžāĻ–ā§‡āĨ¤ āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§‡āĻ•āĻŦāĻžāĻ° āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻŽāĻŋāĻŸ āĻ•āĻŋāĻ‚āĻŦāĻž āĻŦā§āĻ°āĻžāĻžā§āĻšā§‡ āĻ•ā§‹āĻ¨ā§‹ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻĨā§‡ reflog āĻ†āĻĒāĻĄā§‡āĻŸ āĻšāĻŦā§‡āĨ¤ reflog āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ git update-ref āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§Ÿ,āĻ†āĻĒāĻ¨āĻžāĻ° āĻ°ā§‡āĻĢ āĻĢāĻžāĻ‡āĻ˛āĻ¸ āĻ—ā§āĻ˛ā§‹āĻ¤ā§‡ SHA-1 āĻ˛ā§‡āĻ–āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻāĻ‡āĻŸāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯āĻžā§Ÿ āĻ¯ā§‡āĻŸāĻž āĻ†āĻŽāĻ°āĻž Git References āĻšā§āĻ¯āĻžāĻĒā§āĻŸāĻžāĻ°ā§‡ āĻ•āĻžāĻ­āĻžāĻ° āĻ•āĻ°āĻ›āĻŋāĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ° āĻŦā§āĻ°āĻžāĻžā§āĻš āĻ•āĻŋ āĻ…āĻŦāĻ¸ā§āĻĨāĻžā§Ÿ āĻ†āĻ›ā§‡ āĻ¤āĻž āĻ¸āĻŦāĻ¸āĻŽā§Ÿ git reflog āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨āĻƒ
				
					$ git reflog
1a410ef HEAD@{0}: reset: moving to 1a410ef
ab1afef HEAD@{1}: commit: Modify repo.rb a bit
484a592 HEAD@{2}: commit: Create repo.rb

				
			
āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻ°āĻž āĻĻā§āĻ‡āĻŸāĻž āĻ•āĻŽāĻŋāĻŸ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›āĻŋ āĻ¯ā§‡āĻ—ā§āĻ˛ā§‹ āĻ†āĻŽāĻ°āĻž āĻšā§‡āĻ• āĻ†āĻ‰āĻŸ āĻ•āĻ°ā§‡ āĻĢā§‡āĻ˛āĻ›āĻŋ, āĻ¯āĻĻāĻŋāĻ“ āĻāĻ–āĻžāĻ¨ā§‡ āĻŦā§‡āĻļāĻŋ āĻ¤āĻĨā§āĻ¯ āĻ¨āĻžāĻ‡āĨ¤ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ¤āĻĨā§āĻ¯ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°āĻ˛ā§‡ āĻ¸ā§‡āĻŸāĻž āĻ†āĻ°ā§‹ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻšāĻ¤ā§‹ āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻ¸ā§‡āĻ‡āĻŸāĻž git log -g āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ, āĻ¯āĻž āĻ¨āĻŋāĻšā§‡āĻ° āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻĻā§‡āĻ–āĻžāĻŦā§‡āĻƒ
				
					
$ git log -g
commit 1a410efbd13591db07496601ebc7a059dd55cfe9
Reflog: HEAD@{0} (Scott Chacon <schacon@gmail.com>)
Reflog message: updating HEAD
Author: Scott Chacon <schacon@gmail.com>
Date:   Fri May 22 18:22:37 2009 -0700

		Third commit

commit ab1afef80fac8e34258ff41fc1b867c702daa24b
Reflog: HEAD@{1} (Scott Chacon <schacon@gmail.com>)
Reflog message: updating HEAD
Author: Scott Chacon <schacon@gmail.com>
Date:   Fri May 22 18:15:24 2009 -0700

       Modify repo.rb a bit

				
			
āĻāĻ–āĻžāĻ¨ā§‡ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›āĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻŦāĻžāĻ° āĻ¨āĻŋāĻšā§‡āĻ° āĻ•āĻŽāĻŋāĻŸ āĻŸāĻž āĻšāĻžāĻ°āĻŋā§Ÿā§‡ āĻĢā§‡āĻ˛āĻ›ā§‡ā§āĻ¨, āĻ¤āĻžāĻ‡ āĻāĻ‡ āĻ•āĻŽāĻŋāĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻž āĻ¨āĻ¤ā§āĻ¨ āĻŦā§āĻ°āĻžāĻžā§āĻš āĻ•ā§āĻ°āĻŋā§Ÿā§‡āĻŸ āĻ•āĻ°ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ°āĻŋāĻ•ā§‹āĻ­āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ†āĻĒāĻ¨āĻŋ recover-branch āĻ¨āĻžāĻŽā§‡āĻ° āĻāĻ•āĻŸāĻž āĻŦā§āĻ°āĻžāĻžā§āĻš āĻ•ā§āĻ°āĻŋā§Ÿā§‡āĻŸ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻāĻŦāĻ‚ āĻ¸ā§‡āĻ‡āĻŸāĻž (ab1afef) āĻ•āĻŽāĻŋāĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§āĻ•ā§āĻ¤āĻƒ
				
					$ git branch recover-branch ab1afef
$ git log --pretty=oneline recover-branch
ab1afef80fac8e34258ff41fc1b867c702daa24b Modify repo.rb a bit
484a59275031909e19aadb7c92262719cfcdf19a Create repo.rb
1a410efbd13591db07496601ebc7a059dd55cfe9 Third commit
cac0cab538b970a37ea1e769cbbde608743bc96d Second commit
fdf4fc3344e67ab068f836878b6c4951e3b15f3d First commit

				
			
āĻ āĻŋāĻ• āĻ†āĻ›ā§‡- āĻāĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻžāĻ›ā§‡ recover-branch āĻ¨āĻžāĻŽāĻ• āĻāĻ•āĻŸāĻž āĻŦā§āĻ°āĻžāĻžā§āĻš āĻ†āĻ›ā§‡ āĻ¯āĻžāĻ•ā§‡ master āĻŦā§āĻ°āĻžāĻžā§āĻš āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒā§āĻ°āĻĨāĻŽā§‡āĻ° āĻĻā§āĻ‡āĻŸāĻž āĻ•āĻŽāĻŋāĻŸ āĻ†āĻŦāĻžāĻ°ā§‹ āĻĢāĻŋāĻ°ā§‡ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻāĻ–āĻ¨, āĻ§āĻ°ā§‡āĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ° āĻšāĻžāĻ°āĻžāĻ¨ā§‹ āĻĄāĻžāĻŸāĻž āĻ•ā§‹āĻ¨ā§‹ āĻ•āĻžāĻ°āĻŖā§‡ reflog āĻ āĻ¨ā§‡āĻ‡ āĨ¤ āĻ¸ā§‡āĻŸāĻž recover-branch āĻ¨āĻžāĻŽāĻ• āĻŦā§āĻ°āĻžāĻžā§āĻš āĻāĻŦāĻ‚ reflog āĻĄāĻŋāĻ˛āĻŋāĻŸ āĻ•āĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸āĻŋāĻŽā§āĻ˛ā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨āĨ¤ āĻāĻ–āĻ¨, āĻĒā§āĻ°āĻĨāĻŽā§‡āĻ° āĻĻā§āĻ‡āĻŸāĻž āĻ•āĻŽāĻŋāĻŸā§‡ āĻ•ā§‹āĻ¨ā§‹āĻ­āĻžāĻŦā§‡āĻ‡ āĻĒā§‹āĻāĻ›āĻžāĻ¨ā§‹ āĻ¸āĻŽā§āĻ­āĻŦ āĻ¨āĻžāĨ¤
				
					
$ git branch -D recover-branch
$ rm -Rf .git/logs/

				
			
āĻ•āĻžāĻ°āĻŖ reflog āĻĄāĻžāĻŸāĻž .git/logs/ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋāĻ¤ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻĨāĻžāĻ•ā§‡, āĻ¤āĻžāĻ‡ āĻāĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻ•ā§‹āĻ¨ā§‹ reflog āĻ¨āĻžāĻ‡āĨ¤ āĻāĻ–āĻ¨, āĻāĻ–āĻžāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻŽāĻŋāĻŸ āĻ°āĻŋāĻ•ā§‹āĻ­āĻžāĻ°āĻŋ āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡? git fsck āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ•āĻ°āĻž āĻ¯āĻžāĻŦā§‡,āĻ¯ā§‡āĻŸāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻœ āĻ‡āĻ¨ā§āĻŸāĻŋāĻ—ā§āĻ°āĻŋāĻŸāĻŋ āĻšā§‡āĻ• āĻ•āĻ°ā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻ‡ āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āĻ° āĻ¸āĻžāĻĨā§‡ –full āĻ…āĻĒāĻļāĻ¨ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡ āĻ°āĻžāĻ¨ āĻ•āĻ°ā§‡āĻ¨,āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ¸ā§‡āĻŸāĻž āĻ¸ā§‡āĻ¸āĻŦ āĻ…āĻŦā§āĻœā§‡āĻ•ā§āĻŸ āĻ—ā§āĻ˛ā§‹ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°āĻŦā§‡ āĻ¯āĻž āĻ…āĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨ā§‹ āĻ…āĻŦā§āĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§āĻ•ā§āĻ¤ āĻ¨ā§‡āĻ‡āĻƒ
				
					$ git fsck --full
Checking object directories: 100% (256/256), done.
Checking objects: 100% (18/18), done.
dangling blob d670460b4b4aece5915caf5c68d12f560a9fe3e4
dangling commit ab1afef80fac8e34258ff41fc1b867c702daa24b
dangling tree aea790b9a58f6cf6f2804eeac9f0abbe9631e4c9
dangling blob 7108f7ecb345ee9d0084193f147cdad4d2998293

				
			
āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻšāĻžāĻ°āĻžāĻ¨ā§‹ āĻ•āĻŽāĻŋāĻŸ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻŦā§‡āĻ¨ “dangling commit” āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻāĻ° āĻĒāĻ°āĨ¤āĻ†āĻĒāĻ¨āĻŋ āĻāĻ–āĻ¨ āĻ†āĻ˛āĻžāĻĻāĻž āĻāĻ•āĻŸāĻž āĻŦā§āĻ°āĻžāĻžā§āĻš SHA-1 āĻ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻ‡āĻŸāĻž āĻāĻ•āĻ‡āĻ­āĻžāĻŦā§‡ āĻ°āĻŋāĻ•ā§‹āĻ­āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŦā§‡āĻ¨āĨ¤

āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ

āĻ—āĻŋāĻŸā§‡āĻ° āĻ…āĻ¨ā§‡āĻ• āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻœāĻŋāĻ¨āĻŋāĻ¸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ•āĻŸāĻŋ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻ¯āĻž āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ•āĻžāĻ°āĻŖ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¤āĻž āĻšāĻ˛ āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ git clone āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ­āĻžāĻ°ā§āĻ¸āĻ¨ āĻ¸āĻš āĻĒā§āĻ°ā§‹āĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§‡ āĨ¤ āĻĒā§āĻ°ā§‹ āĻœāĻŋāĻ¨āĻŋāĻ¸āĻŸāĻŋ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻšāĻ˛ā§‡ āĻāĻŸāĻŋ āĻ āĻŋāĻ• āĻ†āĻ›ā§‡, āĻ•āĻžāĻ°āĻŖ āĻ¸ā§‡āĻ‡ āĻĄā§‡āĻŸāĻžāĻ•ā§‡ āĻĻāĻ•ā§āĻˇāĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ•ā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ—āĻŋāĻŸāĻ•ā§‡ āĻ…āĻ¤ā§āĻ¯āĻ¨ā§āĻ¤ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ¯āĻĻāĻŋ āĻ•ā§‡āĻ‰ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°ā§‹āĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻšāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ¤ā§‡ āĻ¯ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻ¸āĻŽāĻ¯āĻŧā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļāĻžāĻ˛ āĻĢāĻžāĻ‡āĻ˛ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡, āĻ¤āĻŦā§‡ āĻ¸āĻ°ā§āĻŦāĻ•āĻžāĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ•ā§āĻ˛ā§‹āĻ¨ā§‡ āĻ¸ā§‡āĻ‡ āĻŦāĻĄāĻŧ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻžāĻ§ā§āĻ¯ āĻ•āĻ°āĻž āĻšāĻŦā§‡, āĻāĻŽāĻ¨āĻ•āĻŋ āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ•āĻŽāĻŋāĻŸā§‡ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻ°āĻŋā§Ÿā§‡āĻ“ āĻĢā§‡āĻ˛āĻž āĻšā§Ÿ āĨ¤ āĻ•āĻžāĻ°āĻŖ āĻāĻŸāĻŋ āĻ—āĻŋāĻŸ āĻšāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋ āĻĨā§‡āĻ•ā§‡ āĻĒā§ŒāĻāĻ›āĻžāĻ¨ā§‹ āĻ¯āĻžāĻŦā§‡, āĻāĻŸāĻŋ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡āĻ‡ āĻĨāĻžāĻ•āĻŦā§‡ āĨ¤

āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻ–āĻ¨ āĻ¸āĻžāĻŦāĻ­āĻžāĻ°ā§āĻ¸āĻ¨ āĻŦāĻž āĻĒāĻžāĻ°āĻĢā§‹āĻ°ā§āĻ¸ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ—āĻŋāĻŸā§‡ āĻ°ā§‚āĻĒāĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻ›ā§‡āĻ¨ āĻ¤āĻ–āĻ¨ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļāĻžāĻ˛ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻĒāĻ¨āĻŋ āĻ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āĻĒā§āĻ°ā§‹ āĻšāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§‡āĻ¨ āĻ¨āĻž, āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ¸āĻ‚āĻ¯ā§‹āĻœāĻ¨ āĻ•āĻŋāĻ›ā§ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻŦāĻšāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ…āĻ¨ā§āĻ¯ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĨā§‡āĻ•ā§‡ āĻ‡āĻŽā§āĻĒāĻ°ā§āĻŸ āĻ•āĻ°ā§‡āĻ¨ āĻŦāĻž āĻ…āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ¨ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻŸāĻŋ āĻ¯āĻž āĻšāĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤ āĻ›āĻŋāĻ˛ āĻ¤āĻžāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ…āĻ¨ā§‡āĻ• āĻŦāĻĄāĻŧ, āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻŦāĻĄāĻŧ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸāĻŸāĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĨ¤

āĻ¸āĻ¤āĻ°ā§āĻ• āĻĨāĻžāĻ•ā§āĻ¨: āĻāĻ‡ āĻ•ā§ŒāĻļāĻ˛āĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻŽāĻŋāĻŸ āĻšāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ§ā§āĻŦāĻ‚āĻ¸āĻžāĻ¤ā§āĻŽāĻ• āĨ¤ āĻāĻ•āĻŸāĻŋ āĻŦāĻĄāĻŧ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻĒā§āĻ°āĻĨāĻŽ āĻŸā§āĻ°āĻŋ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ•āĻŽāĻŋāĻŸ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸāĻ•ā§‡ āĻĒā§āĻ¨āĻ°ā§āĻ˛āĻŋāĻ–āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ‡āĻŽā§āĻĒāĻ°ā§āĻŸā§‡āĻ° āĻĒāĻ°āĻĒāĻ°āĻ‡ āĻāĻŸāĻŋ āĻ•āĻ°ā§‡āĻ¨, āĻ•ā§‡āĻ‰ āĻ•āĻŽāĻŋāĻŸā§‡āĻ° āĻ•āĻžāĻœ āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻ āĻŋāĻ• āĻ†āĻ›ā§‡āĻ¨ – āĻ…āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻ¨ā§āĻŸā§āĻ°āĻŋāĻŦāĻŋāĻ‰āĻŸāĻ°āĻĻā§‡āĻ° āĻ…āĻŦāĻšāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ•āĻŽāĻŋāĻŸā§‡āĻ° āĻ“āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ•āĻžāĻœ āĻ°āĻŋāĻŦā§‡āĻœ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻŸā§‡āĻ¸ā§āĻŸ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻŸā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻĄāĻŧ āĻĢāĻžāĻ‡āĻ˛ āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻŦā§‡āĻ¨, āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ•āĻŽāĻŋāĻŸā§‡ āĻāĻŸāĻŋ āĻ¸āĻ°āĻŋāĻ¯āĻŧā§‡ āĻĢā§‡āĻ˛āĻŦā§‡āĻ¨, āĻāĻŸāĻŋ āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°ā§āĻ¨, āĻāĻŦāĻ‚ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋ āĻĨā§‡āĻ•ā§‡ āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€āĻ­āĻžāĻŦā§‡ āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ āĻ•āĻ°ā§āĻ¨āĨ¤ āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ†āĻĒāĻ¨āĻžāĻ° āĻšāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻĄāĻŧ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨āĻƒ
				
					$ curl -L https://www.kernel.org/pub/software/scm/git/git-2.1.0.tar.gz > git.tgz
$ git add git.tgz
$ git commit -m 'Add git tarball'
[master 7b30847] Add git tarball
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 git.tgz

				
			
āĻ“āĻšā§‹ – āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°ā§‹āĻœā§‡āĻ•ā§āĻŸā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻļāĻžāĻ˛ āĻŸāĻžāĻ°āĻŦāĻ˛ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨āĻ¨āĻŋā§ˇ āĻāĻŸāĻž āĻĨā§‡āĻ•ā§‡ āĻĒāĻ°āĻŋāĻ¤ā§āĻ°āĻžāĻŖ āĻĒā§‡āĻ¤ā§‡:
				
					$ git rm git.tgz
rm 'git.tgz'
$ git commit -m 'Oops - remove large tarball'
[master dadf725] Oops - remove large tarball
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 git.tgz

				
			
āĻāĻ–āĻ¨, āĻ†āĻĒāĻ¨āĻžāĻ° āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ gc āĻŦā§āĻ¯āĻžāĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻĻā§‡āĻ–ā§āĻ¨ āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻ¤ āĻ¸ā§āĻĒā§‡āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ›ā§‡āĻ¨āĻƒ
				
					$ git gc
Counting objects: 17, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (13/13), done.
Writing objects: 100% (17/17), done.
Total 17 (delta 1), reused 10 (delta 0)

				
			
āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻ¤ āĻ¸ā§āĻĒā§‡āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ›ā§‡āĻ¨ āĻ¤āĻž āĻĻā§‡āĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ count-objects āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻŸāĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻšāĻžāĻ˛āĻžāĻ¨āĻƒ
				
					$ git count-objects -v
count: 7
size: 32
in-pack: 17
packs: 1
size-pack: 4868
prune-packable: 0
garbage: 0
size-garbage: 0

				
			
āĻ¸āĻžāĻ‡āĻœ-āĻĒā§āĻ¯āĻžāĻ• āĻāĻ¨ā§āĻŸā§āĻ°āĻŋāĻŸāĻŋ āĻšāĻ˛ āĻ•āĻŋāĻ˛ā§‹āĻŦāĻžāĻ‡āĻŸā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ¯āĻžāĻ•āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ†āĻ•āĻžāĻ°, āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻ†āĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ 5MB āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ›ā§‡āĻ¨āĨ¤ āĻļā§‡āĻˇ āĻ•āĻŽāĻŋāĻŸā§‡āĻ° āĻ†āĻ—ā§‡, āĻ†āĻĒāĻ¨āĻŋ 2K āĻāĻ° āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨ – āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ¤āĻ‡, āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻ•āĻŽāĻŋāĻŸ āĻĨā§‡āĻ•ā§‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻžāĻ° āĻšāĻ˛ā§‡āĻ“ āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻšāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋ āĻĨā§‡āĻ•ā§‡ āĻŽā§āĻ›ā§‡ āĻ¯āĻžāĻ¯āĻŧāĻ¨āĻŋāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻ¯ā§‡ āĻ•ā§‡āĻ‰ āĻāĻ‡ āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋ āĻ•ā§āĻ˛ā§‹āĻ¨ āĻ•āĻ°āĻŦā§‡, āĻāĻ‡ āĻ›ā§‹āĻŸ āĻĒā§āĻ°ā§‹āĻœā§‡āĻ•ā§āĻŸāĻŸāĻŋ āĻĒā§‡āĻ¤ā§‡ āĻ¤āĻžāĻĻā§‡āĻ°āĻ•ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ 5MB āĻ•ā§āĻ˛ā§‹āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ•āĻžāĻ°āĻŖ āĻ†āĻĒāĻ¨āĻŋ āĻĻā§āĻ°ā§āĻ˜āĻŸāĻ¨āĻžāĻ•ā§āĻ°āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻĄāĻŧ āĻĢāĻžāĻ‡āĻ˛ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨āĨ¤ āĻāĻ–āĻ¨ āĻāĻ° āĻĨā§‡āĻ•ā§‡ āĻĒāĻ°āĻŋāĻ¤ā§āĻ°āĻžāĻŖ āĻĒāĻžāĻ“ā§ŸāĻž āĻ¯āĻžāĻ• āĨ¤

āĻĒā§āĻ°āĻĨāĻŽā§‡āĻ‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻŸāĻŋ āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ•āĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻœāĻžāĻ¨ā§‡āĻ¨ āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ§āĻ°ā§āĻ¨ āĻ†āĻĒāĻ¨āĻŋ āĻœāĻžāĻ¨ā§‡āĻ¨āĻ¨āĻž; āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ•ā§‹āĻ¨ āĻĢāĻžāĻ‡āĻ˛ āĻŦāĻž āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋ āĻāĻ¤ āĻ¸ā§āĻĒā§‡āĻ¸ āĻ¨āĻŋāĻšā§āĻ›ā§‡? āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ—āĻŋāĻŸ gc āĻšāĻžāĻ˛āĻžāĻ¨ āĻ¤āĻŦā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ¯āĻžāĻ•āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻĨāĻžāĻ•ā§‡; āĻ†āĻĒāĻ¨āĻŋ git verify-pack āĻ¨āĻžāĻŽā§‡ āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻĒā§āĻ˛āĻžāĻŽā§āĻŦāĻŋāĻ‚ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻšāĻžāĻ˛āĻŋāĻ¯āĻŧā§‡ āĻāĻŦāĻ‚ āĻ†āĻ‰āĻŸāĻĒā§āĻŸā§‡āĻ° āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ āĻĢāĻŋāĻ˛ā§āĻĄā§‡ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ†āĻ•āĻžāĻ° āĻ¸āĻžāĻœāĻžāĻ¨ā§‹āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻŦāĻĄāĻŧ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸāĻ—ā§āĻ˛āĻŋ āĻ¸āĻ¨āĻžāĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĨ¤ āĻ†āĻĒāĻ¨āĻŋ tail āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĒāĻžāĻ‡āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ•āĻžāĻ°āĻŖ āĻ†āĻĒāĻ¨āĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻļā§‡āĻˇ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻŦā§œ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋ āĻ†āĻ—ā§āĻ°āĻšā§€āĻƒ
				
					$ git verify-pack -v .git/objects/pack/pack-29â€Ļ69.idx \
  | sort -k 3 -n \
  | tail -3
dadf7258d699da2c8d89b09ef6670edb7d5f91b4 commit 229 159 12
033b4468fa6b2a9547a70d88d1bbe8bf3f9ed0d5 blob   22044 5792 4977696
82c99a3e86bb1267b236a4b6eff7868d97489af1 blob   4975916 4976258 1438

				
			
āĻ¨ā§€āĻšā§‡ āĻŦā§œ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸāĻŸāĻŋ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: 5MBāĨ¤ āĻāĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ•āĻŋ āĻ¤āĻž āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡, āĻ†āĻĒāĻ¨āĻŋ rev-list āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻŦā§‡āĻ¨, āĻ¯āĻž āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•āĻŽāĻŋāĻŸ-āĻŽā§‡āĻ¸ā§‡āĻœ āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻŸā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨ āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ –objects āĻ…āĻĒāĻļāĻ¨āĻŸāĻŋ rev-list-āĻ āĻĒāĻžāĻ¸ āĻ•āĻ°ā§‡āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻāĻŸāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ SHA-1s āĻ•āĻŽāĻŋāĻŸ āĻāĻŦāĻ‚ āĻŦā§āĻ˛āĻŦ SHA-1s-āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻļā§āĻ˛āĻŋāĻˇā§āĻŸ āĻĢāĻžāĻ‡āĻ˛ āĻĒāĻžāĻĨāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻŦā§āĻ˛āĻŦā§‡āĻ° āĻ¨āĻžāĻŽ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĻƒ
				
					$ git rev-list --objects --all | grep 82c99a3
82c99a3e86bb1267b236a4b6eff7868d97489af1 git.tgz

				
			
āĻāĻ–āĻ¨, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…āĻ¤ā§€āĻ¤ā§‡āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŸā§āĻ°āĻŋ āĻĨā§‡āĻ•ā§‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻšāĻœā§‡āĻ‡ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ•ā§‹āĻ¨ āĻ•āĻŽāĻŋāĻŸāĻ—ā§āĻ˛āĻŋ āĻāĻ‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋāĻ•ā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡āĻ›ā§‡āĻƒ
				
					$ git log --oneline --branches -- git.tgz
dadf725 Oops - remove large tarball
7b30847 Add git tarball

				
			
āĻ†āĻĒāĻ¨āĻžāĻ° āĻ—āĻŋāĻŸ āĻšāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋ āĻĨā§‡āĻ•ā§‡ āĻāĻ‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋāĻ•ā§‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ°ā§‚āĻĒā§‡ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ 7b30847 āĻĨā§‡āĻ•ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻŽāĻŋāĻŸ āĻĄāĻžāĻ‰āĻ¨āĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻŋ filter-branch āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ¨, āĻ¯āĻž āĻ†āĻĒāĻ¨āĻŋ āĻ°āĻŋāĻ°āĻžāĻ‡āĻŸāĻŋāĻ‚ āĻšāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨āĻƒ
				
					$ git filter-branch --index-filter \
  'git rm --ignore-unmatch --cached git.tgz' -- 7b30847^..
Rewrite 7b30847d080183a1ab7d18fb202473b3096e9f34 (1/2)rm 'git.tgz'
Rewrite dadf7258d699da2c8d89b09ef6670edb7d5f91b4 (2/2)
Ref 'refs/heads/master' was rewritten

				
			
–index-filter āĻ…āĻĒāĻļāĻ¨āĻŸāĻŋ āĻ°āĻŋāĻ°āĻžāĻ‡āĻŸāĻŋāĻ‚ āĻšāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ –tree-filter āĻ…āĻĒāĻļāĻ¨ā§‡āĻ° āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ, āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĒāĻžāĻ¸ āĻ•āĻ°ā§‡ āĻĄāĻŋāĻ¸ā§āĻ•ā§‡ āĻšā§‡āĻ• āĻ†āĻ‰āĻŸ āĻ•āĻ°āĻž āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻŸā§‡āĻœāĻŋāĻ‚ āĻāĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻž āĻ‡āĻ¨āĻĄā§‡āĻ•ā§āĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ›ā§‡āĻ¨āĨ¤

rm file āĻŽāĻ¤ā§‹ āĻ•āĻŋāĻ›ā§ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻĢāĻžāĻ‡āĻ˛ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻŸāĻŋāĻ•ā§‡ git rm –cached āĻĻāĻŋāĻ¯āĻŧā§‡ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻ¤ā§‡ āĻšāĻŦā§‡ – āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻāĻŸāĻŋāĻ•ā§‡ āĻ‡āĻ¨āĻĄā§‡āĻ•ā§āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻ°āĻŋāĻ¯āĻŧā§‡ āĻĢā§‡āĻ˛āĻ¤ā§‡ āĻšāĻŦā§‡, āĻĄāĻŋāĻ¸ā§āĻ• āĻĨā§‡āĻ•ā§‡ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻ‡āĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻ•āĻžāĻ°āĻŖ āĻšāĻ˛ āĻ—āĻ¤āĻŋ – āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ—āĻŋāĻŸāĻ•ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĢāĻŋāĻ˛ā§āĻŸāĻžāĻ° āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻ†āĻ—ā§‡ āĻĄāĻŋāĻ¸ā§āĻ•ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ°āĻŋāĻ­āĻŋāĻļāĻ¨ āĻšā§‡āĻ• āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¨āĻž, āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋ āĻ…āĻ¨ā§‡āĻ•, āĻ…āĻ¨ā§‡āĻ• āĻĻā§āĻ°ā§āĻ¤ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻšāĻžāĻ‡āĻ˛ā§‡ –tree-filter āĻĻāĻŋāĻ¯āĻŧā§‡ āĻāĻ•āĻ‡ āĻ•āĻžāĻœ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ git rm-āĻāĻ° –ignore-unmatch āĻ…āĻĒāĻļāĻ¨āĻŸāĻŋ āĻāĻŸāĻŋāĻ•ā§‡ āĻŦāĻ˛ā§‡ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¯ā§‡ āĻĒā§āĻ¯āĻžāĻŸāĻžāĻ°ā§āĻ¨āĻŸāĻŋ āĻ¸āĻ°āĻžāĻ¨ā§‹āĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻ›ā§‡āĻ¨ āĻ¸ā§‡āĻŸāĻŋ āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻĨāĻžāĻ•ā§‡ āĻ¤āĻŦā§‡ āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ¨āĻž āĻ§āĻ°āĻ¤ā§‡āĨ¤ āĻ…āĻŦāĻļā§‡āĻˇā§‡, āĻ†āĻĒāĻ¨āĻŋ filter-branch āĻ…āĻĒāĻļāĻ¨āĻŸāĻŋāĻ•ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° 7b30847 āĻ•āĻŽāĻŋāĻŸā§‡āĻ° āĻĒāĻ° āĻĨā§‡āĻ•ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ—āĻŋāĻŸ āĻšāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻŦāĻ˛āĻŦā§‡āĻ¨, āĻ•āĻžāĻ°āĻŖ āĻ†āĻĒāĻ¨āĻŋ āĻœāĻžāĻ¨ā§‡āĻ¨ āĻ¯ā§‡ āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻŸāĻŋ āĻ¸ā§‡āĻ–āĻžāĻ¨ āĻĨā§‡āĻ•ā§‡āĻ‡ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ…āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ, āĻāĻŸāĻŋ āĻļā§āĻ°ā§ āĻĨā§‡āĻ•ā§‡ āĻļā§āĻ°ā§ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ…āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻŦā§‡āĻļāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻ—āĻŦā§‡āĨ¤

āĻ†āĻĒāĻ¨āĻžāĻ° āĻ—āĻŋāĻŸ āĻšāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋāĻ¤ā§‡ āĻ†āĻ° āĻ¸ā§‡āĻ‡ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻ¨ā§‡āĻ‡āĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ†āĻĒāĻ¨āĻžāĻ° reflog āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸ā§‡āĻŸā§‡āĻ° refs āĻ¯āĻž āĻ—āĻŋāĻŸ āĻ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡āĻ›ā§‡ āĻ¯āĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻŋ .git/refs/original āĻāĻ° āĻ…āĻ§ā§€āĻ¨ā§‡ filter-branch āĻ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨, āĻ¤āĻžāĻ‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻ¸āĻ°āĻžāĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸āĻŸāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻĒā§āĻ¯āĻžāĻ• āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ°āĻŋāĻĒā§āĻ¯āĻžāĻ• āĻ•āĻ°āĻžāĻ° āĻ†āĻ—ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ¸ā§‡āĻ‡ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻŋāĻ¤ āĻ•āĻŽāĻŋāĻŸāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĻƒ
				
					$ rm -Rf .git/refs/original
$ rm -Rf .git/logs/
$ git gc
Counting objects: 15, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (15/15), done.
Total 15 (delta 1), reused 12 (delta 0)

				
			
āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻ¤ āĻœāĻžāĻ¯āĻŧāĻ—āĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨ āĻ¤āĻž āĻĻā§‡āĻ–āĻž āĻ¯āĻžāĻ•āĨ¤
				
					
$ git count-objects -v
count: 11
size: 4904
in-pack: 15
packs: 1
size-pack: 8
prune-packable: 0
garbage: 0
size-garbage: 0

				
			
āĻĒā§āĻ¯āĻžāĻ• āĻ•āĻ°āĻž āĻ°āĻŋāĻĒā§‹āĻœāĻŋāĻŸāĻ°āĻŋāĻ° āĻ†āĻ•āĻžāĻ° 8K-āĻ āĻ¨ā§‡āĻŽā§‡ āĻāĻ¸ā§‡āĻ›ā§‡, āĻ¯āĻž 5MB āĻĨā§‡āĻ•ā§‡ āĻ…āĻ¨ā§‡āĻ• āĻ­āĻžāĻ˛ā§‹āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻ•āĻžāĻ°ā§‡āĻ° āĻŽāĻžāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›ā§‡āĻ¨ āĻ¯ā§‡ āĻŦāĻĄāĻŧ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸāĻŸāĻŋ āĻāĻ–āĻ¨āĻ“ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ˛ā§āĻœ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻšāĻŋāĻ¸ā§‡āĻŦā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¤āĻžāĻ‡ āĻāĻŸāĻŋ āĻšāĻ˛ā§‡ āĻ¯āĻžā§ŸāĻ¨āĻŋ; āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻļ āĻŦāĻž āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ•ā§āĻ˛ā§‹āĻ¨ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻšāĻŦā§‡ āĻ¨āĻž, āĻ¯āĻž āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖāĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ‡ āĻšāĻžāĻ¨ āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻŋ –expire āĻ…āĻĒāĻļāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ git prune āĻšāĻžāĻ˛āĻŋāĻ¯āĻŧā§‡ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸāĻŸāĻŋāĻ•ā§‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ°ā§‚āĻĒā§‡ āĻ¸āĻ°āĻŋāĻ¯āĻŧā§‡ āĻĢā§‡āĻ˛āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤
				
					$ git prune --expire now
$ git count-objects -v
count: 0
size: 0
in-pack: 15
packs: 1
size-pack: 8
prune-packable: 0
garbage: 0
size-garbage: 0