ā§Ž.⧍ āĻ—āĻŋāϟ āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāχāϜ āĻ•āϰāĻž – āĻ—āĻŋāϟ āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ

āĻ—āĻŋāϟ āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟāϏ

āĻāχ āϏ⧇āϟāĻŋāĻ‚āĻ¸ā§â€Œ āϗ⧁āϞ⧋āϰ āĻŽāĻ§ā§āϝ⧇ āĻ•āĻŋāϛ⧁ āϏ⧇āϟāĻŋāĻ‚ āĻĒāĻžāĻĨ āĻāϰ āϜāĻ¨ā§āϝāĻ“ āϏ⧇āϟ āĻ•āϰāĻž āϝāĻžā§Ÿ, āϝ⧇āύ āĻ—āĻŋāϟ āĻ“āχ āϏ⧇āϟāĻŋāĻ‚āĻ¸ā§â€Œāϗ⧁āϞ⧋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻž āϏāĻžāĻŦ-āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āĻ…āĻĨāĻŦāĻž āĻĢāĻžāχāϞ āĻāϰ āϏāĻžāĻŦāϏ⧇āϟ āĻāϰ āωāĻĒāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻžāχ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāχ āĻĒāĻžāĻĨ āĻ¸ā§āĻĒ⧇āĻšā§‡āĻĢāĻŋāĻ• āϏ⧇āϟāĻŋāĻ‚āĻ¸ā§â€Œāϗ⧁āϞāϕ⧇ āĻ—āĻŋāϟ āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟāϏ āĻŦāϞāĻž āĻšā§Ÿ āĻāĻŦāĻ‚ āĻāϰāĻž āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āĻāϰ āϝ⧇āϕ⧋āύ⧋ āĻĄāĻžāχāϰ⧇āĻ•ā§āϟāϰāĻŋ āĻāϰ āĻŽāĻ§ā§āϝ⧇ (āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āĻāϰ āϰ⧁āϟ āĻĄāĻžāχāϰ⧇āĻ•ā§āϟāϰāĻŋ) .gitattributes āύāĻžāĻŽ āĻāϰ āĻĢāĻžāχāϞ āĻ āϏ⧇āϟ āĻšā§Ÿ āĻ…āĻĨāĻŦāĻž .git/info/attributes āĻĢāĻžāχāϞ āĻ āϝāĻĻāĻŋ āύāĻž āφāĻĒāύāĻŋ āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟāϏ āĻĢāĻžāχāϞ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āĻ āύāĻž āϰāĻžāĻ–āϤ⧇ āϚāĻžāύāĨ¤

āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟāϏ āĻĻāĻŋā§Ÿā§‡ āφāĻĒāύāĻŋ, āĻĢāĻžāχāϞ āĻŦāĻž āĻĄāĻžāχāϰ⧇āĻ•ā§āϟāϰāĻŋāϰ āϜāĻ¨ā§āϝ āĻ­āĻŋāĻ¨ā§āύ āĻŽāĻžāĻ°ā§āϜ āĻ¸ā§āĻŸā§āϰ⧇āϜāĻŋāϟāĻŋ āϏ⧇āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āύāύ-āĻŸā§‡āĻ•ā§āϏ āĻĢāĻžāχāϞ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻ—āĻŋāϟ diff  āĻ•āϰāĻŦ⧇, āĻ…āĻĨāĻŦāĻž check in āĻ•āĻŋāĻ‚āĻŦāĻž check out āĻ•āϰāĻžāϰ āφāϗ⧇ āĻ—āĻŋāϟ āϝ⧇āύ āĻ•āύāĻŸā§‡āĻ¨ā§āϟ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇. āĻāχ āϏ⧇āĻ•āĻļāύ āĻ, āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ āĻ—āĻŋāϟ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āĻāϰ āĻĒāĻžāĻĨ āĻ āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟāϏ āϏ⧇āϟ āĻ•āϰāĻž āϜāĻžāύāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύ āĻāĻŦāĻ‚ āĻ…āύ⧁āĻļā§€āϞāύ⧇ āĻāχ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ⧇āύāĨ¤

āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢāĻžāχāϞāϏ

āĻāĻ•āϟāĻŋ āĻ­āĻžāϞ āĻ•ā§ŒāĻļāϞ āϝāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻŋ āĻ—āĻŋāϟ āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϤāĻž āĻšāϞ āĻ—āĻŋāϟ āϕ⧇ āĻŦāϞāĻž āϝ⧇ āϕ⧋āύ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ āĻŦāĻžāχāύāĻžāϰāĻŋ (āϕ⧋āύ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāϟāĻŋ āĻ…āĻ¨ā§āϝāĻĨāĻžāϝāĻŧ āĻŦ⧇āϰ āĻ•āϰāϤ⧇ āύāĻžāĻ“ āĻĒāĻžāϰ⧇) āĻāĻŦāĻ‚ āϏ⧇āχ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻŦ⧇āύ āϏ⧇ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ—āĻŋāϟ āϕ⧇ āĻŦāĻŋāĻļ⧇āώ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāύāĻž āĻĻ⧇āĻ“āϝāĻŧāĻžāĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻ•āĻŋāϛ⧁ āĻŸā§‡āĻ•ā§āϏāϟ āĻĢāĻžāχāϞ āĻŽā§‡āĻļāĻŋāύ āĻœā§‡āύāĻžāϰ⧇āĻŸā§‡āĻĄ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āϏ⧇āϟāĻž diff āĻ•āϰāĻž āϝāĻžā§Ÿ āύāĻž, āϝ⧇āĻ–āĻžāύ⧇ āĻ•āĻŋāϛ⧁ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢāĻžāχāϞ āĻ­āĻŋāĻ¨ā§āύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āφāĻĒāύāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ⧇āύ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻ—āĻŋāϟāϕ⧇ āĻŦāϞāϤ⧇ āĻšāϝāĻŧ āϕ⧋āύāϟāĻŋāĨ¤

āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢāĻžāχāϞ āϏāύāĻžāĻ•ā§āϤāĻ•āϰāĻŖÂ 

āĻ•āĻŋāϛ⧁ āĻĢāĻžāχāϞ āĻŸā§‡āĻ•ā§āϏāϟ āĻĢāĻžāχāϞ⧇āϰ āĻŽāϤ āĻĻ⧇āĻ–āϤ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦāĻžāĻŦāĻšāĻžāϰ āĻāϰ āϜāĻ¨ā§āϝ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĄāĻžāϟāĻž āĻšāĻŋāϏāĻžāĻŦ⧇ āĻ—āĻŖā§āϝ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤

āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻŽā§āϝāĻžāĻ•āĻ“āĻāϏ -āĻ āĻāĻ•ā§āϏ-āϕ⧋āĻĄ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋāϤ⧇ āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ āĻĨāĻžāϕ⧇ āϝāĻž .pbxproj -āĻ āĻļ⧇āώ āĻšāϝāĻŧ, āϝāĻž āĻŽā§‚āϞāϤ āĻāĻ•āϟāĻŋ āĻœā§‡āϏāύ āĻĄāĻžāϟāĻžāϏ⧇āϟ āϝāĻž āφāχāĻĄāĻŋāχ āĻĻā§āĻŦāĻžāϰāĻž āĻĄāĻŋāĻ¸ā§āĻ• āĻÂ  āϰāĻžāχāϟ āĻšāϝāĻŧ, āϝāĻž āφāĻĒāύāĻžāϰ āĻŦāĻŋāĻ˛ā§āĻĄ āϏ⧇āϟāĻŋāĻ‚āϏ āχāĻ¤ā§āϝāĻžāĻĻāĻŋ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰ⧇āĨ¤ āϝāĻĻāĻŋāĻ“ āĻāϟāĻŋ āĻŸā§‡āĻ•āύāĻŋāĻ•ā§āϝāĻžāϞāĻŋ āĻāĻ•āϟāĻŋ āĻŸā§‡āĻ•ā§āϏāϟ āĻĢāĻžāχāϞ (āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ āϏāĻŦāχ UTF-8), āφāĻĒāύāĻŋ āĻāϟāĻŋāϕ⧇ āĻāĻŽāύāĻ­āĻžāĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāϤ⧇ āϚāĻžāύ āύāĻž āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ āϏāĻ¤ā§āϝāĻŋāχ āĻāĻ•āϟāĻŋ āϞāĻžāχāϟāĻ“ā§Ÿā§‡āϟ āĻĄāĻžāϟāĻžāĻŦ⧇āϜ – āφāĻĒāύāĻŋ āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āϗ⧁āϞāĻŋāϕ⧇ āĻŽāĻžāĻ°ā§āϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύ āύāĻž āϝāĻĻāĻŋ āĻĻ⧁’āϜāύ āĻŦā§āϝāĻ•ā§āϤāĻŋ āĻāϟāĻŋāϕ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇, āĻāĻŦāĻ‚ diffs āϏāĻžāϧāĻžāϰāĻŖāϤ āĻšā§‡āĻ˛ā§āĻĒāĻĢ⧁āϞ āύāĻžāĨ¤ āĻāχ āĻĢāĻžāχāϞ āĻŽā§‡āĻļāĻŋāύ āĻĻā§āĻŦāĻžāϰāĻž āĻŦāĻžāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϤ⧈āϰāĻŋ āĻšā§ŸāĨ¤ āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇, āφāĻĒāύāĻŋ āĻāϟāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢāĻžāχāϞ⧇āϰ āĻŽāϤ⧋ āφāϚāϰāĻŖ āĻ•āϰāϤ⧇ āϚāĻžāύāĨ¤

āϏāĻŽāĻ¸ā§āϤ pbxproj āĻĢāĻžāχāϞāϕ⧇ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĄā§‡āϟāĻž āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāϤ⧇ āĻ—āĻŋāϟāϕ⧇ āĻŦāϞāϤ⧇, āφāĻĒāύāĻžāϰ .gitattributes āĻĢāĻžāχāϞ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϞāĻžāχāύāϟāĻŋ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύ:

				
					*.pbxproj binary
				
			

āĻāĻ–āύ, āĻ—āĻŋāϟ CRLF āϏāĻŽāĻ¸ā§āϝāĻžāϗ⧁āϞāĻŋ āĻ•āύāĻ­āĻžāĻ°ā§āϟ āĻŦāĻž āĻĢāĻŋāĻ•ā§āϏ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŦ⧇ āύāĻž; āĻ…āĻĨāĻŦāĻž āφāĻĒāύāĻŋ āϝāĻ–āύ āφāĻĒāύāĻžāϰ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āĻÂ  git show āĻŦāĻž git diff āϚāĻžāϞāĻžāύ āϤāĻ–āύ āĻāχ āĻĢāĻžāχāϞ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āϜāĻ¨ā§āϝ āϕ⧋āύ⧋ diff compute āĻŦāĻž print āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŦ⧇ āύāĻžāĨ¤

 

āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢāĻžāχāϞ⧇āϰ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ

āφāĻĒāύāĻŋ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϕ⧇ āϏāĻĢāϞ āĻ­āĻžāĻŦ⧇ diff āĻ•āϰāϤ⧇ āĻ—āĻŋāϟ āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāĻŸā§‡āϰ āĻĢāĻžāĻ‚āĻļāύāĻžāϞāĻŋāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āφāĻĒāύāĻŋ āĻ—āĻŋāϟ āϕ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āφāĻĒāύāĻžāϰ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĄā§‡āϟāĻžāϕ⧇ āĻāĻ•āϟāĻŋ āĻŸā§‡āĻ•ā§āϏāϟ āĻĢāϰāĻŽā§‡āϟ āĻ āĻ•āύāĻ­āĻžāĻ°ā§āϟ āĻ•āϰāĻŦ⧇āύ āϤāĻž āĻŦāϞ⧇ āĻāχ āĻ•āĻžāϜāϟāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύ āϝ⧇āύ āϏ⧇āχ āĻĢāĻžāχāϞ āϟāĻŋ āύāϰāĻŽāĻžāϞ diff āĻĻāĻŋā§Ÿā§‡ āĻ•āĻŽā§āĻĒā§‡ā§ŸāĻžāϰ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤

āĻĒā§āϰāĻĨāĻŽāϤ, āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻŋāϰāĻ•ā§āϤāĻŋāĻ•āϰ āϏāĻŽāĻ¸ā§āϝāĻžāϰ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāϤ⧇ āĻāχ āĻ•ā§ŒāĻļāϞāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžā§œā§‡āύ: āϝāĻž āĻšāϞ āĻŽāĻžāχāĻ•ā§āϰ⧋āϏāĻĢā§āϟ āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āϟāϏ āĻāϰ āĻ­āĻžāĻ°ā§āϏāύ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ āĻ•āϰāĻžāĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āϟ āϗ⧁āϞāĻŋāϕ⧇ āĻ­āĻžāĻ°ā§āϏāύ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ āĻ•āϰāϤ⧇ āϚāĻžāύ āϤāĻŦ⧇ āφāĻĒāύāĻŋ āϏ⧇āϗ⧁āϞāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āĻ—āĻŋāϟ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋ āϤ⧇ āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ āύāĻŋ⧟āĻŽāĻŋāϤ āĻ•āĻŽāĻŋāϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ; āĻ•āĻŋāĻ¨ā§āϤ⧁ āϤāĻžāϤ⧇ āĻ•āĻŋ āϞāĻžāĻ­? āφāĻĒāύāĻŋ āϝāĻĻāĻŋ git diff āϚāĻžāϞāĻžāύ āϤāĻŦ⧇ āφāĻĒāύāĻŋ āϕ⧇āĻŦāϞ āĻāχāϰāĻ•āĻŽ āĻ•āĻŋāϛ⧁ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ⧇āύ:

				
					$ git diff
diff --git a/chapter1.docx b/chapter1.docx
index 88839c4..4afcb7c 100644
Binary files a/chapter1.docx and b/chapter1.docx differ
				
			

āφāĻĒāύāĻŋ āϏāϰāĻžāϏāϰāĻŋ āĻĻ⧁āϟāĻŋ āĻ­āĻžāĻ°ā§āϏāύ āϤ⧁āϞāύāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύ āύāĻž āϝāĻĻāĻŋ āύāĻž āφāĻĒāύāĻŋ āϏ⧇āϗ⧁āϞāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āĻĻ⧇āϖ⧇āύ āĻāĻŦāĻ‚ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āĻ¸ā§āĻ•ā§āϝāĻžāύ āĻ•āϰ⧇āύ, āϤāĻžāχ āύāĻž? āĻĻ⧇āĻ–āĻž āϝāĻžāĻšā§āϛ⧇ āϝ⧇ āφāĻĒāύāĻŋ āĻ—āĻŋāϟ āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāϟāĻŋ āĻŽā§‹āϟāĻžāĻŽā§āϟāĻŋ āĻ­āĻžāϞāĻ­āĻžāĻŦ⧇ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āφāĻĒāύāĻžāϰ .gitattributes āĻĢāĻžāχāϞ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϞāĻžāχāύāϟāĻŋ āϰāĻžāϖ⧁āύ:

				
					*.docx diff=word
				
			
āĻāϟāĻŋ āĻ—āĻŋāϟ āϕ⧇ āĻŦāϞ⧇ āϝ⧇ (`.docx`) āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ⧇āϰ āϏāĻžāĻĨ⧇ āĻŽā§‡āϞ⧇ āĻāĻŽāύ āϝ⧇āϕ⧋āύ āĻĢāĻžāχāϞ⧇āϰ “āĻ“ā§ŸāĻžāĻ°ā§āĻĄ” āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤ āϝāĻ–āύ āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ āĻĢāĻžāχāϞ āĻāϰ āĻšā§‡āχāĻžā§āϜ āĻāϰ diff āĻĻ⧇āĻ–āϤ⧇ āϚāĻžāύāĨ¤ “āĻ“ā§ŸāĻžāĻ°ā§āĻĄ” āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āĻŋ? āφāĻĒāύāĻŋ āĻāϟāĻŋ āϏ⧇āϟ āφāĻĒ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāĻ–āĻžāύ⧇ āφāĻĒāύāĻŋ āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āϟāϕ⧇āϰāĻŋāĻĄā§‡āĻŦāϞ āĻŸā§‡āĻ•ā§āϏāϟ āĻĢāĻžāχāϞ⧇ āĻ•āύāĻ­āĻžāĻ°ā§āϟ āĻ•āϰāϤ⧇ `docx2txt` āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāϟ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻŦ⧇āύ, āϝāĻž āĻĒāϰ⧇ āĻāϟāĻŋ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ diff āĻ•āϰāĻŦ⧇āĨ¤ āĻĒā§āϰāĻĨāĻŽā§‡, āφāĻĒāύāĻžāϕ⧇ `docx2txt āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇`; āφāĻĒāύāĻŋ āĻāϟāĻŋ https://sourceforge.net/projects/docx2txt āĻĨ⧇āϕ⧇ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āφāĻĒāύāĻžāϰ āĻļ⧇āϞ āϝ⧇āύ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϟāĻŋ āϖ⧁āρāĻœā§‡ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŽāύ āϕ⧋āĻĨāĻžāĻ“ āĻāϟāĻŋ āϰāĻžāĻ–āϤ⧇ `INSTALL` āĻĢāĻžāχāϞ⧇āϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧁āύ⧎ āĻāϰ āĻĒāϰ⧇, āφāĻĒāύāĻŋ āφāωāϟāĻĒ⧁āϟāϕ⧇ āĻ—āĻŋāϟ āĻāĻ•ā§āϏāĻĒ⧇āĻ•ā§āϟ āĻ•āϰ⧇ āĻāĻŽāύ āĻĢāĻ°ā§āĻŽā§āϝāĻžāĻŸā§‡ āĻ•āύāĻ­āĻžāĻ°ā§āϟ āĻ•āϰāϤ⧇ āĻāĻ•āϟāĻŋ āĻ°â€ā§āϝāĻžāĻĒāĻžāϰ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϞāĻŋāĻ–āĻŦ⧇āύāĨ¤ āφāĻĒāύāĻžāϰ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āĻĒāĻžāĻĨ āĻāϰ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āĻ `docx2txt` āύāĻžāĻŽā§‡ āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ, āĻā§āϰāĻŦāĻ‚ āύ⧀āĻšā§‡āϰ āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āϞāĻŋāϖ⧁āύ:
				
					#!/bin/bash
docx2txt.pl "$1" -
				
			

āϏ⧇āχ āĻĢāĻžāχāϞāϟāĻŋāϕ⧇ `chmod a+x` āĻ•āϰāϤ⧇ āϭ⧁āϞāĻŦ⧇āύ āύāĻžāĨ¤ āĻ…āĻŦāĻļ⧇āώ⧇, āφāĻĒāύāĻŋ āĻāχ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻ—āĻŋāϟ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

				
					$ git config diff.word.textconv docx2txt
				
			

āĻāĻ–āύ āĻ—āĻŋāϟ āϜāĻžāύāĻŦ⧇ āϝ⧇ āϝāĻĻāĻŋ āĻ—āĻŋāϟ āĻĻ⧁āϟāĻŋ āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟ āĻāϰ āĻŽāĻ§ā§āϝ⧇ diff āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϝ⧇āϕ⧋āύ āĻĢāĻžāχāϞ āϝāĻĻāĻŋ `.docx` āĻ āĻļ⧇āώ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ āϏ⧇āχ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϕ⧇ “āĻ“ā§ŸāĻžāĻ°ā§āĻĄ” āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻĻāĻŋā§Ÿā§‡ āϰāĻžāύ āĻ•āϰāĻ¤ā§‡Â  āĻšāĻŦ⧇, āϝāĻž `docx2txt` āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĄāĻŋāĻĢāĻžāχāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ diff āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻžāϰ āφāϗ⧇ āĻ—āĻŋāϟ āĻ•āĻžāĻ°ā§āϝāĻ•āϰāĻ­āĻžāĻŦ⧇ āφāĻĒāύāĻžāϰ āĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϰ āĻŸā§‡āĻ•ā§āϏāϟ āĻŦ⧇āχāϜ āĻ­āĻžāĻ°ā§āϏāύ āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ⧇āĨ¤

 

āĻāĻ–āĻžāύ⧇ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ: āĻāχ āĻŦāχ āĻāϰ āĻ…āĻ§ā§āϝāĻžā§Ÿ ā§§ āĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻĢāϰāĻŽā§‡āϟ āĻ āĻ•āύāĻ­āĻžāĻ°ā§āϟ āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻ—āĻŋāϟ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋ āϤ⧇ āĻ•āĻŽāĻŋāϟ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϤāĻžāϰāĻĒāϰ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻĒā§āϝāĻžāϰāĻžāĻ—ā§āϰāĻžāĻĢ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ.

`git diff` āύ⧀āĻšā§‡āϰ āφāωāϟāĻĒ⧁āϟ āĻĻ⧇āĻ–āĻžāĻŦ⧇:

				
					$ git diff
diff --git a/chapter1.docx b/chapter1.docx
index 0b013ca..ba25db5 100644
--- a/chapter1.docx
+++ b/chapter1.docx
@@ -2,6 +2,7 @@
 This chapter will be about getting started with āĻ—āĻŋāϟ. We will begin at the beginning by explaining some background on version control tools, then move on to how to get āĻ—āĻŋāϟ running on your system and finally how to get it setup to start working with. At the end of this chapter you should understand why Git is around, why you should use it and you should be all setup to do so.
 1.1. About Version Control
 What is "version control", and why should you care? Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later. For the examples in this book you will use software source code as the files being version controlled, though in reality you can do this with nearly any type of file on a computer.
+Testing: 1, 2, 3.
 If you are a graphic or web designer and want to keep every version of an image or layout (which you would most certainly want to), a Version Control System (VCS) is a very wise thing to use. It allows you to revert files back to a previous state, revert the entire project back to a previous state, compare changes over time, see who last modified something that might be causing a problem, who introduced an issue and when, and more. Using a VCS also generally means that if you screw things up or lose files, you can easily recover. In addition, you get all this for very little overhead.
 1.1.1. Local Version Control Systems
 Many people's version-control method of choice is to copy files into another directory (perhaps a time-stamped directory, if they're clever). This approach is very common because it is so simple, but it is also incredibly error prone. It is easy to forget which directory you're in and accidentally write to the wrong file or copy over files you don't mean to.
				
			

āĻ—āĻŋāϟ āϏāĻĢāϞāĻ­āĻžāĻŦ⧇ āĻāĻŦāĻ‚ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤāĻ­āĻžāĻŦ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻŦāϞ⧇āϛ⧇ āϝ⧇ āφāĻŽāϰāĻž “āĻŸā§‡āĻ¸ā§āϟāĻŋāĻ‚āσ ā§§, ⧍, ā§Š” āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āϝ⧋āĻ— āĻ•āϰ⧇āĻ›āĻŋ , āϝāĻž āϏāĻ āĻŋāĻ•āĨ¤ āĻāϟāĻŋ āύāĻŋāϖ⧁āρāϤ āύāϝāĻŧ – āĻĢāĻ°ā§āĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āĻāĻ–āĻžāύ⧇ āĻĒā§āϰāĻĻāĻ°ā§āĻļāĻŋāϤ āĻšāĻŦ⧇ āύāĻž – āϤāĻŦ⧇ āĻāϟāĻŋ āĻ…āĻŦāĻļā§āϝāχ āĻ•āĻžāϜ āĻ•āϰ⧇⧎

 

āφāϰ⧇āĻ•āϟāĻŋ āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āϏāĻŽāĻ¸ā§āϝāĻž āϝāĻž āφāĻĒāύāĻŋ āĻāχāĻ­āĻžāĻŦ⧇ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϤāĻž āĻšāϞ āĻĻ⧁āχāϤāĻŋ āχāĻŽā§‡āχāϜ āĻĢāĻžāχāϞ⧇āϰ diff āĻŦ⧇āϰ āĻ•āϰāĻžāĨ¤ āĻāϟāĻŋ āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āωāĻĒāĻžāϝāĻŧ āĻšāϞ āĻāĻ•āϟāĻŋ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āχāĻŽā§‡āϜ āĻĢāĻžāχāϞ āϰāĻžāύ āĻ•āϰāĻž āϝāĻž āϤāĻžāĻĻ⧇āϰ EXIF āϤāĻĨā§āϝ āĻŦ⧇āϰ āĻ•āϰāĻŦ⧇ – āĻŽā§‡āϟāĻžāĻĄāĻžāϟāĻž āϝāĻž āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āχāĻŽā§‡āϜ āĻĢāϰāĻŽā§āϝāĻžāĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āĻĨāĻžāϕ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ `exiftool` āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϟāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻāĻŦāĻ‚ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧇āύ, āφāĻĒāύāĻŋ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āφāĻĒāύāĻžāϰ āχāĻŽā§‡āχāϜ āϗ⧁āϞāϕ⧇ āĻŽā§‡āϟāĻžāĻĄāĻžāϟāĻž āĻāϰ āĻŸā§‡āĻ•ā§āϏāϟ āĻ āĻ•āύāĻ­āĻžāĻ°ā§āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āϝ⧇āύ diff āĻ…āĻ¨ā§āϤāϤ āĻšā§‡āχāĻžā§āϜ āϗ⧁āϞ⧋āϰ āĻŸā§‡āĻ•ā§āϏāϚ⧁⧟āĻžāϞ āϰāĻŋāĻĒā§āϰ⧇āĻœā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻĻ⧇āĻ–āĻžāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āφāĻĒāύāĻžāϰ `.gitattributes` āĻĢāĻžāχāϞ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϞāĻžāχāύāϟāĻŋ āϞāĻŋāϖ⧁āύ:

				
					*.png diff=exif
				
			

āĻāχ āϟ⧁āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻ—āĻŋāϟ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰ⧁āύ:

				
					$ git config diff.exif.textconv exiftool
				
			

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āĻ āĻāĻ•āϟāĻŋ āχāĻŽā§‡āχāϜ āϰāĻŋāĻĒā§āϞ⧇āϏ āĻ•āϰ⧇āύ āĻāĻŦāĻ‚ `git diff` āϚāĻžāϞāĻžāύ, āφāĻĒāύāĻŋ āĻāχāϰāĻ•āĻŽ āĻ•āĻŋāϛ⧁ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ⧇āύ:

				
					diff --git a/image.png b/image.png
index 88839c4..4afcb7c 100644
--- a/image.png
+++ b/image.png
@@ -1,12 +1,12 @@
 ExifTool Version Number         : 7.74
-File Size                       : 70 kB
-File Modification Date/Time     : 2009:04:21 07:02:45-07:00
+File Size                       : 94 kB
+File Modification Date/Time     : 2009:04:21 07:02:43-07:00
 File Type                       : PNG
 MIME Type                       : image/png
-Image Width                     : 1058
-Image Height                    : 889
+Image Width                     : 1056
+Image Height                    : 827
 Bit Depth                       : 8
 Color Type                      : RGB with Alpha


				
			

āφāĻĒāύāĻŋ āϏāĻšāĻœā§‡āχ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύ āϝ⧇ āĻĢāĻžāχāϞ āϏāĻžāχāϜ āĻāĻŦāĻ‚ āĻŽā§‡āχāϜ āĻĄāĻžāχāĻŽā§‡āύāĻļāύ āωāĻ­āϝāĻŧāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

 
āϕ⧀āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻāĻ•ā§āϏāĻĒ⧇āύāĻļāĻ¨Â 

SVN- āĻŦāĻž CVS- āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāϰāĻž āĻ…āĻ­ā§āϝāĻ¸ā§āϤ āϤāĻžāϰāĻž āĻĒā§āϰāĻžā§Ÿāχ āϕ⧀āĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻāĻ•ā§āϏāĻĒ⧇āύāĻļāύ āĻĢāĻŋāϚāĻžāϰ āϟāĻž āϚāĻžā§Ÿ.

āĻ—āĻŋāĻŸā§‡ āĻāϰ āĻĒā§āϰāϧāĻžāύ āϏāĻŽāĻ¸ā§āϝāĻž āĻšāϞ āφāĻĒāύāĻŋ āĻ•āĻŽāĻŋāϟ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āĻ•āĻŽāĻŋāϟ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϤāĻĨā§āϝ āϝ⧇ āĻĢāĻžāχāϞ āĻ āϞ⧇āĻ–āĻž āĻĨāĻžāϕ⧇ āϤāĻžÂ  āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύ āύāĻž, āĻ•āĻžāϰāĻŖ āĻ—āĻŋāϟ āĻĒā§āϰāĻĨāĻŽā§‡ āĻĢāĻžāχāϞāϟāĻŋāϰ āĻšā§‡āĻ•āϏāĻžāĻŽ āĻ•āϰ⧇āĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁, āφāĻĒāύāĻŋ āϕ⧋āύ āĻĢāĻžāχāϞ check out āĻ•āϰāĻžāϰ āĻĒāϰ āϤāĻžāϤ⧇ āĻŸā§‡āĻ•ā§āϏāϟ āĻ…ā§āϝāĻžāĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ āĻ•āĻŽāĻŋāϟ āĻ•āϰāĻžāϰ āφāϗ⧇ āϏ⧇āϟāĻž āϰāĻŋāĻŽā§āĻ­ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻ—āĻŋāϟ āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ āĻĻāĻŋā§Ÿā§‡ āĻĻ⧁āχ āĻ­āĻžāĻŦ⧇ āĻāϟāĻŋ āĻ•āϰāĻž āϝāĻžā§Ÿ.

 

āĻĒā§āϰāĻĨāĻŽā§‡, āĻĢāĻžāχāϞ āĻāϰ `$Id$` āύāĻžāĻŽā§‡āϰ āĻĢāĻŋāĻ˛ā§āĻĄā§‡ āĻ āĻŦā§āϞāĻŦ āĻāϰ āĻšā§‡āĻ•āϏāĻžāĻŽ āĻ…āĻŸā§‹āĻŽā§‡āϟāĻŋāĻ•ā§āϝāĻžāϞāĻŋ āϰāĻžāχāϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāχ āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻĢāĻžāχāϞ āĻ āϏ⧇āϟ āĻ•āϰ⧇āύ, āϤāĻžāϰāĻĒāϰ āĻĒāϰ⧇āϰ āĻŦāĻžāϰ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āϏ⧇āχ āĻŦā§āϰāĻžāĻžā§āϚ āϟāĻž check out āĻ•āϰ⧇āύ , āĻ—āĻŋāϟ āϏ⧇āχ āĻĢāĻŋāĻ˛ā§āĻĄ āϕ⧇ āĻŦā§āϞāĻŦ āĻāϰ SHA-1 āĻ āϰāĻŋāĻĒā§āϞ⧇āϏ āĻ•āϰāĻŦ⧇āĨ¤ āĻāϟāĻž āϞāĻ•ā§āώ āĻ•āϰāĻž āϜāϰ⧁āϰ⧀ āϝ⧇ āĻāχ SHA-1 āϟāĻŋ āĻ•āĻŽāĻŋāϟ āĻāϰ SHA-1 āύāĻž, āĻŦā§āϞāĻŦ āĻāϰ SHA-1.āφāĻĒāύāĻžāϰ `.gitattributes` āĻĢāĻžāχāϞ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āϞāĻžāχāύāϟāĻŋ āϞāĻŋāϖ⧁āύ:

				
					*.txt ident
				
			

āĻāĻ•āϟāĻŋ āĻŸā§‡āĻ¸ā§āϟ āĻĢāĻžāχāϞ⧇ āĻāĻ•āϟāĻŋ `$Id$` āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻāĻĄ āĻ•āϰ⧁āύ:

				
					$ echo '$Id$' > test.txt
				
			

āĻĒāϰ⧇āϰ āĻŦāĻžāϰ āϝāĻ–āύ āφāĻĒāύāĻŋ āĻāχ āĻĢāĻžāχāϞāϟāĻŋ check out āĻ•āϰāĻŦ⧇āύ, āĻ—āĻŋāϟ āĻŦā§āϞāĻŦ āĻāϰ SHA-1 āϟāĻŋ āχāύāĻœā§‡āĻ•ā§āϟ āĻ•āϰāĻŦ⧇:

				
					$ rm test.txt
$ git checkout -- test.txt
$ cat test.txt
$Id: 42812b7653c7b88933f8a9d6cad0ca16714b9bb3 $
				
			
āφāĻĒāύāĻŋ āϝāĻĻāĻŋ CVS āĻŦāĻž āϏāĻžāĻŦāĻ­āĻžāĻ°ā§āϏāύ-āĻ āĻ•āĻŋ-āĻ“ā§ŸāĻžāĻ°ā§āĻĄ āϏāĻžāĻŦāĻ¸ā§āϟāĻŋāϟāĻŋāωāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĨāĻžāϕ⧇āύ, āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āĻĄā§‡āϟāĻ¸ā§āĻŸā§āϝāĻžāĻŽā§āĻĒ āχāύāĻ•ā§āϞ⧋āĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ – SHA-1 āĻ…āϤāϟāĻž āĻšā§‡āĻ˛ā§āĻĒāĻĢ⧁āϞ āύāĻž, āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ āĻŽā§‹āϟāĻžāĻŽā§āϟāĻŋ āĻ°â€ā§āϝāĻžāĻ¨ā§āĻĄāĻŽ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ SHA-1 āĻ…āĻ¨ā§āϝāϟāĻŋāϰ āĻšā§‡āϝāĻŧ⧇ āĻĒ⧁āϰāĻžāύ⧋ āĻŦāĻž āύāϤ⧁āύ āĻ•āĻŋāύāĻž āϤāĻž āĻĻ⧇āϖ⧇ āφāĻĒāύāĻŋ āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύ āύāĻž. āĻĻ⧇āĻ–āĻž āϝāĻžāĻšā§āϛ⧇ āϝ⧇ āφāĻĒāύāĻŋ commit/checkout āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϤ⧇ āϏāĻžāĻŦāĻ¸ā§āϟāĻŋāϟāĻŋāωāĻļāύāϏ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϰ āύāĻŋāĻœā§‡āϰ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰāϗ⧁āϞāĻŋ āϞāĻŋāĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻāϗ⧁āϞāĻŋāϕ⧇ “clean” āĻāĻŦāĻ‚ “smudge” āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤ `.gitattributes` āĻĢāĻžāχāϞ⧇, āφāĻĒāύāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒāĻžāĻĨ āϗ⧁āϞ⧁āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āϏ⧇āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ⧇ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϏ⧇āϟ āφāĻĒ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϝāĻž āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϕ⧇ check out āĻ•āϰāĻžāϰ āĻ āĻŋāĻ• āφāϗ⧇ āĻĒā§āϰāϏ⧇āϏ āĻ•āϰāĻŦ⧇ (“smudge“, āĻĻ⧇āϖ⧁āύ https://git-scm.com/book/en/v2/ch00/filters_a) āĻāĻŦāĻ‚ stage āĻ•āϰāĻžāϰ āĻ āĻŋāĻ• āφāϗ⧇ (“`clean`”, āĻĻ⧇āϖ⧁āύ https://git-scm.com/book/en/v2/ch00/filters_b)  āϏ⧇āϟ āĻ•āϰāĻŦ⧇āĨ¤ āĻāχ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āϗ⧁āϞ⧋ āĻĻāĻŋā§Ÿā§‡ āĻ…āύ⧇āĻ• āϰāĻ•āĻŽ āĻŽāϜāĻžāĻĻāĻžāϰ āϜāĻŋāύāĻŋāϏ āϏ⧇āϟ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
smudge
āϚāĻŋāĻ¤ā§āϰ ā§§ā§Ēā§Š. "smudge" āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻšā§‡āĻ•āφāωāϟ āϚāĻžāϞāĻžāύ⧋ āĻšāϝāĻŧ
clean
āϚāĻŋāĻ¤ā§āϰ ā§§ā§Ēā§Ē. āϝāĻ–āύ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ āĻŽāĻžā§āϚāĻ¸ā§āĻĨ āĻ•āϰāĻž āĻšāϝāĻŧ āϤāĻ–āύ "āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ" āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āϚāĻžāϞāĻžāύ⧋ āĻšāϝāĻŧ

āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ `.gitattributes` āĻĢāĻžāχāϞ⧇ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ āϏ⧇āϟ āĻ•āϰ⧇ `\*.c` āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϕ⧇ “`āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āϟ`” āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻĻāĻŋāϝāĻŧ⧇ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰ⧇ āϏ⧇āϟ āφāĻĒ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

				
					*.c filter=indent
				
			

āϤāĻžāϰāĻĒāϰ, āĻ—āĻŋāϟ āϕ⧇ āĻŦāϞ⧁āύ “āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āϟ” āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ smudge āĻāĻŦāĻ‚ clean āĻāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϕ⧀ āĻ•āϰ⧇:

				
					$ git config --global filter.indent.clean indent
$ git config --global filter.indent.smudge cat
				
			

āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āφāĻĒāύāĻŋ āϝāĻ–āύ `*.c` āĻāϰ āϏāĻžāĻĨ⧇ āĻŽā§‡āϞ⧇ āĻāĻŽāύ āĻĢāĻžāχāϞ āĻ•āĻŽāĻŋāϟ āĻ•āϰ⧇āύ, āĻ—āĻŋāϟ āϤāĻžāĻĻ⧇āϰ āĻ¸ā§āĻŸā§‡āϜ āĻ•āϰāĻžāϰ āφāϗ⧇ āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āϟ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āϚāĻžāϞāĻžāĻŦ⧇ āĻāĻŦāĻ‚ āĻĄāĻŋāĻ¸ā§āĻ• āĻ  check out āĻ•āϰāĻžāϰ āφāϗ⧇ `cat` āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āϚāĻžāϞāĻžāĻŦ⧇āĨ¤ `cat` āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āφāϏāϞ⧇ āĻŦ⧇āĻļāĻŋ āĻ•āĻŋāϛ⧁ āĻ•āϰ⧇ āύāĻž: āĻāϟāĻž āχāύāĻĒ⧁āϟ āĻ āϝ⧇ āĻĄāĻžāϟāĻž āφāϛ⧇ āϤāĻžāχ āĻĻ⧇āĻ–āĻžā§ŸāĨ¤ āĻāχ āĻ•āĻŽā§āĻŦāĻŋāύ⧇āĻļāύ āĻ•āĻžāĻ°ā§āϝāĻ•āϰāĻ­āĻžāĻŦ⧇ āϏāĻŽāĻ¸ā§āϤ āϏāĻŋ āϏ⧋āĻ°ā§āϏ āϕ⧋āĻĄ āĻĢāĻžāχāϞāϕ⧇ āĻ•āĻŽāĻŋāϟ āĻ•āϰāĻžāϰ āφāϗ⧇ `āχāĻ¨ā§āĻĄā§‡āĻ¨ā§āϟ` āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰāϏ āĻ•āϰ⧇āĨ¤

 

āφāϰ⧇āĻ•āϟāĻŋ āĻŽāϜāĻžāĻĻāĻžāϰ āωāĻĻāĻžāĻšāϰāĻŖ āĻšāϞ `$Date$`āĻ•āĻŋ-āĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻāĻ•ā§āϏāĻĒ⧇āύāĻļāύ, RCS āĻ¸ā§āϟāĻžāχāϞ⧇ āĻāĨ¤ āĻāϟāĻŋ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ•āϰāϤ⧇, āφāĻĒāύāĻžāϰ āĻāĻ•āϟāĻŋ āϛ⧋āϟ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻĻāϰāĻ•āĻžāϰ āϝāĻž āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ⧇āϰ āύāĻžāĻŽ āχāύāĻĒ⧁āϟ āύ⧇āĻŦ⧇, āĻāχ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āĻāϰ āϜāĻ¨ā§āϝ āϏāĻ°ā§āĻŦāĻļ⧇āώ āĻ•āĻŽāĻŋāϟ āĻĄā§‡āχāϟ āĻŦ⧇āϰ āĻ•āϰāĻŦ⧇, āĻāĻŦāĻ‚ āϏ⧇āχ āĻĄā§‡āχāϟ āϟāĻŋ āĻĢāĻžāχāϞ⧇ āϏ⧇āĻ­ āĻ•āϰāĻŦ⧇āĨ¤ āύāĻŋāϛ⧇āϰ Ruby āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϟāĻŋ āϤāĻžāχ āĻ•āϰ⧇:

				
					#! /usr/bin/env ruby
data = STDIN.read
last_date = `git log --pretty=format:"%ad" -1`
puts data.gsub('$Date$', '$Date: ' + last_date.to_s + '$')
				
			

āĻāχ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϟāĻŋ `git log` āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻĨ⧇āϕ⧇ āϞ⧇āĻŸā§‡āĻ¸ā§āϟ āĻ•āĻŽāĻŋāϟ āĻĄā§‡āχāϟ āĻŦ⧇āϰ āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ āϏ⧇āχ āϰ⧇āϜāĻžāĻ˛ā§āϟ stdin āĻāϰ `$Date$` āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻ āϞāĻŋāϖ⧇ āĻĻāĻŋāĻŦ⧇ – āĻāϟāĻž āφāĻĒāύāĻŋ āϝ⧇āϕ⧋āύ⧋ āĻ˛ā§āϝāĻžāĻ™ā§āĻ—ā§ā§Ÿā§‡āϜ āĻ āχāĻŽāĻĒā§āϞ⧇āĻŽā§‡āĻ¨ā§āϟ āĻ•āϰāĻž āϝāĻžāĻŦ⧇āĨ¤ āφāĻĒāύāĻŋ āĻāχ āĻĢāĻžāχāϞāϟāĻŋāϰ āύāĻžāĻŽ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āύ `expand_date` āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻĒāĻžāĻĨ āĻ āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻāĻ–āύ āφāĻĒāύāĻžāϕ⧇ āĻ—āĻŋāϟ āĻ āĻāĻ•āϟāĻŋ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āϏ⧇āϟāφāĻĒ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ (āύāĻžāĻŽ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āύ `dater`) āĻāĻŦāĻ‚ āϤāĻžāϕ⧇ checkout āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ smudge āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϰ `expand_date` āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āϟāĻŋ āĻŦā§āϝāĻžāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻŦāϞāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āĻ•āĻŽāĻŋāϟ āĻāϰ āϏāĻŽā§Ÿ clean āĻ•āϰāϤ⧇ āĻĒāĻžāĻ°ā§āϞ āĻāĻ•ā§āϏāĻĒā§āϰ⧇āĻļāύ āĻŦā§āϝāĻžāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

				
					$ git config filter.dater.smudge expand_date
$ git config filter.dater.clean 'perl -pe "s/\\\$Date[^\\\$]*\\\$/\\\$Date\\\$/"'
				
			

āĻāχ āĻĒāĻžāĻ°ā§āϞ āĻ¸ā§āύāĻŋāĻĒ⧇āϟ `$Date$` āĻāϰ āĻŽāĻ§ā§āϝ⧇ āϝāĻž āĻĒāĻžāĻŦ⧇ āϤāĻž āĻĢāĻžāĻ•āĻž āĻ•āϰ⧇ āĻĢ⧇āϞāĻŦ⧇, āϝ⧇āύ āĻĢāĻžāχāϞ āĻāϰ āφāϗ⧇āϰ āϜāĻžā§ŸāĻ—āĻžāχ āϝāĻžāĻ“ā§ŸāĻž āϝāĻžā§ŸāĨ¤ āĻāĻ–āύ āϝ⧇āĻšā§‡āϤ⧁ āφāĻĒāύāĻžāϰ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āϰ⧇āĻĄāĻŋ āĻšā§Ÿā§‡āϛ⧇, āφāĻĒāύāĻŋ āĻāϟāĻžāϕ⧇ āϕ⧋āύ āĻĢāĻžāχāϞ āϟāĻžāχāĻĒ āĻāϰ āϜāĻ¨ā§āϝ āĻ—āĻŋāϟ āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ āϏ⧇āϟ āĻ•āϰ⧇ āĻāĻŦāĻ‚ $Date$` āĻ•āĻŋ-āĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻāϰ āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

				
					date*.txt filter=dater
				
			
				
					$ echo '# $Date$' > date_test.txt
				
			

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϏ⧇āχ āĻšā§‡āχāĻžā§āϜ āϗ⧁āϞ⧋ āĻ•āĻŽāĻŋāϟ āĻ•āϰ⧇āύ āĻāĻŦāĻ‚ āφāĻŦāĻžāϰ āϏ⧇āχ āĻĢāĻžāχāϞ āϟāĻŋ check out āĻ•āϰ⧇āύ āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ⧇āύ āϝ⧇ āĻ•āĻŋ-āĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻ āĻŋāĻ•āĻŽāϤ āϏāĻžāĻŦāĻ¸ā§āϟāĻŋāωāϟ āĻšā§Ÿā§‡āϛ⧇āσ

				
					$ git add date_test.txt .gitattributes
$ git commit -m "Test date expansion in Git"
$ rm date_test.txt
$ git checkout date_test.txt
$ cat date_test.txt
# $Date: Tue Apr 21 07:26:52 2009 -0700$
				
			

āφāĻĒāύāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻšā§āϛ⧇āύ āϝ⧇ āĻāχ āĻŸā§‡āĻ•āύāĻŋāĻ• āϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāχāϜāĻĄ āĻāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻ…āύ⧇āĻ• āĻĒāĻžāĻ“ā§ŸāĻžāϰāĻĢ⧁āϞ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻ…āĻŦāĻļā§āϝ āφāĻĒāύāĻžāϕ⧇ āĻāχ āĻŦā§āϝāĻžāĻĒāĻžāϰ⧇ āϏāĻžāĻŦāϧāĻžāύ āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇, āĻ•āĻžāϰāύ .gitattributes āĻĢāĻžāχāϞāϟāĻŋ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āĻ āĻ•āĻŽāĻŋāϟ āĻāĻŦāĻ‚ āĻļā§‡ā§ŸāĻžāϰ āĻšāĻŦ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĄā§āϰāĻžāχāĻ­āĻžāĻ°Â  (`dater`) āĻļā§‡ā§ŸāĻžāϰ āĻšāĻŦ⧇ āύāĻž, āϤāĻžāχ āĻāϟāĻŋ āϏāĻŦ āϝāĻžā§ŸāĻ—āĻžā§Ÿ āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇ āύāĻžāĨ¤ āφāĻĒāύāĻŋ āϝāĻ–āύ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āϗ⧁āϞ⧋ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻŦ⧇āύ, āĻāĻŽāύ āĻ­āĻžāĻŦ⧇ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻŦ⧇āύ āϝ⧇āύ āϤāĻž āĻ—ā§āϰ⧇āĻ¸ā§āĻĢ⧁āϞ āĻĢ⧇āχāϞ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āϝ⧇āύ āĻ āĻŋāĻ•āĻŽāϤ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

 

āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ āχāωāϰ āϰāĻŋāĻĒā§‹āϜāĻŋāϟāϰāĻŋ

āφāĻĒāύāĻžāϰ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āĻāϰ āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āφāĻĒāύāĻŋ āĻ—āĻŋāϟ āĻāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ āĻĻāĻŋā§Ÿā§‡ āĻ•āĻŋāϛ⧁ āχāĻ¨ā§āϟāĻžāϰ⧇āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

 

export-ignore

āφāĻĒāύāĻŋ āĻ—āĻŋāϟ āϕ⧇ āĻŦāϞāϤ⧇ āĻĒāĻžāϰ⧇āύ āϝ⧇ āϏ⧇ āφāĻĒāύāĻžāϰ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āφāĻ°ā§āĻ•āĻžāχāĻ­ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āĻŋāϛ⧁ āĻĢāĻžāχāϞ āĻŦāĻž āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ āύāĻž āĻ•āϰ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ āĻ…āĻĨāĻŦāĻž āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āφāĻ°ā§āĻ•āĻžāχāĻ­ āĻ āϰāĻžāĻ–āϤ⧇ āϚāĻžāύ āύāĻž āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻĒāύāĻžāϰ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āĻ checked in āĻ•āϰ⧇ āϰāĻžāĻ–āϤ⧇ āϚāĻžāύ, āφāĻĒāύāĻŋ āĻāϟāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύ export-ignore āĻāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ āĻĻāĻŋā§Ÿā§‡āĨ¤

 

āωāĻĻāĻžāĻšāϰāĻŖ āĻ¸ā§āĻŦāϰ⧂āĻĒ,āϧāϰ⧁āύ āφāĻĒāύāĻžāϰ āĻĒā§āϰ⧋āĻœā§‡āĻ•ā§āϟ āĻāϰ test/ āϏāĻžāĻŦāĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āϤ⧇ āĻ•āĻŋāϛ⧁ āĻŸā§‡āĻ¸ā§āϟ āĻĢāĻžāχāϞāϏ āφāϛ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏ⧇āχ āĻĢāĻžāχāϞ āϗ⧁āϞ⧋ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āĻāϰ āϟāĻžāϰāĻŦāĻžāϞ āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ āĻ āϰāĻžāĻ–āĻžāϰ āϕ⧋āύ āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āύ⧇āχāĨ¤ āφāĻĒāύāĻŋ āĻāχ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϰ āĻ—āĻŋāϟ āĻāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟāϏ āĻĢāĻžāχāϞ āĻ āύ⧀āĻšā§‡āϰ āϞāĻžāχāύ āĻ…ā§āϝāĻžāĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

				
					test/ export-ignore
				
			

āĻāĻ–āύ āφāĻĒāύāĻŋ āϝāĻ–āύ git archive āĻĻāĻŋā§Ÿā§‡ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āĻāϰ āϟāĻžāϰāĻŦāĻžāĻ˛Â  āĻ•ā§āϰāĻŋā§Ÿā§‡āϟ āĻ•āϰāĻŦ⧇āύ, āϏ⧇āχ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ āφāĻ°ā§āĻ•āĻžāχāĻ­ āĻ āĻĨāĻžāĻ•āĻŦ⧇ āύāĻžāĨ¤

 

export-subst

āϝāĻ–āύ āφāĻĒāύāĻŋ āĻĄā§‡āĻĒā§āϞ⧟āĻŽā§‡āĻ¨ā§āϟ āĻāϰ āϜāĻ¨ā§āϝ āĻĢāĻžāχāϞāϗ⧁āϞ⧋ āĻāĻ•ā§āϏāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻŦ⧇āύ āϤāĻ–āĻ¨Â  export-subst āĻāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ āĻĻāĻŋā§Ÿā§‡ āĻŽāĻžāĻ°ā§āĻ• āĻ•āϰāĻž āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϤ⧇ git log āĻāϰ āĻĢāϰāĻŽā§āϝāĻžāϟāĻŋāĻ‚ āĻāĻŦāĻ‚ āĻ•āĻŋ-āĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻāĻ•ā§āϏāĻĒ⧇āύāĻļāύ āĻĒā§āϰāϏ⧇āϏāĻŋāĻ‚ āĻ…ā§āϝāĻžāĻĒā§āϞāĻžāχ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

 

āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āĻ LAST_COMMIT āύāĻžāĻŽā§‡ āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ āϰāĻžāĻ–āϤ⧇ āϚāĻžāύ, āĻāĻŦāĻ‚ āϝāĻ–āύ git archive āϰāĻžāύ āĻšāĻŦ⧇ āϤāĻ–āύāĻ•āĻžāϰ āϏāĻ°ā§āĻŦāĻļ⧇āώ āĻ•āĻŽāĻŋāϟ āĻāϰ āĻŽā§‡āϟāĻžāĻĄāĻžāϟāĻž āĻ…āĻŸā§‹āĻŽā§‡āϟāĻŋāĻ•ā§āϝāĻžāϞāĻŋ āĻ…ā§āϝāĻžāĻĄ āĻ•āϰāϤ⧇ āϚāĻžāύ, āφāĻĒāύāĻžāϰ .gitattributes āĻāĻŦāĻ‚ LAST_COMMIT āφāĻĒāύāĻŋ āύ⧀āĻšā§‡āϰ āĻŽāϤ āĻ•āϰ⧇ āϏ⧇āϟāφāĻĒ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

				
					LAST_COMMIT export-subst
				
			
				
					$ echo 'Last commit date: $Format:%cd by %aN$' > LAST_COMMIT
$ git add LAST_COMMIT .gitattributes
$ git commit -am 'adding LAST_COMMIT file for archives'
				
			

āφāĻĒāύāĻŋ āϝāĻ–āύ git archive āϰāĻžāύ āĻ•āϰāĻŦ⧇āύ āϤāĻ–āύ āφāĻ°ā§āĻ•āĻžāχāĻ­ āĻ•āϰāĻž āĻĢāĻžāχāϞ āĻāϰ āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āύ⧀āĻšā§‡āϰ āĻŽāϤ āĻĻ⧇āĻ–āĻžāĻŦ⧇:

				
					$ git archive HEAD | tar xCf ../deployment-testing -
$ cat ../deployment-testing/LAST_COMMIT
Last commit date: Tue Apr 21 08:38:48 2009 -0700 by Scott Chacon
				
			

āĻāχ āϏāĻžāĻŦāĻ¸ā§āϟāĻŋāϟāĻŋāωāĻļāύ āϗ⧁āϞ⧋ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ āĻ•āĻŽāĻŋāϟ āĻŽā§‡āϏ⧇āϜ āĻāĻŦāĻ‚ āϝ⧇āϕ⧋āύ⧋ git notes, āĻāĻŦāĻ‚ git log āĻ“ā§ŸāĻžāĻ°ā§āĻĄ āĻ°â€ā§āϝāĻžāĻĒāĻŋāĻ‚ āĻ•āϰ⧇ āĻĻ⧇āĻ–āĻžāĻŦ⧇:

				
					$ echo '$Format:Last commit: %h by %aN at %cd%n%+w(76,6,9)%B$' > LAST_COMMIT
$ git commit -am 'export-subst uses git log'\''s custom formatter

git archive uses git log'\''s `pretty=format:` processor
directly, and strips the surrounding `$Format:` and `$`
markup from the output.
'
$ git archive @ | tar xfO - LAST_COMMIT
Last commit: 312ccc8 by Jim Hill at Fri May 8 09:14:04 2015 -0700
       export-subst uses git log's custom formatter

         git archive uses git log's `pretty=format:` processor directly, and
         strips the surrounding `$Format:` and `$` markup from the output.
				
			

āϝ⧇ āφāĻ°ā§āĻ•āĻžāχāĻ­ āϟāĻŋ āϤ⧈āϰāĻŋ āĻšā§Ÿ āϤāĻž āĻĄā§‡āĻĒā§āϞ⧟āĻŽā§‡āĻ¨ā§āϟ āĻāϰ āϜāĻ¨ā§āϝ āωāĻĒāϝ⧁āĻ•ā§āϤ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϟāĻŋ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ āĻāϰ āϜāĻ¨ā§āϝ āωāĻĒāϝ⧁āĻ•ā§āϤ āύ⧟āĨ¤Â 

 

āĻŽāĻžāĻ°ā§āϜ āĻ¸ā§āĻŸā§āϰ⧇āĻŸā§‡āϜāĻŋāĻœÂ 

āφāĻĒāύāĻŋ āĻ—āĻŋāϟ āĻāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ āĻĻāĻŋā§Ÿā§‡ āĻ—āĻŋāϟ āϕ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĢāĻžāχāϞ āĻāϰ āϜāĻ¨ā§āϝ āĻ­āĻŋāĻ¨ā§āύ āĻŽāĻžāĻ°ā§āϜ āĻ¸ā§āĻŸā§āϰ⧇āĻŸā§‡āϜāĻŋāϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻŦāϞāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ…āĻĒāĻļāύ āĻšāϞ āϝ⧇, āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āĻŋāϛ⧁ āĻĢāĻžāχāϞ āĻ āĻ•āύāĻĢā§āϞāĻŋāĻ•ā§āϟ āĻšāϞ⧇ āĻ—āĻŋāϟ āϝ⧇āύ āϏ⧇āχ āĻĢāĻžāχāϞ āϗ⧁āϞ⧋ āĻŽāĻžāĻ°ā§āϜ āύāĻž āĻ•āϰ⧇, āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϏ⧇ āϝ⧇āύ āφāĻĒāύāĻžāϰ āϏāĻžāχāĻĄ āĻāϰ āĻŽāĻžāĻ°ā§āϜ āϟāĻž āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰ⧇āĨ¤Â 

 

āĻāϟāĻŋ āϏāĻšāĻžāϝāĻŧāĻ• āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡āϰ āĻāĻ•āϟāĻŋ āĻŦā§āϰāĻžāĻžā§āϚ āφāϞāĻžāĻĻāĻž āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ āĻŦāĻž āĻŦāĻŋāĻļ⧇āώāĻžāϝāĻŧāĻŋāϤ āĻšāϝāĻŧ, āϤāĻŦ⧇ āφāĻĒāύāĻŋ āĻāϟāĻŋ āĻĨ⧇āϕ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋāϕ⧇ āφāĻŦāĻžāϰ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāϤ⧇ āϚāĻžāύ āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϕ⧇ āχāĻ—āύ⧋āϰ āĻ•āϰāϤ⧇ āϚāĻžāύāĨ¤ āĻŦāϞ⧁āύ āφāĻĒāύāĻžāϰ āĻ•āĻžāϛ⧇ database.xml āύāĻžāĻŽāĻ• āĻāĻ•āϟāĻŋ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āϏ⧇āϟāĻŋāĻ‚āϏ āĻĢāĻžāχāϞ āφāϛ⧇ āϝāĻž āĻĻ⧁āϟāĻŋ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āĻ­āĻŋāĻ¨ā§āύ, āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻĢāĻžāχāϞāϟāĻŋ āĻāϞ⧋āĻŽā§‡āϞ⧋ āύāĻž āĻ•āϰ⧇ āφāĻĒāύāĻžāϰ āĻ…āĻ¨ā§āϝ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāϤ⧇ āϚāĻžāύāĨ¤ āφāĻĒāύāĻŋ āĻāχ āĻŽāϤ āĻāĻ•āϟāĻŋ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϏ⧇āϟ āφāĻĒ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ: 

				
					database.xml merge=ours
				
			

āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āĻāĻ•āϟāĻŋ āĻĄāĻžāĻŽāĻŋ `ours` āĻŽāĻžāĻ°ā§āϜ āĻ¸ā§āĻŸā§āϰ⧇āĻŸā§‡āϜāĻŋ āĻāϰ āϏāĻžāĻĨ⧇ āĻĄāĻŋāĻĢāĻžāχāύ āĻ•āϰ⧁āύ:

And then define a dummy `ours` merge strategy with:

				
					$ git config --global merge.ours.driver true
				
			

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻ…āĻ¨ā§āϝ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āĻŽāĻžāĻ°ā§āϜ āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ database.xml āĻĢāĻžāχāϞ⧇āϰ āϏāĻžāĻĨ⧇ āĻŽāĻžāĻ°ā§āϜ āĻ•āύāĻĢā§āϞāĻŋāĻ•ā§āϟāϏ āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇, āφāĻĒāύāĻŋ āĻāϰāĻ•āĻŽ āĻ•āĻŋāϛ⧁ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ⧇āύ:

				
					$ git merge topic
Auto-merging database.xml
Merge made by recursive.
				
			

āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, database.xml āφāĻĒāύāĻžāϰ āĻ•āĻžāϛ⧇ āϝ⧇ āĻ­āĻžāĻ°ā§āϏāύāϟāĻŋ āĻ›āĻŋāϞ āϏ⧇āĻ–āĻžāύ⧇āχ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤