แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒ—

แƒ˜แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ— Git แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ’แƒกแƒฃแƒ แƒ— แƒฌแƒแƒ แƒ›แƒแƒ˜แƒ“แƒ’แƒ˜แƒœแƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ (CI) แƒกแƒ˜แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ”แƒจแƒ˜? แƒแƒœ แƒ˜แƒฅแƒœแƒ”แƒ‘ แƒ’แƒกแƒฃแƒ แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒงแƒแƒ•แƒ”แƒšแƒ“แƒฆแƒ˜แƒฃแƒ แƒ˜ แƒกแƒแƒฅแƒ›แƒ˜แƒแƒœแƒแƒ‘แƒ˜แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ? แƒ”แƒก แƒ™แƒฃแƒ แƒกแƒ˜ แƒ›แƒแƒ’แƒชแƒ”แƒ›แƒ— แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒฃแƒš แƒฃแƒœแƒแƒ แƒ”แƒ‘แƒก GitHub แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ”แƒก แƒ™แƒฃแƒ แƒกแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒ˜แƒ–แƒœแƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒแƒกแƒขแƒแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒแƒ—; แƒžแƒ˜แƒ แƒ˜แƒฅแƒ˜แƒ—, แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ— แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒก, แƒ แƒแƒกแƒแƒช แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ”แƒœ แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒ–แƒ”, แƒ˜แƒกแƒ”แƒ•แƒ” แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ”แƒœ แƒแƒ›แƒแƒก. แƒ›แƒ” แƒแƒ’แƒ˜แƒฎแƒกแƒœแƒ˜แƒ— แƒ—แƒ”แƒแƒ แƒ˜แƒแƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒ˜แƒ•แƒšแƒ˜แƒ— แƒฉแƒแƒ แƒ—แƒฃแƒš แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒก.

แฒ แƒแƒก แƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ—?

แƒžแƒ แƒแƒ’แƒ แƒ”แƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ—แƒแƒœแƒ“แƒแƒ—แƒแƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ CI แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒก, แƒ แƒแƒช แƒแƒ› แƒกแƒ˜แƒ˜แƒก แƒ“แƒแƒ›แƒแƒฎแƒกแƒแƒ•แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜ แƒ’แƒ–แƒแƒ. แƒกแƒฎแƒ•แƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒ— แƒ แƒแƒ› แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒ˜แƒ› แƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ”แƒœ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก, แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒก. แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒขแƒ˜แƒ• แƒ™แƒแƒ›แƒžแƒšแƒ”แƒฅแƒขแƒก แƒฉแƒ•แƒ”แƒœแƒ˜ CI แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ แƒ”แƒแƒšแƒฃแƒ แƒ—แƒแƒœ แƒ›แƒ˜แƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ”แƒก GIF แƒกแƒฅแƒ”แƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒแƒชแƒแƒ•แƒจแƒ˜, แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ’แƒแƒ•แƒšแƒ˜แƒกแƒแƒก. แƒ แƒแƒ’แƒแƒ แƒช แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒแƒฅ แƒแƒ แƒแƒคแƒ”แƒ แƒ˜แƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒ“แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒกแƒแƒญแƒ˜แƒ แƒ.

แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒ—

แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒ˜แƒ•แƒšแƒ˜แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒš CI แƒกแƒชแƒ”แƒœแƒแƒ แƒ”แƒ‘แƒก:

  • แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒ–แƒ”;
  • แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒกแƒแƒงแƒแƒคแƒแƒ“ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ;
  • แƒžแƒ แƒ˜แƒแƒ แƒ˜แƒขแƒ”แƒขแƒฃแƒšแƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ;
  • แƒ’แƒแƒœแƒจแƒขแƒแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒกแƒแƒก แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒ (แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ˜);
  • แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒจแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ.

แƒ แƒแƒก แƒ˜แƒกแƒฌแƒแƒ•แƒšแƒ˜?

แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒซแƒšแƒ”แƒ‘แƒ— แƒฃแƒžแƒแƒกแƒฃแƒฎแƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒ‘แƒก:

  • แƒ แƒ แƒแƒ แƒ˜แƒก แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ (CI)?
  • แƒ แƒ แƒขแƒ˜แƒžแƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ CI-แƒจแƒ˜ แƒ“แƒ แƒ แƒ แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒžแƒแƒกแƒฃแƒฎแƒแƒ“ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ˜แƒกแƒ˜แƒœแƒ˜?
  • แƒ แƒ แƒแƒ แƒ˜แƒก แƒ›แƒแƒ–แƒ˜แƒ“แƒ•แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ แƒแƒ“แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒกแƒแƒญแƒ˜แƒ แƒ?
  • แƒ แƒ แƒแƒ แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ–แƒ” แƒแƒ แƒ˜แƒ”แƒœแƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ (TDD) แƒ“แƒ แƒ แƒแƒ’แƒแƒ  แƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ˜แƒก CI-แƒก?
  • แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ•แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ แƒ—แƒฃ แƒจแƒ”แƒ•แƒชแƒ•แƒแƒšแƒ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜?
  • แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒแƒก แƒ—แƒฃ แƒ’แƒแƒแƒกแƒฌแƒแƒ แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒจแƒ˜?

แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒงแƒ•แƒ”แƒšแƒ’แƒแƒœ แƒ•แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ˜แƒ“แƒ˜ แƒ แƒแƒฆแƒแƒชแƒ”แƒ”แƒ‘แƒก, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ "แƒ›แƒแƒ–แƒ˜แƒ“แƒ•แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜", แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“ แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒคแƒ แƒแƒ–แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ แƒ˜แƒœแƒ’แƒšแƒ˜แƒกแƒฃแƒ แƒแƒ“ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก, แƒ แƒแƒ—แƒ แƒจแƒ”แƒ›แƒ”แƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒœแƒ แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒกแƒ˜แƒ’แƒ˜แƒŸแƒ˜แƒก แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜. แƒ›แƒ” แƒฎแƒแƒœแƒ“แƒแƒฎแƒแƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘ โ€žแƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒข แƒกแƒฃแƒ แƒŸแƒ˜แƒ™แƒกโ€œ, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒจแƒ•แƒ”แƒœแƒ˜แƒ”แƒ แƒ˜ แƒ–แƒ›แƒœแƒ โ€žแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ”แƒœโ€œ, แƒกแƒแƒ“แƒแƒช แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒœ แƒ›แƒแƒก แƒกแƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒจแƒ˜.

แƒ แƒ แƒแƒ แƒ˜แƒก แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ?

แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ, แƒแƒœ CI, แƒแƒ แƒ˜แƒก แƒขแƒ”แƒฅแƒœแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒ, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ“แƒ แƒแƒกแƒแƒช แƒ’แƒฃแƒœแƒ“แƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒฌแƒ”แƒ•แƒ แƒ˜ แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒก แƒ—แƒแƒ•แƒ˜แƒก แƒ™แƒแƒ“แƒก แƒกแƒแƒ”แƒ แƒ—แƒ แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒ“แƒฆแƒ”แƒจแƒ˜ แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒ›แƒแƒ˜แƒœแƒช แƒ“แƒ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜ แƒ›แƒแƒ˜แƒœแƒช แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒแƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.

แƒแƒ› แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ— แƒฃแƒ—แƒแƒœแƒฎแƒ›แƒแƒ”แƒ‘แƒแƒ

แƒ™แƒแƒ›แƒแƒ—แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜ แƒแƒ แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ”. แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ”แƒ‘แƒก, แƒ แƒแƒ› แƒ™แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ“แƒฆแƒ”แƒจแƒ˜ แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒ›แƒแƒฎแƒ“แƒ”แƒก แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒแƒ แƒ˜แƒก แƒ’แƒฃแƒœแƒ“แƒ˜, แƒกแƒแƒ“แƒแƒช แƒงแƒ•แƒ”แƒšแƒ แƒ˜แƒฆแƒ”แƒ‘แƒก แƒแƒฎแƒแƒš แƒ™แƒแƒ“แƒก แƒ“แƒ˜แƒšแƒ˜แƒ— แƒ“แƒ แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒก แƒ›แƒแƒก แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒกแƒแƒฆแƒแƒ›แƒแƒก. แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒ˜แƒ•แƒ แƒฃแƒšแƒ˜ แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’แƒแƒ‘แƒ, แƒ–แƒแƒ’แƒแƒ“แƒแƒ“ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ แƒแƒ› แƒ“แƒฆแƒ”แƒจแƒ˜ แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒฃแƒšแƒ˜, แƒกแƒžแƒ”แƒชแƒ˜แƒคแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ“แƒ แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒกแƒ˜แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ–แƒแƒ›แƒ˜แƒก แƒ’แƒฃแƒœแƒ“แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’แƒแƒ‘แƒ แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒ› C++ แƒแƒฆแƒแƒ  แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—แƒแƒ“แƒ”แƒ แƒ—แƒ˜ แƒ”แƒœแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒแƒจแƒ˜ แƒ“แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“, แƒฃแƒจแƒ”แƒชแƒ“แƒแƒ›แƒแƒ“ แƒจแƒ”แƒ™แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒ“แƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ, แƒกแƒฃแƒกแƒขแƒ˜แƒ. แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“) แƒแƒกแƒ”แƒ•แƒ” แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒฃแƒœแƒ“แƒ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ”แƒก. แƒแƒ› แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜, แƒกแƒแƒ–แƒแƒ’แƒแƒ“แƒแƒ”แƒ‘แƒ แƒ›แƒ˜แƒ“แƒ˜แƒก แƒ˜แƒ›แƒ˜แƒกแƒ™แƒ”แƒœ, แƒ แƒแƒ› แƒ”แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ’แƒแƒฎแƒ“แƒ”แƒก แƒ“แƒ แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜ "build + unit tests" แƒแƒšแƒ‘แƒแƒ— แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒ แƒ’แƒแƒฎแƒ“แƒ”แƒ‘แƒ, แƒ—แƒฃ แƒ”แƒก แƒฃแƒ™แƒ•แƒ” แƒแƒ  แƒแƒ แƒ˜แƒก.

แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ (แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ, CD) แƒ˜แƒ›แƒ˜แƒ—, แƒ แƒแƒ› แƒแƒ  แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒก แƒ’แƒแƒ›แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒ“แƒ˜แƒ“แƒแƒขแƒก แƒงแƒแƒ•แƒ”แƒšแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒชแƒ˜แƒ™แƒšแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’.

แƒกแƒแƒคแƒ”แƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜

  1. แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒ”แƒ— แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒ™แƒแƒ“แƒ˜. แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜ master. แฒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ.
  2. แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒแƒฎแƒแƒš แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ–แƒ”. แƒแƒแƒจแƒ”แƒœแƒ”แƒ— แƒ“แƒ แƒ’แƒแƒ›แƒแƒกแƒชแƒแƒ“แƒ”แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“. แƒกแƒแƒจแƒ•แƒ˜? แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ”แƒขแƒแƒžแƒ–แƒ”. แƒ›แƒแƒ แƒชแƒฎแƒ˜? แƒจแƒ”แƒแƒกแƒฌแƒแƒ แƒ”แƒ— แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜ แƒแƒœ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒกแƒชแƒแƒ“แƒ”แƒ— แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ.
  3. แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒแƒœ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜.
  4. แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ’แƒแƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ. แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜, แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ›แƒ”แƒขแƒ˜ แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ˜แƒกแƒ™แƒฃแƒกแƒ˜แƒ˜แƒก แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒ˜แƒกแƒแƒก. แƒ’แƒแƒ˜แƒแƒ แƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜.
  5. แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ/แƒ’แƒแƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒ แƒแƒกแƒขแƒแƒขแƒ˜แƒกแƒ’แƒแƒœ. แƒ’แƒแƒ˜แƒแƒ แƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ–แƒ”.
  6. แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒฃแƒ แƒ˜ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜แƒ“แƒแƒœ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒ›แƒ“แƒ”.
  7. แƒ—แƒฃ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ™แƒแƒ แƒ’แƒ˜แƒ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒจแƒ˜ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒจแƒ”แƒแƒ”แƒ แƒ—แƒ”แƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ›แƒแƒกแƒขแƒ”แƒ แƒจแƒ˜.

แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒ—

๏ธ แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ

แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒ’แƒแƒฅแƒ•แƒ— แƒกแƒฌแƒแƒ แƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒฃแƒšแƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒ

แƒแƒ› แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ’แƒแƒกแƒแƒ•แƒšแƒ”แƒšแƒแƒ“ แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— Node.js ะธ Git แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ Git แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ” แƒ›แƒ˜แƒ•แƒชแƒ”แƒ› แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒฅแƒ•แƒ— Git แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒก

แƒ—แƒฃ แƒฏแƒ”แƒ  แƒแƒ  แƒ’แƒแƒฅแƒ•แƒ— Git แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒก, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒžแƒแƒ•แƒแƒ— แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒแƒฅ.

แƒ›แƒแƒแƒ›แƒ–แƒแƒ“แƒ”แƒ— แƒกแƒแƒชแƒแƒ•แƒ˜

แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒแƒกแƒšแƒ˜ (แƒฉแƒแƒœแƒ’แƒแƒšแƒ˜) แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒ— GitHub-แƒ–แƒ”. แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒ—แƒแƒœแƒฎแƒ›แƒ“แƒ”แƒ— แƒ“แƒแƒ•แƒแƒ แƒฅแƒ•แƒแƒ— แƒ”แƒก แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒแƒกแƒšแƒ˜ แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒ˜.

แฒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ? แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ’แƒ˜แƒชแƒ•แƒšแƒ˜แƒแƒ— แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜, แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒ˜ แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒซแƒแƒฎแƒ”แƒ‘แƒ continuous-integration-team-scenarios-students, แƒ˜แƒก แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒก GitHub แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒจแƒ˜ แƒ“แƒ URL แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ

https://github.com/<ะฒะฐัˆะต ะธะผั ะฟะพะปะทะพะฒะฐั‚ะตะปั ะฝะฐ GitHub>/continuous-integration-team-scenarios-students

แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒ› แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒก แƒ“แƒแƒ•แƒฃแƒ แƒ”แƒ™แƒแƒ• <URL ั€ะตะฟะพะทะธั‚ะพั€ะธั>.

แƒ™แƒฃแƒ—แƒฎแƒ˜แƒก แƒคแƒ แƒฉแƒฎแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ›แƒแƒกแƒฌแƒแƒœแƒก <ั‚ัƒั‚> แƒ”แƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒ— แƒแƒกแƒ”แƒ—แƒ˜ แƒ’แƒแƒ›แƒแƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒ˜ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒ—.

แฒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜, แƒ แƒแƒ› GitHub แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ“แƒ˜แƒก แƒแƒ› แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ—แƒฃ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜, แƒ’แƒ—แƒฎแƒแƒ•แƒ—, แƒฉแƒแƒ แƒ—แƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒก แƒจแƒฃแƒแƒจแƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒš แƒ“แƒ˜แƒ“ แƒฆแƒ˜แƒšแƒแƒ™แƒ–แƒ” แƒ“แƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒแƒฎแƒ•แƒ“แƒ”แƒ— แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ‘แƒ˜แƒ— GitHub แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒจแƒ˜.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒ•แƒ”แƒ  แƒจแƒ”แƒซแƒšแƒ”แƒ‘แƒ— แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก แƒฉแƒ”แƒ›แƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒ—แƒฃ GitHub Actions แƒแƒ  แƒแƒ แƒ˜แƒก แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜.

แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒ—

แƒ—แƒฅแƒ•แƒ”แƒœ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— GitHub-แƒ˜แƒก แƒฃแƒœแƒแƒ แƒ˜, แƒ’แƒแƒ›แƒแƒแƒฅแƒ•แƒ”แƒงแƒœแƒแƒก Markdown, แƒ แƒแƒ—แƒ แƒœแƒแƒฎแƒแƒ— แƒกแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒแƒฅ แƒ•แƒฅแƒ›แƒœแƒ˜แƒ—.

https://github.com/<your GitHub user name>/continuous-integration-team-scenarios-students/blob/master/ci.md

แƒžแƒแƒกแƒฃแƒฎแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘

แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒแƒ› แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ แƒ’แƒ–แƒแƒ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒก, แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ”แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ’แƒ”แƒฅแƒ›แƒœแƒแƒ—.

แƒ—แƒฃ แƒ’แƒ แƒซแƒœแƒแƒ‘แƒ—, แƒ แƒแƒ› แƒแƒ  แƒ’แƒ”แƒกแƒ›แƒ˜แƒ— แƒ แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ— แƒ“แƒ แƒแƒ  แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒแƒ’แƒ แƒซแƒ”แƒšแƒแƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ“แƒแƒฎแƒ”แƒ“แƒแƒ— แƒ—แƒ”แƒ›แƒแƒก solution, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒแƒฌแƒงแƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒจแƒ˜แƒ.
แƒ’แƒ—แƒฎแƒแƒ•แƒ—, แƒแƒ  แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ“แƒ”แƒ— solution ะฒ master แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ”แƒก แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜ แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒกแƒแƒ แƒ™แƒ•แƒ”แƒ•แƒแƒ“, แƒ—แƒฃ แƒ แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ—, แƒแƒœ แƒจแƒ”แƒแƒ“แƒแƒ แƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒ“แƒ˜ แƒแƒ•แƒขแƒแƒ แƒ˜แƒก, แƒงแƒ•แƒ”แƒšแƒ แƒ˜แƒ› แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช Git แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก. แƒ—แƒฃ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ“แƒแƒ˜แƒ™แƒแƒ แƒ’แƒ”แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜ master แƒขแƒแƒขแƒ–แƒ” solution แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒกแƒแƒคแƒ”แƒฎแƒฃแƒ แƒ–แƒ”.

แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒ”แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ—แƒฃ แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒแƒ“ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ—

แƒฉแƒแƒแƒ‘แƒแƒ แƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒ“แƒ˜

git add .
git commit -m "Backing up my work"

แƒ”แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜

  • แƒ’แƒแƒ“แƒแƒ แƒฅแƒ›แƒ”แƒ•แƒ master ะฒ master-backup;
  • แƒ’แƒแƒ“แƒแƒ แƒฅแƒ›แƒ”แƒ•แƒ solution ะฒ master;
  • แƒ’แƒแƒ“แƒแƒฎแƒ“แƒ แƒแƒฎแƒแƒš แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜ master แƒ“แƒ แƒ’แƒแƒ“แƒแƒฌแƒ”แƒ แƒ”แƒ— แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜;
  • แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— "แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒก" แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜ "แƒ›แƒแƒกแƒขแƒ”แƒ แƒ˜แƒกแƒ’แƒแƒœ" (แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ“แƒ แƒ” แƒ˜แƒงแƒ "แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ") แƒ˜แƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ—แƒฃ แƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒจแƒ˜ แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— "แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒก" แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜.

git branch -m master master-backup
git branch -m solution master
git checkout master -f
git branch solution

แƒแƒ› แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— git log master แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒกแƒแƒ แƒ™แƒ•แƒ”แƒ•แƒแƒ“, แƒ แƒแƒ›แƒ”แƒšแƒ˜ แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ—.
แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ“แƒแƒแƒงแƒ”แƒœแƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒ แƒแƒ› commit-แƒ–แƒ” แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒœแƒแƒ˜แƒ แƒแƒ“:

git reset --hard <the SHA you need>

แƒ—แƒฃ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜แƒ— แƒ™แƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜ แƒฎแƒแƒ แƒ—, แƒ แƒแƒฆแƒแƒช แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜ แƒ›แƒแƒ’แƒ˜แƒฌแƒ”แƒ•แƒ— แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒกแƒแƒชแƒแƒ•แƒจแƒ˜. แƒแƒ  แƒ“แƒแƒ’แƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ”แƒ— แƒชแƒแƒšแƒกแƒแƒฎแƒแƒ“ แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒแƒ— แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒแƒ›แƒแƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ—.

git push --force origin master

แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒแƒ—, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— git push --force. แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒแƒ“ แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ, แƒ แƒแƒ› แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ›แƒแƒ’แƒ˜แƒœแƒ“แƒ”แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒกแƒชแƒ”แƒœแƒแƒ แƒ˜ แƒแƒฅ แƒ”แƒ แƒ—แƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช, แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒ”แƒกแƒ›แƒ˜แƒก แƒ แƒแƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก.

แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ

แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒ—

แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ CI แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ˜แƒก แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ. แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•, แƒ—แƒฅแƒ•แƒ”แƒœ แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ“แƒ˜แƒ— แƒแƒ› แƒœแƒแƒ‘แƒ˜แƒฏแƒก แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜แƒ“แƒแƒœ แƒ™แƒแƒ“แƒ˜แƒก แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒฏแƒ”แƒ  แƒแƒ  แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ›แƒแƒก แƒ™แƒšแƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ— แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜แƒ“แƒแƒœ.

๏ธ แƒแƒ›แƒแƒชแƒแƒœแƒ: แƒ’แƒแƒœแƒแƒแƒฎแƒšแƒ”แƒ— แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜, แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜ master, แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ

  1. แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒ˜แƒ“แƒแƒœ แƒ™แƒšแƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ <URL ั€ะตะฟะพะทะธั‚ะพั€ะธั>.
  2. แƒ’แƒแƒ แƒ‘แƒแƒ“แƒ npm install แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜; แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ Jest-แƒ˜แƒก แƒ“แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“.
  3. แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜ แƒ“แƒ แƒ“แƒแƒแƒกแƒแƒฎแƒ”แƒšแƒ”แƒ— feature. แƒ’แƒแƒ“แƒแƒ”แƒ แƒ—แƒ”แƒ— แƒแƒ› แƒ—แƒ”แƒ›แƒแƒจแƒ˜.
  4. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜ ci.test.js แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒ›แƒแƒก แƒ›แƒ—แƒฎแƒแƒ•แƒ”แƒœ.

    it('1. pull latest code', () => {
      expect(/.*pull.*/ig.test(fileContents)).toBe(true);
    });
    
    it('2. add commits', () => {
      expect(/.*commit.*/ig.test(fileContents)).toBe(true);
    });
    
    it('3. push to the remote branch with the same name', () => {
      expect(/.*push.*/ig.test(fileContents)).toBe(true);
    });
    
    it('4. create a pull request and continue working', () => {
      expect(/.*pulls+request.*/ig.test(fileContents)).toBe(true);
    });

  5. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒขแƒ”แƒฅแƒกแƒขแƒ˜ แƒคแƒแƒ˜แƒšแƒจแƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ 4 แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜แƒ— ci.md.
    1. Pull in the latest code. Create a branch from `master`. Start working.    
    2. Create commits on your new branch. Build and test locally.  
    Pass? Go to the next step. Fail? Fix errors or tests and try again.  
    3. Push to your remote repository or remote branch.  
    4. Create a pull request. Discuss the changes, add more commits  
    as discussion continues. Make tests pass on the feature branch.  

    แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜

# ะšะปะพะฝะธั€ัƒะนั‚ะต ั€ะตะฟะพะทะธั‚ะพั€ะธะน ะบัƒั€ัะฐ
git clone <repository URL>
cd <repository name>

# ะ’ั‹ะฟะพะปะฝะธั‚ะต npm install ะฒ ะบะฐั‚ะฐะปะพะณะต ั€ะตะฟะพะทะธั‚ะพั€ะธั ะบัƒั€ัะฐ; ะพะฝ ัƒัั‚ะฐะฝะพะฒะธั‚ Jest, ะบะพั‚ะพั€ั‹ะน ะผั‹ ะธัะฟะพะปัŒะทัƒะตะผ ะดะปั ะทะฐะฟัƒัะบะฐ ั‚ะตัั‚ะพะฒ.
npm install

# ะกะพะทะดะฐะนั‚ะต ะฒะตั‚ะบัƒ ะธ ะฝะฐะทะพะฒะธั‚ะต ะตะต feature. ะŸะตั€ะตะบะปัŽั‡ะธั‚ะตััŒ ะฝะฐ ัั‚ัƒ ะฒ ะฒะตั‚ะบัƒ.
git checkout -b feature

# ะžั‚ั€ะตะดะฐะบั‚ะธั€ัƒะนั‚ะต ci.test.js ะบะฐะบ ะพะฟะธัะฐะฝะพ ะฒั‹ัˆะต.
# ะžั‚ั€ะตะดะฐะบั‚ะธั€ัƒะนั‚ะต ci.md ะบะฐะบ ะพะฟะธัะฐะฝะพ ะฒั‹ัˆะต

แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒแƒฎแƒแƒš แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ–แƒ”, แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ“แƒ แƒ’แƒแƒ›แƒแƒกแƒชแƒแƒ“แƒ”แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ— แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒแƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒฉแƒแƒ“แƒ”แƒœแƒแƒ›แƒ“แƒ” แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฉแƒแƒ•แƒฌแƒ”แƒ แƒแƒ— แƒ™แƒแƒ“แƒ˜.

แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒชแƒ”แƒœแƒแƒ แƒ”แƒ‘แƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก

  • แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“:
    • แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒแƒ“ แƒแƒœ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒžแƒแƒกแƒฃแƒฎแƒแƒ“;
    • แƒจแƒ”แƒœแƒแƒฎแƒ•แƒแƒ–แƒ” (แƒ˜แƒœแƒขแƒ”แƒ แƒžแƒ แƒ”แƒขแƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒแƒœ JIT-แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก);
    • แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก (แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒจแƒ”แƒ“แƒ’แƒ”แƒœแƒ);
    • แƒฉแƒแƒ“แƒ”แƒœแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘;
    • แƒกแƒแƒ–แƒ˜แƒแƒ แƒ แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก.

  • build แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒแƒœ build แƒ’แƒแƒ แƒ”แƒ›แƒแƒ–แƒ”:
    • แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ™แƒแƒ“แƒ˜ แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒžแƒ˜แƒ แƒแƒ“ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜/แƒกแƒแƒชแƒแƒ•แƒจแƒ˜.
    • แƒแƒ› แƒ—แƒ”แƒ›แƒแƒจแƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”แƒแƒ‘แƒก.
    • แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒžแƒแƒขแƒ”แƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ (แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• master).
    • แƒ แƒแƒ’แƒแƒ แƒช แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ”แƒขแƒแƒžแƒ˜/แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒ˜

แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ แƒแƒช แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒ™แƒแƒ›แƒžแƒšแƒ”แƒฅแƒขแƒ˜, แƒ›แƒ˜แƒ— แƒฃแƒคแƒ แƒ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒจแƒ”แƒซแƒšแƒ”แƒ‘แƒ— แƒ›แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก. แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒ”แƒขแƒแƒžแƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒแƒ“แƒ”แƒก.

  • แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜แƒก แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ - แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก, CI แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒจแƒ˜
  • แƒœแƒ”แƒšแƒ˜ แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜, แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜แƒก แƒ“แƒ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ - commit-แƒ–แƒ”, CI แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒจแƒ˜
  • แƒœแƒ”แƒšแƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜แƒกแƒ แƒ“แƒ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ - CI แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒจแƒ˜
  • แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ, แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒจแƒ แƒแƒ›แƒแƒขแƒ”แƒ•แƒแƒ“แƒ˜ แƒแƒœ แƒซแƒ•แƒ˜แƒ แƒแƒ“แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ - CI/CD แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒ”แƒ‘แƒจแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒจแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒš แƒ แƒ”แƒŸแƒ˜แƒ›แƒ”แƒ‘แƒจแƒ˜/แƒ”แƒขแƒแƒžแƒ”แƒ‘แƒ–แƒ”/แƒ›แƒ˜แƒšแƒกแƒแƒ“แƒ”แƒœแƒ”แƒ‘แƒจแƒ˜, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ’แƒแƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒ“แƒ˜แƒ“แƒแƒขแƒ˜แƒก แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ˜แƒกแƒแƒก แƒแƒœ แƒฎแƒ”แƒšแƒ˜แƒ— แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒแƒก.

๏ธ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ

แƒ›แƒ” แƒ’แƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒฎแƒ”แƒšแƒ˜แƒ— แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก แƒฏแƒ”แƒ  แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— npm test. แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ›แƒแƒ“แƒ˜แƒ— แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— git hook แƒฉแƒ•แƒ”แƒœแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒกแƒแƒขแƒแƒ แƒ”แƒ‘แƒšแƒแƒ“. แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒ“แƒแƒญแƒ”แƒ แƒ: Git hook แƒแƒ  แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒแƒ“ แƒ“แƒ, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ GitHub-แƒ˜แƒก แƒ™แƒšแƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒ˜ แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ›แƒแƒกแƒแƒšแƒ”แƒ‘แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“. Hook-แƒ˜แƒก แƒ“แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“ แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ install_hook.sh แƒแƒœ แƒ“แƒแƒแƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ— แƒคแƒแƒ˜แƒšแƒ˜ repo/hooks/pre-commit แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ .git/hooks/.
แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒฉแƒแƒ˜แƒ“แƒ”แƒœแƒ— แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒแƒก, แƒœแƒแƒฎแƒแƒ•แƒ—, แƒ แƒแƒ› แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ”แƒœ, แƒแƒ แƒ˜แƒก แƒ—แƒฃ แƒแƒ แƒ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒกแƒแƒ™แƒ•แƒแƒœแƒซแƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜ แƒกแƒ˜แƒแƒจแƒ˜.

  1. แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒฎแƒ”แƒšแƒ˜แƒ— แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒ— npm test แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜. แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ—, แƒ แƒแƒ› แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ.
  2. แƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ— commit hook (pre-commit hook) แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒ— install_hook.sh.
  3. แƒ’แƒแƒœแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒกแƒแƒชแƒแƒ•แƒจแƒ˜.
  4. แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒฉแƒแƒขแƒแƒ แƒ“แƒ”แƒ‘แƒ แƒฉแƒแƒ“แƒ”แƒœแƒแƒ›แƒ“แƒ”.

แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜ แƒแƒกแƒ” แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒแƒ“แƒ”แƒก แƒแƒ› แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’.
แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒ—

แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜

# ะฃัั‚ะฐะฝะพะฒะธั‚ะต pre-commit hook ะฒั‹ะฟะพะปะฝะธะฒ install_hook.sh.  

# ะ—ะฐะบะพะผะผะธั‚ัŒั‚ะต ะธะทะผะตะฝะตะฝะธั ะฒ ะปะพะบะฐะปัŒะฝั‹ะน ั€ะตะฟะพะทะธั‚ะพั€ะธะน. ะ˜ัะฟะพะปัŒะทัƒะนั‚ะต "Add first CI steps" ะฒ ะบะฐั‡ะตัั‚ะฒะต ัะพะพะฑั‰ะตะฝะธั ะฟั€ะธ ะบะพะผะผะธั‚ะต.
git add ci.md ci.test.js
git commit -m "Add first CI steps"

# ะฃะฑะตะดะธั‚ะตััŒ, ั‡ั‚ะพ ั‚ะตัั‚ั‹ ะทะฐะฟัƒัะบะฐัŽั‚ัั ะฟะตั€ะตะด ะบะพะผะผะธั‚ะพะผ.  

แƒ’แƒแƒ›แƒแƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ— แƒ™แƒแƒ“แƒ˜ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒแƒœ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜

แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒ˜ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ“แƒแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ”แƒœ แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก, แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ—แƒแƒ•แƒ˜แƒแƒœแƒ— แƒ™แƒแƒ“แƒก แƒกแƒแƒฏแƒแƒ แƒแƒ“ แƒแƒฌแƒ•แƒ“แƒ˜แƒแƒœ, แƒ แƒแƒ—แƒ แƒ˜แƒก แƒกแƒแƒ‘แƒแƒšแƒแƒแƒ“ แƒ˜แƒงแƒแƒก แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒ–แƒแƒ’แƒแƒ“แƒแƒ”แƒ‘แƒแƒกแƒ—แƒแƒœ. GitHub-แƒ˜แƒ—, แƒ”แƒก แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ›แƒ˜แƒ˜แƒฆแƒฌแƒ”แƒ•แƒ แƒœแƒแƒ›แƒฃแƒจแƒ”แƒ•แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒ˜แƒ— แƒแƒœ แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒžแƒ˜แƒ แƒแƒ“ แƒแƒกแƒšแƒ–แƒ” (แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒšแƒฃแƒ แƒ˜ แƒฉแƒแƒœแƒ’แƒแƒšแƒ˜) แƒแƒœ แƒžแƒ˜แƒ แƒแƒ“ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜.

  • แƒฉแƒแƒœแƒ’แƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ แƒ™แƒšแƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒก แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒกแƒแƒ–แƒ˜แƒแƒ แƒ แƒกแƒแƒชแƒแƒ•แƒก, แƒฅแƒ›แƒœแƒ˜แƒก แƒ›แƒ˜แƒก แƒžแƒ˜แƒ แƒแƒ“ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒแƒกแƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒกแƒ”แƒ•แƒ” แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒ’แƒแƒšแƒ˜. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒก แƒ™แƒšแƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒก แƒแƒ› แƒžแƒ”แƒ แƒกแƒแƒœแƒแƒšแƒฃแƒ  แƒกแƒแƒชแƒแƒ•แƒก แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒแƒ“ แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒ“. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ˜แƒก แƒฃแƒ‘แƒ˜แƒซแƒ’แƒ”แƒ‘แƒก แƒ›แƒแƒ— แƒ—แƒแƒ•แƒ˜แƒก แƒฉแƒแƒœแƒ’แƒแƒšแƒจแƒ˜, แƒกแƒแƒ“แƒแƒช แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒกแƒฎแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒกแƒแƒ”แƒ แƒ—แƒ แƒกแƒแƒชแƒแƒ•แƒจแƒ˜. แƒ”แƒก แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ”แƒ‘แƒจแƒ˜ GitHub-แƒ–แƒ”. แƒ˜แƒก แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒฉแƒ”แƒ›แƒก แƒ›แƒแƒฌแƒ˜แƒœแƒแƒ•แƒ” แƒ™แƒฃแƒ แƒกแƒจแƒ˜ [Team Work and CI with Git] (http://devops.redpill.solutions/).
  • แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒแƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ“แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜แƒก แƒ“แƒแƒ—แƒ•แƒšแƒ master แƒ’แƒแƒ–แƒ˜แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜ "แƒ“แƒแƒชแƒฃแƒšแƒ˜แƒ". แƒแƒ› แƒกแƒชแƒ”แƒœแƒแƒ แƒจแƒ˜, แƒ˜แƒœแƒ“แƒ˜แƒ•แƒ˜แƒ“แƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒ”แƒœ แƒ—แƒแƒ•แƒ˜แƒแƒœแƒ— แƒ™แƒแƒ“แƒก แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ”แƒ‘แƒจแƒ˜, แƒ แƒแƒ—แƒ แƒกแƒฎแƒ•แƒ”แƒ‘แƒ›แƒ แƒจแƒ”แƒฎแƒ”แƒ“แƒแƒœ แƒแƒ› แƒ™แƒแƒ“แƒก, แƒ—แƒฃ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ แƒ˜แƒ’แƒ–แƒ”แƒ, แƒจแƒ”แƒแƒ”แƒ แƒ—แƒแƒœ แƒ˜แƒ’แƒ˜ master แƒกแƒแƒ”แƒ แƒ—แƒ แƒกแƒแƒชแƒแƒ•แƒ˜.

แƒแƒ› แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš แƒ™แƒฃแƒ แƒกแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ”แƒ‘แƒก.

แƒ’แƒแƒ›แƒแƒ•แƒแƒฅแƒ•แƒ”แƒงแƒœแƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒ“แƒ˜.

๏ธ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ

  • แƒ’แƒแƒ›แƒแƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜, แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ—, แƒ แƒแƒ’แƒแƒ แƒช แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜

แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜

git push --set-upstream origin feature

แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ’แƒแƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ

แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— pull แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒ— แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ. แฒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ feature แƒ แƒแƒ’แƒแƒ แƒช โ€žแƒ—แƒแƒ•แƒ˜แƒก แƒขแƒแƒขแƒ˜โ€œ แƒ“แƒ master โ€žแƒ‘แƒแƒ–แƒ˜แƒก แƒขแƒแƒขแƒ˜แƒกโ€œ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒแƒ“.

แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— master แƒ›แƒ˜แƒก แƒฉแƒแƒœแƒ’แƒแƒšแƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ แƒแƒ’แƒแƒ แƒช "แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜", แƒ›แƒ” แƒแƒ  แƒ•แƒฃแƒžแƒแƒกแƒฃแƒฎแƒ”แƒ‘ แƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒก แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ›แƒแƒกแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘.

GitHub แƒšแƒ˜แƒœแƒ’แƒแƒจแƒ˜ โ€žแƒ‘แƒแƒ–แƒ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜โ€œ แƒแƒ แƒ˜แƒก แƒ˜แƒก แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒ“แƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก, แƒฎแƒแƒšแƒ โ€žแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ˜ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜โ€œ แƒแƒ แƒ˜แƒก แƒ˜แƒก แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒš แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒก.

แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜, แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ˜แƒกแƒ™แƒฃแƒกแƒ˜แƒ˜แƒก แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒ˜แƒกแƒแƒก

แƒ’แƒแƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ (PR)

แƒ’แƒแƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ (PR) แƒแƒ แƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒ˜แƒกแƒ แƒ“แƒ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก, แƒแƒกแƒ”แƒ•แƒ” แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒ˜แƒก แƒฉแƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ. Pull แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒ“แƒแƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ˜แƒœแƒ“แƒ˜แƒ•แƒ˜แƒ“แƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ—แƒšแƒ˜แƒแƒœ แƒ™แƒแƒ“แƒจแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒ’แƒ–แƒ˜แƒ—. แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ˜ แƒ™แƒšแƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ  แƒกแƒแƒชแƒแƒ•แƒก แƒ“แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ™แƒแƒ“แƒ–แƒ” แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“. แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒก แƒ“แƒ”แƒ‘แƒก แƒ™แƒแƒ“แƒก แƒ—แƒแƒ•แƒ˜แƒก แƒžแƒ˜แƒ แƒแƒ“ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒ“แƒ แƒกแƒ—แƒฎแƒแƒ•แƒก แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ  แƒกแƒแƒชแƒแƒ•แƒ–แƒ” แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒš แƒžแƒ˜แƒ แƒ”แƒ‘แƒก แƒแƒ˜แƒฆแƒแƒœ (แƒ’แƒแƒ˜แƒงแƒ•แƒแƒœแƒแƒก) แƒ›แƒ˜แƒกแƒ˜ แƒ™แƒแƒ“แƒ˜ แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒจแƒ˜, แƒกแƒแƒ“แƒแƒช แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ”แƒœ แƒ“แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒœแƒ˜ (แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ) แƒ›แƒ˜แƒกแƒ˜. แƒ”แƒก แƒ™แƒแƒœแƒชแƒ”แƒคแƒชแƒ˜แƒ แƒแƒกแƒ”แƒ•แƒ” แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜แƒ แƒกแƒฎแƒ•แƒ แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒแƒ“ แƒแƒ  แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— GitHub-แƒ˜แƒก แƒแƒœ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ”แƒ‘แƒ˜แƒก pull แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ. แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒฃแƒœแƒ“แƒ”แƒ‘แƒ›แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒœ แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜, แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒžแƒ˜แƒ แƒ˜แƒกแƒžแƒ˜แƒ  แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ, แƒฎแƒ›แƒแƒ•แƒแƒœแƒ˜ แƒ–แƒแƒ แƒ”แƒ‘แƒ˜ แƒแƒœ แƒ”แƒš. แƒแƒฅ แƒแƒ แƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜:

  • แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒ˜แƒกแƒ™แƒฃแƒกแƒ˜แƒ”แƒ‘แƒ˜ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒš แƒ™แƒแƒ“แƒ”แƒฅแƒกแƒ˜แƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ—;
  • แƒ แƒแƒ’แƒแƒ แƒช แƒแƒ•แƒขแƒแƒขแƒ”แƒกแƒขแƒ”แƒ แƒ˜แƒก แƒ“แƒ แƒ™แƒแƒšแƒ”แƒ’แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒฃแƒ™แƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒกแƒแƒœแƒแƒฎแƒแƒ•แƒแƒ“;
  • แƒ™แƒแƒ“แƒ”แƒฅแƒกแƒ˜แƒก แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒ˜แƒก แƒคแƒแƒ แƒ›แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ;
  • แƒ แƒแƒ—แƒ แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ’แƒแƒ˜แƒ’แƒแƒ— แƒแƒ›แƒ แƒ—แƒฃ แƒ˜แƒ› แƒ™แƒแƒ“แƒ˜แƒก แƒฃแƒ™แƒแƒœ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒแƒกแƒแƒ–แƒ แƒ”แƒ‘แƒ”แƒ‘แƒ˜.

แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฅแƒ›แƒœแƒ˜แƒ— แƒ’แƒแƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ แƒแƒ˜แƒ›แƒ”แƒก แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒ แƒแƒœ แƒ’แƒแƒ›แƒแƒฎแƒ›แƒแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒก แƒ”แƒ แƒ—แƒ–แƒ” แƒ›แƒ”แƒขแƒ˜ แƒ’แƒ–แƒ˜แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— pull-แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ™แƒแƒ“แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒแƒ›แƒ“แƒ”, แƒ แƒแƒ—แƒ แƒ’แƒแƒฃแƒ–แƒ˜แƒแƒ แƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ˜แƒ“แƒ”แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ’แƒ”แƒ’แƒ›แƒ”แƒ‘แƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ™แƒแƒšแƒแƒ‘แƒแƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒ—แƒแƒœ. แƒ—แƒฃ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒฃแƒคแƒ แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ, แƒ›แƒแƒ–แƒ˜แƒ“แƒ•แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ˜แƒฎแƒกแƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ แƒแƒฆแƒแƒช แƒฃแƒ™แƒ•แƒ” แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒฉแƒแƒ“แƒ”แƒœแƒ˜แƒšแƒ˜แƒ แƒ“แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒแƒก. แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒกแƒชแƒ”แƒœแƒแƒ แƒจแƒ˜, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ— PR-แƒ˜แƒก แƒ’แƒแƒฎแƒกแƒœแƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฎแƒแƒ แƒ˜แƒกแƒฎแƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜แƒก แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ: แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“ แƒแƒœ แƒ™แƒแƒ“แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ. แƒ แƒแƒช แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ˜แƒขแƒแƒ—, แƒแƒ  แƒ“แƒแƒ’แƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ”แƒ— @แƒ›แƒแƒฎแƒกแƒ”แƒœแƒ˜แƒ— แƒ˜แƒก แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜, แƒ•แƒ˜แƒกแƒ˜ แƒ—แƒแƒœแƒฎแƒ›แƒแƒ‘แƒแƒช แƒ’แƒกแƒฃแƒ แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒ–แƒ˜แƒ“แƒ•แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒจแƒ˜.

แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒžแƒ˜แƒแƒ แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒก.

  • แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ— แƒ แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒแƒก แƒกแƒ—แƒแƒ•แƒแƒ–แƒแƒ‘แƒ— แƒ“แƒ แƒกแƒแƒ“.
  • แƒ“แƒแƒฌแƒ”แƒ แƒ”แƒ— แƒแƒฆแƒฌแƒ”แƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒแƒฎแƒกแƒœแƒ˜แƒšแƒ˜แƒ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ–แƒแƒœแƒ˜. แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒ˜แƒœแƒ“แƒแƒ“แƒ”แƒก:
    • แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜, แƒ แƒแƒช แƒแƒ  แƒแƒ แƒ˜แƒก แƒแƒจแƒ™แƒแƒ แƒ แƒ™แƒแƒ“แƒ˜แƒ“แƒแƒœ, แƒแƒœ แƒ แƒแƒ˜แƒ›แƒ” แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒแƒ“, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ #แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒฉแƒแƒ“แƒ”แƒœแƒ˜แƒšแƒ˜ แƒœแƒแƒ›แƒ แƒ”แƒ‘แƒ˜;
    • @แƒ›แƒแƒœแƒ˜แƒจแƒœแƒ”แƒ— แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜, แƒ•แƒ˜แƒกแƒ—แƒแƒœแƒแƒช แƒ’แƒกแƒฃแƒ แƒ— แƒ“แƒแƒ˜แƒฌแƒงแƒแƒ— แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ, แƒแƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— @แƒแƒฆแƒœแƒ˜แƒจแƒœแƒแƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒจแƒ˜ แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ—;
    • แƒกแƒ—แƒฎแƒแƒ•แƒ”แƒ— แƒ™แƒแƒšแƒ”แƒ’แƒ”แƒ‘แƒก แƒ“แƒแƒ”แƒฎแƒ›แƒแƒ แƒแƒœ แƒ แƒแƒ˜แƒ›แƒ”แƒจแƒ˜ แƒแƒœ แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒแƒœ แƒ แƒแƒ˜แƒ›แƒ” แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜.

แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒ˜ PR-แƒก แƒ’แƒแƒฎแƒกแƒœแƒ˜แƒ—, แƒแƒกแƒ”แƒ— แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ”แƒ‘แƒจแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ. แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ”แƒก แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒ•แƒ”แƒœ แƒฉแƒแƒ•แƒแƒขแƒแƒ แƒ”แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒ”แƒแƒšแƒฃแƒ  แƒžแƒ แƒแƒ”แƒฅแƒขแƒจแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ”แƒ‘แƒ˜.

แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ“แƒแƒ”แƒšแƒแƒ“แƒแƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜ PR แƒ“แƒ˜แƒกแƒ™แƒฃแƒกแƒ˜แƒ˜แƒก แƒ‘แƒแƒšแƒแƒจแƒ˜ GitHub แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒจแƒ˜. แƒ’แƒแƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’.

๏ธ แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ CI แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ—แƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘

แƒแƒ› แƒ™แƒฃแƒ แƒกแƒจแƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒ˜แƒ แƒแƒ แƒ˜แƒก แƒ—แƒ•แƒ˜แƒ—แƒœแƒ”แƒ‘แƒฃแƒ แƒ˜ แƒ“แƒ แƒกแƒฃแƒ‘แƒ˜แƒ”แƒฅแƒขแƒฃแƒ แƒ˜, แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ.

๏ธ แƒแƒ›แƒแƒชแƒแƒœแƒ: แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— pull แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒแƒ› แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

  1. แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ–แƒ” แƒ’แƒแƒ“แƒแƒ แƒ—แƒ•แƒ master.
  2. แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒแƒ“ bugfix.
  3. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ‘แƒแƒšแƒแƒก ci.md.
    > **GitHub flow** is sometimes used as a nickname to refer to a flavor of trunk-based development  
    when code is deployed straight from feature branches. This list is just an interpretation  
    that I use in my [DevOps courses](http://redpill.solutions).  
    The official tutorial is [here](https://guides.github.com/introduction/flow/).
  4. แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒ”แƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜.
  5. แƒ’แƒแƒ›แƒแƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ— แƒ—แƒ”แƒ›แƒ bugfix แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒกแƒแƒชแƒแƒ•แƒจแƒ˜.
  6. แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ›แƒแƒ–แƒ˜แƒ“แƒ•แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒกแƒแƒฎแƒ”แƒšแƒแƒ“ แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ แƒ—แƒแƒ•แƒ˜แƒก แƒขแƒแƒขแƒ˜แƒ— bugfix แƒ“แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜master.

แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— master แƒ›แƒ˜แƒก แƒฉแƒแƒœแƒ’แƒแƒšแƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ แƒแƒ’แƒแƒ แƒช "แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜", แƒ›แƒ” แƒแƒ  แƒ•แƒฃแƒžแƒแƒกแƒฃแƒฎแƒ”แƒ‘ แƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒก แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ›แƒแƒกแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘.

แƒแƒกแƒ” แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒแƒ“แƒ”แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜.
แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒ—

แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜

# ะŸะตั€ะตะบะปัŽั‡ะธั‚ะตััŒ ะฝะฐ ะฒะตั‚ะบัƒ master. ะกะพะทะดะฐะนั‚ะต ะฒะตั‚ะบัƒ bugfix.
git checkout master

# ะกะพะทะดะฐะนั‚ะต ะฒะตั‚ะบัƒ bugfix-remark.
git checkout -b bugfix

# ะ”ะพะฑะฐะฒัŒั‚ะต ั‚ะตะบัั‚ ะฟั€ะธะผะตั‡ะฐะฝะธั ะฒะฝะธะทัƒ ci.md.

# ะ—ะฐะบะพะผะผะธั‚ัŒั‚ะต ะธะทะผะตะฝะตะฝะธั
git add ci.md
git commit -m "Add a remark about the list being opinionated"

# ะžะฟัƒะฑะปะธะบัƒะนั‚ะต ะฒะตั‚ะบัƒ bugfix ะฒ ัƒะดะฐะปั‘ะฝะฝั‹ะน ั€ะตะฟะพะทะธั‚ะพั€ะธะน.
git push --set-upstream origin bugfix

# ะกะพะทะดะฐะนั‚ะต pull request ะฟั€ะธ ะฟะพะผะพั‰ะธ ะธะฝั‚ะตั€ั„ะตะนัะฐ GitHub ะบะฐะบ ะพะฟะธัะฐะฝะพ ะฒั‹ัˆะต

แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ“แƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ”แƒ‘แƒ "แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ"

๏ธ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ

  1. แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ’แƒแƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ.
  2. แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ— "แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ".
  3. แƒ“แƒแƒแƒญแƒ˜แƒ แƒ”แƒ— "แƒ“แƒแƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒ”แƒ— แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ".
  4. แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ— "แƒฌแƒแƒจแƒšแƒ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜แƒก", แƒฉแƒ•แƒ”แƒœ แƒแƒฆแƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ.

แƒ”แƒก แƒแƒ แƒ˜แƒก แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ.
แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒ—

๏ธ แƒ’แƒแƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ— แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ“แƒ แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜

แƒ›แƒแƒ–แƒ˜แƒ“แƒ•แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒ–แƒ” แƒ—แƒแƒœแƒแƒ›แƒจแƒ แƒแƒ›แƒšแƒแƒ‘แƒ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก. แƒ”แƒก แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒ˜แƒก แƒแƒœ แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœแƒก แƒ™แƒฃแƒ แƒกแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ— แƒแƒ›แƒ˜แƒก แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒ แƒ”แƒ‘แƒแƒก แƒแƒฎแƒแƒšแƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒฉแƒ•แƒ”แƒœแƒก CI แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒแƒจแƒ˜.

แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒ’แƒแƒจแƒฃแƒฅแƒ”แƒ‘แƒแƒก. แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒ“แƒแƒคแƒแƒ แƒ•แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ’แƒ•แƒฎแƒ•แƒ“แƒ”แƒ‘แƒ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ”แƒฌแƒแƒ“แƒ”แƒ‘แƒ "แƒฌแƒ•แƒšแƒ˜แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ”แƒ‘แƒ˜". แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒ— แƒ“แƒ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— แƒขแƒ”แƒกแƒขแƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒฎแƒแƒ–แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ แƒกแƒ˜แƒแƒจแƒ˜.

แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒฏแƒ”แƒ  แƒกแƒชแƒแƒ“แƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ. แƒ—แƒฃ แƒกแƒฌแƒแƒ แƒแƒ“ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— pre-commit แƒ“แƒแƒแƒ›แƒแƒ’แƒ แƒ”แƒ— แƒแƒ“แƒ แƒ”, แƒแƒฎแƒšแƒแƒ“ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ˜ แƒฉแƒแƒขแƒแƒ แƒ“แƒ”แƒ‘แƒ, แƒฉแƒแƒ•แƒแƒ แƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒแƒ แƒแƒคแƒ”แƒ แƒ˜ แƒฉแƒแƒ˜แƒ“แƒ”แƒœแƒก. แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ—, แƒ แƒแƒ› แƒแƒกแƒ” แƒ•แƒ˜แƒชแƒ˜แƒ—, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก แƒ แƒแƒฆแƒแƒชแƒแƒก. แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ, แƒ แƒแƒ› แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ”แƒ— แƒ™แƒแƒ“แƒ˜แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒแƒ›แƒ“แƒ”, แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ‘แƒแƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒ™แƒแƒ“แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ แƒ˜แƒกแƒ”, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒกแƒแƒšแƒแƒ“แƒœแƒ”แƒšแƒ˜ แƒ˜แƒงแƒ, แƒแƒœ แƒ แƒแƒ› แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒแƒ  แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ“แƒœแƒ”แƒœ แƒแƒ แƒแƒคแƒ”แƒ แƒก. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ แƒแƒ› แƒแƒ  แƒ’แƒ•แƒ”แƒฌแƒ”แƒ แƒ แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒ“แƒแƒ’แƒ•แƒ”แƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ˜แƒœแƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒแƒ›แƒแƒก แƒแƒ แƒแƒคแƒ”แƒ แƒ˜ แƒ’แƒแƒ’แƒ•แƒแƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒ“แƒ.

แƒขแƒ”แƒกแƒขแƒ–แƒ” แƒแƒ แƒ˜แƒ”แƒœแƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ (TDD)

TDD แƒ’แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— แƒ“แƒแƒฌแƒ”แƒ แƒแƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒ˜แƒœ. แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ TDD-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ.

  1. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ˜.
  2. แƒฉแƒแƒแƒขแƒแƒ แƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒขแƒ”แƒกแƒขแƒ˜ แƒ“แƒ แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒแƒฎแƒแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ˜ แƒ•แƒ”แƒ  แƒฉแƒแƒ˜แƒ•แƒšแƒ˜แƒก.
  3. แƒ“แƒแƒฌแƒ”แƒ แƒ” แƒ™แƒแƒ“แƒ˜.
  4. แƒ’แƒแƒ˜แƒแƒ แƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜, แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒ แƒขแƒ”แƒกแƒขแƒ˜ แƒ’แƒแƒ˜แƒ•แƒšแƒ˜แƒก.
  5. แƒ’แƒแƒ“แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒ“แƒ˜.
  6. แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ.

แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ แƒแƒ› แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ, แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒฌแƒ˜แƒ—แƒšแƒแƒ“, แƒฎแƒแƒšแƒ แƒฉแƒแƒ‘แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒ›แƒฌแƒ•แƒแƒœแƒ”แƒ“, แƒชแƒ˜แƒ™แƒšแƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ˜แƒ—แƒ”แƒš-แƒ›แƒฌแƒ•แƒแƒœแƒ”-แƒ แƒ”แƒคแƒแƒฅแƒขแƒแƒ แƒ˜.

๏ธ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ

แƒฏแƒ”แƒ  แƒกแƒชแƒแƒ“แƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒ“แƒ”แƒœแƒ แƒ“แƒ แƒ›แƒแƒ—แƒ˜ แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒจแƒ•แƒ”แƒ‘แƒ, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ“แƒ แƒฉแƒแƒฌแƒ”แƒ แƒ”แƒ— แƒ—แƒแƒ•แƒแƒ“ CI แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜. แƒœแƒแƒฎแƒแƒ•แƒ—, แƒ แƒแƒ› แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ“แƒ˜แƒก (โ€žแƒ›แƒฌแƒ•แƒแƒœแƒ”โ€œ).
แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ›แƒแƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ“แƒ˜ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒ“แƒ แƒฃแƒงแƒฃแƒ แƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก GitHub แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒจแƒ˜, แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒ˜แƒกแƒ แƒ“แƒ PR แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ˜แƒก แƒ‘แƒแƒšแƒแƒจแƒ˜.

  1. แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ–แƒ” แƒ’แƒแƒ“แƒแƒ แƒ—แƒ•แƒ feature.
  2. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ”แƒก แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ ci.test.js แƒ‘แƒแƒšแƒ แƒ–แƒแƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ it (...);.

    it('5. Merge/rebase commits from master. Make tests pass on the merge result.', () => {
      expect(/.*merge.*commits.*testss+pass.*/ig.test(fileContents)).toBe(true);
    });
    
    it('6. Deploy from the feature branch to production.', () => {
      expect(/.*Deploy.*tos+production.*/ig.test(fileContents)).toBe(true);
    });
    
    it('7. If everything is good in production for some period of time, merge changes to master.', () => {
      expect(/.*merge.*tos+master.*/ig.test(fileContents)).toBe(true);
    });

  3. แƒกแƒชแƒแƒ“แƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒขแƒแƒ แƒ”แƒ‘แƒ. แƒ—แƒฃ pre-commit Hook แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒฉแƒแƒ“แƒ”แƒœแƒ˜แƒก แƒ›แƒชแƒ“แƒ”แƒšแƒแƒ‘แƒ แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ.
  4. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ”แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜ ci.md.
    5. Merge/rebase commits from master. Make tests pass on the merge result.  
    6. Deploy from the feature branch with a sneaky bug to production.
    7. If everything is good in production for some period of time, merge changes to master. 
  5. แƒจแƒ”แƒ˜แƒขแƒแƒœแƒ”แƒ— แƒ“แƒ แƒ’แƒแƒœแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“.
  6. แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒ”แƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜ feature.

แƒแƒฎแƒšแƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒฅแƒแƒœแƒ“แƒ”แƒ— แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒ แƒแƒ›
แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒ—

แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜


# ะŸะตั€ะตะบะปัŽั‡ะธั‚ะตะปัŒะฝะฐ ะฒะตั‚ะบัƒ feature
git checkout feature

# ะ”ะพะฑะฐะฒะธั‚ัŒ ั‚ะตัั‚ั‹ ะฒ ci.test.js ะบะฐะบ ะพะฟะธัะฐะฝะพ ะฒั‹ัˆะต

# ะ”ะพะฑะฐะฒัŒั‚ะต ะฒ ะธะฝะดะตะบั ci.test.js ั‡ั‚ะพะฑั‹ ะฟะพะทะถะต ะทะฐะบะพะผะผะธั‚ะธั‚ัŒ
git add ci.test.js

# ะŸะพะฟั‹ั‚ะฐะนั‚ะตััŒ ะทะฐะบะพะผะผะธั‚ะธั‚ัŒ ั‚ะตัั‚ั‹. ะ•ัะปะธ pre-commit hook ัƒัั‚ะฐะฝะพะฒะปะตะฝั‹, ะบะพะผะผะธั‚ ะฝะต ะฟั€ะพะธะทะพะนะดั‘ั‚.
git commit

# ะขะตะฟะตั€ัŒ ะดะพะฑะฐะฒัŒั‚ะต ั‚ะตะบัั‚ ะฒ ci.md ะบะฐะบ ะพะฟะธัะฐะฝะพ ะฒั‹ัˆะต

# ะ’ะฝะตัะธั‚ะต ะธะทะผะตะฝะตะฝะธั ะธ ะทะฐะบะพะผะผะธั‚ัŒั‚ะต ะธั…
git add ci.md
git commit -m "Add the remaining CI steps"

# ะžะฟัƒะฑะปะธะบัƒะนั‚ะต ะธะทะผะตะฝะตะฝะธั ะฒ ะฒะตั‚ะบัƒ feature
git push

แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ˜แƒก แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ

แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒ— แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒแƒ–แƒ” แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ.

แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒแƒ แƒแƒคแƒ”แƒ แƒ˜ แƒ“แƒแƒ’แƒ•แƒ˜แƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒ แƒ“แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ˜แƒแƒ แƒ, แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜แƒก แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ แƒ›แƒแƒ˜แƒœแƒช แƒแƒ  แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ feature ะธ master. แƒ”แƒก แƒ˜แƒ›แƒ˜แƒขแƒแƒ›, แƒ แƒแƒ› แƒกแƒฎแƒ•แƒ แƒ—แƒ”แƒ›แƒ bugfix แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ“แƒ master แƒกแƒแƒœแƒแƒ› แƒแƒ› แƒžแƒ˜แƒแƒ แƒ–แƒ” แƒ•แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ˜แƒ—.
แƒ”แƒก แƒฅแƒ›แƒœแƒ˜แƒก แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒแƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜ master แƒแƒฅแƒ•แƒก แƒฃแƒคแƒ แƒ แƒแƒฎแƒแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒ“แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒก แƒ•แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒ“แƒ˜แƒ— feature. แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ HEAD-แƒ˜แƒก แƒ’แƒแƒ“แƒแƒฎแƒ•แƒ”แƒ•แƒ master แƒซแƒแƒคแƒ˜แƒก แƒ‘แƒแƒšแƒแƒ›แƒ“แƒ” feature. แƒแƒ› แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒแƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒแƒœ แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ แƒแƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ feature แƒ แƒ”แƒ‘แƒแƒ–แƒ˜แƒ แƒ”แƒ‘แƒ master. GitHub-แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒแƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ, แƒ—แƒฃ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ”แƒ‘แƒ˜. แƒกแƒแƒ›แƒฌแƒฃแƒฎแƒแƒ แƒแƒ“, แƒฉแƒ•แƒ”แƒœแƒก แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒแƒจแƒ˜, แƒแƒ แƒ˜แƒ•แƒ” แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒก แƒแƒฅแƒ•แƒก แƒ™แƒแƒœแƒ™แƒฃแƒ แƒ”แƒœแƒขแƒฃแƒšแƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒคแƒแƒ˜แƒšแƒจแƒ˜ ci.md. แƒ”แƒก แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ˜ แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ›แƒแƒ•แƒแƒ’แƒ•แƒแƒ แƒแƒ— แƒ˜แƒก แƒฎแƒ”แƒšแƒ˜แƒ—.

แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ แƒแƒœ แƒฎแƒ”แƒšแƒแƒฎแƒแƒšแƒ˜ แƒ‘แƒแƒ–แƒ

แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ

  • แƒฅแƒ›แƒœแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒแƒก.
    • แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒ•แƒ“แƒแƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒก แƒ›แƒแƒ—แƒ˜ แƒแƒ แƒ˜แƒ’แƒ˜แƒœแƒแƒšแƒฃแƒ แƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒจแƒขแƒแƒ›แƒžแƒ”แƒ‘แƒ˜แƒ—แƒ แƒ“แƒ แƒแƒ•แƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒ—.
    • แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก SHA-แƒก แƒ“แƒ แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒก แƒ›แƒแƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒแƒจแƒ˜.
  • แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ˜แƒก แƒ”แƒ แƒ—แƒฏแƒ”แƒ แƒแƒ“ แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒแƒก.
  • แƒกแƒ˜แƒฃแƒŸแƒ”แƒขแƒก แƒฎแƒ“แƒ˜แƒก แƒแƒ แƒแƒฌแƒ แƒคแƒ˜แƒ•แƒ˜.
    • แƒกแƒ˜แƒฃแƒŸแƒ”แƒขแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒฌแƒแƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ˜ แƒ˜แƒงแƒแƒก แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ (IDE แƒ™แƒแƒ‘แƒ”แƒšแƒก แƒ›แƒแƒ’แƒแƒ’แƒแƒœแƒ”แƒ‘แƒ—).
    • แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ  แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒแƒก, แƒ›แƒแƒ’. git bisect แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒแƒ“ แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ - แƒ˜แƒก แƒ˜แƒžแƒแƒ•แƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒแƒก.

แƒ แƒ”แƒ‘แƒ”แƒ–แƒ˜

  • แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜แƒ“แƒแƒœ แƒ”แƒ แƒ—แƒ˜แƒ›แƒ”แƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒงแƒแƒšแƒ”แƒ‘แƒ˜แƒ—.
    • แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒฎแƒแƒšแƒ˜ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒแƒฎแƒแƒšแƒ˜ SHA-แƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒช แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก GitHub-แƒจแƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒš แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒก แƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ แƒ—แƒแƒ•แƒ“แƒแƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒก แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒก.
    • แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ“แƒ”แƒก แƒ“แƒ แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒแƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒจแƒ˜, แƒแƒœ แƒ—แƒฃแƒœแƒ“แƒแƒช แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ“แƒ”แƒก แƒ”แƒ แƒ—แƒจแƒ˜.
  • แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒ’แƒแƒฎแƒ“แƒ”แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒ.
  • แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒแƒ— แƒฎแƒแƒ–แƒแƒ•แƒแƒœแƒ˜ แƒแƒ›แƒ‘แƒแƒ•แƒ˜.
    • แƒกแƒ˜แƒฃแƒŸแƒ”แƒขแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒฃแƒคแƒ แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜ แƒฌแƒแƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ˜, แƒ—แƒฃ แƒ˜แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ’แƒ แƒซแƒ”แƒšแƒ˜ แƒฃแƒกแƒแƒคแƒฃแƒซแƒ•แƒšแƒ แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ˜แƒก แƒ’แƒแƒ›แƒ.
    • แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒ แƒ“แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒ แƒชแƒแƒขแƒ แƒฃแƒคแƒ แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜แƒ: แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒก แƒฎแƒ“แƒ˜แƒก git bisect, แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ แƒฃแƒคแƒ แƒ แƒœแƒแƒ—แƒ”แƒšแƒ˜ แƒ“แƒ แƒžแƒ แƒแƒ’แƒœแƒแƒ–แƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒ˜ แƒ’แƒแƒฎแƒแƒ“แƒแƒก.
  • แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒแƒก แƒ›แƒ˜แƒ’แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒแƒจแƒ˜แƒ— --force แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ’แƒแƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“.

แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ’แƒฃแƒœแƒ“แƒ”แƒ‘แƒ˜ แƒ—แƒแƒœแƒฎแƒ›แƒ“แƒ”แƒ‘แƒ˜แƒแƒœ, แƒ แƒแƒ› แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒœ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒกแƒขแƒ แƒแƒขแƒ”แƒ’แƒ˜แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ›แƒแƒ— แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ. แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก "แƒกแƒฃแƒคแƒ—แƒ" แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ แƒแƒœ "แƒกแƒฃแƒคแƒ—แƒ" แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒ—แƒแƒ•แƒ–แƒ”, แƒแƒœ แƒ แƒแƒฆแƒแƒช แƒจแƒฃแƒแƒšแƒ”แƒ“แƒจแƒ˜, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ–แƒ”แƒ›แƒแƒ“แƒแƒœ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ แƒแƒฅแƒขแƒ˜แƒฃแƒšแƒแƒ“ (git rebase -i) แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒแƒฏแƒแƒ แƒ แƒกแƒแƒชแƒแƒ•แƒจแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ“แƒ”แƒ‘แƒ "แƒกแƒแƒฏแƒแƒ แƒ" แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒแƒก.

๏ธ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ

  1. แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒ™แƒแƒ“แƒ˜ แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜แƒ master แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜แƒ“แƒแƒœ.
  2. แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ–แƒ” แƒ’แƒแƒ“แƒแƒ แƒ—แƒ•แƒ feature.
  3. แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ—แƒแƒœ แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ master. แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ˜ แƒ™แƒแƒœแƒ™แƒฃแƒ แƒ”แƒœแƒขแƒฃแƒšแƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ ci.md.
  4. แƒ›แƒแƒแƒ’แƒ•แƒแƒ แƒ”แƒ— แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ˜ แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœแƒ˜ CI แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ แƒ“แƒ แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ แƒขแƒ”แƒฅแƒกแƒขแƒจแƒ˜ แƒ“แƒแƒ แƒฉแƒ”แƒก.
  5. แƒ’แƒแƒ›แƒแƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ— แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜ feature.
  6. แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ— แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜ GitHub UI-แƒจแƒ˜ แƒ“แƒ แƒ“แƒแƒ”แƒšแƒแƒ“แƒ”แƒ— แƒกแƒแƒœแƒแƒ› แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ“แƒ”แƒ‘แƒ.

แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜

# ะฃะฑะตะดะธั‚ะตััŒ, ั‡ั‚ะพ ะบะพะด ะฒ ะปะพะบะฐะปัŒะฝะพะต ะฒะตั‚ะบะต `master` ะพะฑะฝะพะฒะปั‘ะฝ ะธะท ัƒะดะฐะปั‘ะฝะฝะพะณะพ ั€ะตะฟะพะทะธั‚ะพั€ะธั.
git checkout master
git pull

# ะŸะตั€ะตะบะปัŽั‡ะธั‚ะตััŒ ะฝะฐ ะฒะตั‚ะบัƒ feature
git checkout feature

# ะ˜ะฝะธั†ะธะธั€ัƒะนั‚ะต ัะปะธัะฝะธะต ั ะฒะตั‚ะบะพะน master 
git merge master

# A merge conflict related to concurrent changes to ci.md will be reported
# => Auto-merging ci.md
#    CONFLICT (content): Merge conflict in ci.md
#    Automatic merge failed; fix conflicts and then commit the result.

# ะ ะฐะทั€ะตัˆะธั‚ะต ะบะพะฝั„ะปะธะบั‚ ั‚ะฐะบ, ั‡ั‚ะพะฑั‹ ะธ ะฝะฐัˆ ัะฟะธัะพะบ ัˆะฐะณะพะฒ CI, ะธ ะทะฐะผะตั‡ะฐะฝะธะต ะพ ะฝะตะผ ะพัั‚ะฐะปะธััŒ ะฒ ั‚ะตะบัั‚ะต.
# ะพั‚ั€ะตะดะฐะบั‚ะธั€ัƒะนั‚ะต ci.md ั‡ั‚ะพะฑ ะพะฝ ะฝะต ัะพะดะตั€ะถะฐะป ะผะฐั€ะบะตั€ะพะฒ ะบะพะฝั„ะปะธะบั‚ะฐ ัะปะธัะฝะธั
git add ci.md
git merge --continue
# ะฟั€ะธ ะบะพะผะผะธั‚ะต ะผะพะถะตั‚ะต ะพัั‚ะฐะฒะธั‚ัŒ ัะพะพะฑั‰ะตะฝะธะต ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ

# ะžะฟัƒะฑะปะธะบัƒะนั‚ะต ะบะพะผะผะธั‚ ัะปะธัะฝะธั ะฒ ัƒะดะฐะปะตะฝะฝัƒัŽ ะฒะตั‚ะบัƒ feature.
git push

# ะŸั€ะพะฒะตั€ัŒั‚ะต ัั‚ะฐั‚ัƒั ะทะฐะฟั€ะพัะฐ ะฝะฐ ะธะทะผะตะฝะตะฝะธั ะฒ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะพะผ ะธะฝั‚ะตั€ั„ะตะนัะต GitHub, ะดะพะถะดะธั‚ะตััŒ ะฟะพะบะฐ ัะปะธัะฝะธะต ะฝะต ะฑัƒะดะตั‚ ั€ะฐะทั€ะตัˆะตะฝะพ.

แฒงแƒแƒฉแƒแƒฆ!

แƒ—แƒฅแƒ•แƒ”แƒœ แƒ“แƒแƒแƒกแƒ แƒฃแƒšแƒ”แƒ— แƒกแƒ˜แƒ แƒ“แƒ แƒแƒฎแƒšแƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒแƒ— แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ master.

๏ธ แƒแƒ›แƒแƒชแƒแƒœแƒ: แƒ“แƒแƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒ”แƒ— pull-แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ โ€žแƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒโ€œ

  1. แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ˜แƒ— แƒ’แƒแƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ.
  2. แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ— "แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ".
  3. แƒ“แƒแƒแƒญแƒ˜แƒ แƒ”แƒ— "แƒ“แƒแƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒ”แƒ— แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ".
  4. แƒ“แƒแƒแƒญแƒ˜แƒ แƒ”แƒ— "แƒฌแƒแƒจแƒšแƒ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒก", แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒก แƒแƒฆแƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ.

แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜ แƒแƒ› แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜
แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒ—

แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ

แƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒ˜แƒ, แƒ แƒแƒ› โ€žแƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ˜แƒก แƒกแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒแƒกแƒแƒ“แƒ”แƒก แƒ›แƒแƒ—แƒ˜ แƒแƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ˜แƒก แƒกแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“โ€œ. แƒ›แƒ˜แƒฃแƒฎแƒ”แƒ“แƒแƒ•แƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒฅแƒแƒœแƒ“แƒ แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒแƒ— แƒแƒ  แƒ’แƒ•แƒ˜แƒฉแƒ•แƒ”แƒœแƒ”แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜, แƒ›แƒ–แƒแƒ™แƒ•แƒ แƒฃแƒšแƒ˜ แƒฎแƒแƒ แƒ•แƒ”แƒ–แƒ˜ แƒจแƒ”แƒ›แƒแƒ•แƒ˜แƒ“แƒ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒจแƒ˜.

แƒแƒกแƒ”แƒ— แƒกแƒชแƒ”แƒœแƒแƒ แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ•แƒ˜แƒ–แƒ แƒฃแƒœแƒแƒ—:

  • แƒ แƒ แƒแƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒจแƒ˜;
  • แƒ™แƒแƒ“แƒ˜ แƒ—แƒ”แƒ›แƒแƒจแƒ˜ master แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒ—, แƒกแƒแƒ˜แƒ“แƒแƒœแƒแƒช แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒแƒ— แƒแƒฎแƒแƒšแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ.

แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒแƒ‘แƒ แƒฃแƒœแƒ แƒ—แƒฃ แƒ’แƒแƒ•แƒแƒกแƒฌแƒแƒ แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒจแƒ˜?

แƒฃแƒ™แƒแƒœ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ แƒแƒ แƒ˜แƒก แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜, แƒแƒ“แƒ แƒ”แƒฃแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒจแƒ˜ แƒ“แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒชแƒ•แƒ”แƒšแƒ˜ แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ. "Fixing Forward" แƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ— แƒคแƒ˜แƒฅแƒกแƒแƒชแƒ˜แƒ master แƒ“แƒ แƒ แƒแƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒšแƒ” แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒ”แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ. แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ แƒแƒ› API-แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒกแƒฅแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ™แƒแƒ“แƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒจแƒ˜, แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ›แƒ˜แƒฌแƒแƒ“แƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ™แƒแƒ แƒ’แƒ˜ แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒ“แƒแƒคแƒแƒ แƒ•แƒ˜แƒ—, แƒฃแƒ™แƒแƒœ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒ“แƒ แƒกแƒแƒ แƒ˜แƒกแƒ™แƒแƒ, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ›แƒ˜แƒกแƒ˜ แƒ“แƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒจแƒ˜.

แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒฃแƒ™แƒแƒœ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒแƒ แƒแƒœแƒแƒ˜แƒ  แƒ แƒ˜แƒกแƒ™แƒก แƒแƒ  แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก, แƒแƒ› แƒ’แƒ–แƒแƒก แƒ’แƒแƒ•แƒแƒšแƒ—, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ”แƒก แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก

  • แƒ“แƒแƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ”แƒ— แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒžแƒ แƒแƒ“แƒฃแƒฅแƒขแƒ–แƒ” แƒ แƒแƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒšแƒ”;
  • แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ master แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒกแƒ˜ แƒแƒฎแƒแƒšแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ”แƒ‘แƒแƒ“.

๏ธ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ

  1. แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ–แƒ” แƒ’แƒแƒ“แƒแƒ แƒ—แƒ•แƒ master แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“.
  2. แƒ’แƒแƒœแƒแƒแƒฎแƒšแƒ”แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜แƒ“แƒแƒœ.
  3. แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ— PR แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒ ะฒ master.
  4. แƒ’แƒแƒ›แƒแƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒกแƒแƒชแƒแƒ•แƒจแƒ˜.

แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒ˜แƒก แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ“แƒ
แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒ—

แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜

# ะŸะตั€ะตะบะปัŽั‡ะธั‚ะตััŒ ะฝะฐ ะฒะตั‚ะบัƒ master.
git checkout master

# ะžะฑะฝะพะฒะธั‚ะต ะปะพะบะฐะปัŒะฝั‹ะน ั€ะตะฟะพะทะธั‚ะพั€ะธะน ะธะท ัƒะดะฐะปั‘ะฝะฝะพะณะพ ั€ะตะฟะพะทะธั‚ะพั€ะธั.
git pull

# ะžั‚ะผะตะฝะธั‚ะต ะบะพะผะผะธั‚ ัะปะธัะฝะธั PR Steps review ะฒ master.
# ะœั‹ ะพั‚ะผะตะฝัะตะผ ะบะพะผะผะธั‚ ัะปะธัะฝะธั, ะฟะพัั‚ะพะผัƒ ะฝะฐะผ ะฝัƒะถะฝะพ ะฒั‹ะฑั€ะฐั‚ัŒ ะฒะตั‚ะบัƒ ะธัั‚ะพั€ะธะธ, ะบะพั‚ะพั€ัƒัŽ ะผั‹ ะทะฐั…ะพั‚ะธะผ ะพัั‚ะฐะฒะธั‚ัŒ
git show HEAD

# ะฟั€ะตะดะฟะพะปะพะถะธะผ, ั‡ั‚ะพ ะบะพะผะผะธั‚, ะบะพั‚ะพั€ั‹ะน ะฑั‹ะป ะฟะพัะปะตะดะฝะธะผ ะฒ ะฒะตั‚ะบะต master ะดะพ ัะปะธัะฝะธั, ะฑั‹ะป ะพั‚ะพะฑั€ะฐะถั‘ะฝ ะฟั€ะตะดั‹ะดัƒั‰ะตะน ะบะพะผะฐะฝะดะพะน ะฟะตั€ะฒั‹ะผ
git revert HEAD -m 1
# ะผะพะถะตั‚ะต ะฝะต ะผะตะฝัั‚ัŒ ัะพะพะฑั‰ะตะฝะธั ะบะพะผะผะธั‚ะพะฒ

# ะžะฟัƒะฑะปะธะบัƒะนั‚ะต ะธะทะผะตะฝะตะฝะธั ะฒ ัƒะดะฐะปั‘ะฝะฝั‹ะน ั€ะตะฟะพะทะธั‚ะพั€ะธะน
git push

๏ธ แƒ—แƒ•แƒ˜แƒ—แƒขแƒ”แƒกแƒขแƒ˜

แฒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜, แƒ แƒแƒ› ci.md แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒแƒฆแƒแƒ  แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒขแƒ”แƒฅแƒกแƒขแƒก "sneaky bug".

แƒ“แƒแƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ”แƒ— CI แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ แƒ“แƒ แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ— แƒกแƒแƒ›แƒแƒ’แƒ˜แƒกแƒขแƒ แƒ

แƒฉแƒ•แƒ”แƒœ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ“แƒแƒ•แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ— แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜แƒก แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ. feature. แƒ™แƒแƒ แƒ’แƒ˜ แƒแƒ›แƒ‘แƒแƒ•แƒ˜ แƒ˜แƒก แƒแƒ แƒ˜แƒก, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒแƒฎแƒšแƒ แƒแƒ แƒแƒœแƒแƒ˜แƒ แƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒแƒ  แƒ’แƒ•แƒแƒฅแƒ•แƒก master. แƒชแƒฃแƒ“แƒ˜ แƒแƒ›แƒ‘แƒแƒ•แƒ˜ แƒ˜แƒก แƒแƒ แƒ˜แƒก, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœแƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒซแƒ•แƒ˜แƒ แƒคแƒแƒกแƒ˜ แƒกแƒ˜แƒแƒช แƒ’แƒแƒฅแƒ แƒ. แƒแƒกแƒ” แƒ แƒแƒ›, แƒ˜แƒ“แƒ”แƒแƒšแƒฃแƒ  แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒจแƒ”แƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ แƒ˜แƒ› แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ–แƒ” feature แƒ“แƒ แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜ master แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“.

แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ›แƒ˜แƒ•แƒฃแƒ“แƒ’แƒ”แƒ— แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ’แƒ–แƒ˜แƒ—:

  • แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ— แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒแƒฃแƒฅแƒ›แƒ”แƒ‘แƒก แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒแƒก feature ั master;
  • แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ แƒแƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒก แƒงแƒแƒคแƒ˜แƒšแƒ˜ feature.

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ’แƒฃแƒœแƒ“แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒš แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ”แƒ‘แƒก แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒขแƒแƒœแƒ— แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒก แƒชแƒแƒšแƒ™แƒ” แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜ แƒ“แƒ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒชแƒแƒšแƒ™แƒ” pull แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒแƒ› แƒแƒฎแƒแƒšแƒ˜ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

๏ธ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ

  1. แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ—แƒ”แƒ›แƒ แƒ”.แƒฌ feature-fix แƒ“แƒ แƒ’แƒแƒ“แƒแƒ”แƒ แƒ—แƒ”แƒ— แƒ›แƒแƒกแƒ–แƒ”.
  2. แƒ’แƒแƒ“แƒแƒ˜แƒขแƒแƒœแƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ แƒงแƒแƒคแƒ˜แƒšแƒ˜ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜แƒ“แƒแƒœ feature แƒแƒฎแƒแƒš แƒ—แƒ”แƒ›แƒแƒจแƒ˜. แƒ›แƒ˜แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒก แƒฌแƒแƒ แƒ›แƒแƒฅแƒ›แƒœแƒ˜แƒšแƒ˜ แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒ•แƒแƒ แƒ”แƒ‘แƒ.

    แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒ—

  3. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒ แƒ”แƒ’แƒ แƒ”แƒกแƒ˜แƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜ ci.test.js:

    it('does not contain the sneaky bug', () => {
    expect( /.*sneakys+bug.*/gi.test(fileContents)).toBe(false);
    });

  4. แƒฉแƒแƒแƒขแƒแƒ แƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“, แƒ แƒแƒ—แƒ แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ”แƒ—, แƒ แƒแƒ› แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ  แƒฉแƒแƒ•แƒแƒ แƒ“แƒ”แƒ‘แƒ˜แƒแƒœ.
  5. แƒฌแƒแƒจแƒแƒšแƒ”แƒ— แƒขแƒ”แƒฅแƒกแƒขแƒ˜ "แƒจแƒ”แƒžแƒแƒ แƒฃแƒšแƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒ—". ci.md.
  6. แƒ“แƒแƒแƒ›แƒแƒขแƒ”แƒ— แƒขแƒ”แƒกแƒขแƒ˜แƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ˜แƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒจแƒ˜ แƒ“แƒ แƒฉแƒแƒ˜แƒ“แƒ˜แƒœแƒ”แƒ— แƒ˜แƒกแƒ˜แƒœแƒ˜.
  7. แƒ’แƒแƒ›แƒแƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ— แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ  แƒกแƒแƒชแƒแƒ•แƒจแƒ˜.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒกแƒ แƒฃแƒšแƒแƒ— แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒ แƒแƒ›:
แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒ—

แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜

# ะกะพะทะดะฐะนั‚ะต ะฒะตั‚ะบัƒ ะฟะพะด ะฝะฐะทะฒะฐะฝะธะตะผ feature-fix ะธ ะฟะตั€ะตะบะปัŽั‡ะธั‚ะตััŒ ะฝะฐ ะฝะตะต.
git checkout -b feature-fix

# ะŸะตั€ะตะฝะตัะธั‚ะต ะฒัะต ะบะพะผะผะธั‚ั‹ ะธะท ะฑั‹ะฒัˆะตะน ะฒะตั‚ะบะธ feature ะฒ ะฝะพะฒัƒัŽ ะฒะตั‚ะบัƒ. ะ ะฐะทั€ะตัˆะธั‚ะต ะบะพะฝั„ะปะธะบั‚ั‹ ัะปะธัะฝะธั, ะบะพั‚ะพั€ั‹ะต ะฒะพะทะฝะธะบะปะธ ะฟั€ะธ ะฟะตั€ะตะฝะพัะต.
# ะธัะฟะพะปัŒะทัƒะนั‚ะต ะธัั‚ะพั€ะธัŽ ั‡ั‚ะพะฑั‹ ัƒะทะฝะฐั‚ัŒ ั…ััˆะธ ะบะพะผะผะธั‚ะพะฒ:
# - ะฟั€ะตะดัˆะตัั‚ะฒัƒัŽั‰ะตะณะพ ะบะพะผะผะธั‚ัƒ ั ะฟะตั€ะฒะพะน ั‡ะฐัั‚ัŒัŽ ัะฟะธัะบะฐ: C0
# - ะดะพะฑะฐะฒะปััŽั‰ะตะณะพ ะฟะพัะปะตะดะฝะธะต ัะปะตะผะตะฝั‚ั‹ ัะฟะธัะบะฐ: C2
git log --oneline --graph
git cherry-pick C0..C2
# ั€ะฐะทั€ะตัˆะธั‚ะต ะบะพะฝั„ะปะธะบั‚ั‹ ัะปะธัะฝะธั
# - ะพั‚ั€ะตะดะฐะบั‚ะธั€ัƒะนั‚ะต ci.md ะธ/ะธะปะธ ci.test.js
# - ะดะพะฑะฐะฒัŒั‚ะต ั„ะฐะนะปั‹ ะฒ ะธะฝะดะตะบั
# - ะฒั‹ะฟะพะปะฝะธั‚ะต "git cherry-pick --continue", ะผะพะถะตั‚ะต ะฝะต ะผะตะฝัั‚ัŒ ัะพะพะฑั‰ะตะฝะธะต ะบะพะผะผะธั‚ะฐ

# ะ”ะพะฑะฐะฒัŒั‚ะต ั€ะตะณั€ะตััะธะพะฝะฝั‹ะน ั‚ะตัั‚ ะฒ ci.test.js
# ะ—ะฐะฟัƒัั‚ะธั‚ะต ั‚ะตัั‚ั‹ ะปะพะบะฐะปัŒะฝะพ, ั‡ั‚ะพะฑั‹ ัƒะฑะตะดะธั‚ัŒัั, ั‡ั‚ะพ ะพะฝะธ ะฝะต ะทะฐะฒะตั€ัˆะฐัŽั‚ัั ัƒัะฟะตัˆะฝะพ.

# ะฃะดะฐะปะธั‚ะต ั‚ะตะบัั‚ " with a sneaky bug" ะฒ ci.md.

# ะ”ะพะฑะฐะฒัŒั‚ะต ะฒ ะธะฝะดะตะบั ะธะทะผะตะฝะตะฝะธั ั‚ะตัั‚ะพะฒ ะธ ะฒ ัะฟะธัะบะต ัˆะฐะณะพะฒ ะธ ะทะฐะบะพะผะผะธั‚ัŒั‚ะต ะธั….
git add ci.md ci.test.js
git commit -m "Fix the bug in steps list"

# ะžะฟัƒะฑะปะธะบัƒะนั‚ะต ะฒะตั‚ะบัƒ ะฒ ัƒะดะฐะปั‘ะฝะฝั‹ะน ั€ะตะฟะพะทะธั‚ะพั€ะธะน.
git push --set-upstream origin feature-fix

แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒ’แƒแƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ.

แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— pull แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ“แƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒ. แฒ“แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ‘แƒ feature-fix แƒ แƒแƒ’แƒแƒ แƒช โ€žแƒ—แƒแƒ•แƒ˜แƒก แƒขแƒแƒขแƒ˜โ€œ แƒ“แƒ master โ€žแƒ‘แƒแƒ–แƒ˜แƒก แƒขแƒแƒขแƒ˜แƒกโ€œ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒแƒ“.
แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ“แƒแƒ”แƒšแƒแƒ“แƒแƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก. แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒแƒขแƒฃแƒกแƒ˜แƒก แƒœแƒแƒฎแƒ•แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒžแƒ˜แƒแƒ แƒ˜แƒก แƒ“แƒ˜แƒกแƒ™แƒฃแƒกแƒ˜แƒ˜แƒก แƒ‘แƒแƒšแƒแƒจแƒ˜.

แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— master แƒ›แƒ˜แƒก แƒฉแƒแƒœแƒ’แƒแƒšแƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ แƒแƒ’แƒแƒ แƒช "แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒ˜", แƒ›แƒ” แƒแƒ  แƒ•แƒฃแƒžแƒแƒกแƒฃแƒฎแƒ”แƒ‘ แƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒก แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ›แƒแƒกแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘.

แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ“แƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ”แƒ‘แƒ "แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ"

แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ แƒจแƒ”แƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก! แƒ’แƒ—แƒฎแƒแƒ•แƒ—, แƒ“แƒแƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒแƒ— แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ master แƒ’แƒแƒงแƒ•แƒแƒœแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒ“แƒแƒœ.

๏ธ แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ

  1. แƒ“แƒแƒแƒฌแƒ™แƒแƒžแƒฃแƒœแƒ”แƒ— "แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ".
  2. แƒ“แƒแƒแƒญแƒ˜แƒ แƒ”แƒ— "แƒ“แƒแƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒ”แƒ— แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ".
  3. แƒ“แƒแƒแƒญแƒ˜แƒ แƒ”แƒ— "แƒฌแƒแƒจแƒšแƒ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒก", แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒก แƒแƒฆแƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ.

แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒช แƒแƒ› แƒ›แƒแƒ›แƒ”แƒœแƒขแƒจแƒ˜ แƒฃแƒœแƒ“แƒ แƒ’แƒฅแƒแƒœแƒ“แƒ”แƒ—.
แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒ—

แƒ’แƒ˜แƒšแƒแƒชแƒแƒ•แƒ—!

แƒ—แƒฅแƒ•แƒ”แƒœ แƒ“แƒแƒแƒกแƒ แƒฃแƒšแƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ˜แƒก แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒฎแƒแƒšแƒฎแƒ˜ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ“แƒ’แƒแƒ›แƒก แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒก.

แƒ—แƒฃ แƒจแƒ”แƒแƒ›แƒฉแƒœแƒ”แƒ•แƒ— แƒ แƒแƒ˜แƒ›แƒ” แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก แƒ™แƒฃแƒ แƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ— แƒแƒœ แƒ˜แƒชแƒ˜แƒ—, แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒแƒ— แƒ˜แƒก, แƒ’แƒ—แƒฎแƒแƒ•แƒ—, แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒกแƒแƒชแƒแƒ•แƒ”แƒ‘แƒ˜ แƒกแƒแƒกแƒฌแƒแƒ•แƒšแƒ แƒ›แƒแƒกแƒแƒšแƒ”แƒ‘แƒ˜แƒ—. แƒแƒ› แƒ™แƒฃแƒ แƒกแƒกแƒแƒช แƒแƒฅแƒ•แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒแƒฅแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ GitHub Learning Lab-แƒ˜แƒก แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ