เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเต‹เดŸเต†เดฏเตเดณเตเดณ เดธเดพเดงเดพเดฐเดฃ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เตพ

เดจเดฟเด™เตเด™เตพ Git เด•เดฎเดพเตปเดกเตเด•เตพ เดชเด เดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹, เดŽเดจเตเดจเดพเตฝ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดเด•เต€เด•เดฐเดฃเด‚ (CI) เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต‹? เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฆเตˆเดจเด‚เดฆเดฟเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต‹? เด’เดฐเต GitHub เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเดฟเตฝ เดˆ เด•เต‹เดดเตเดธเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดชเตเดฐเดพเดฏเต‹เด—เดฟเด• เด•เดดเดฟเดตเตเด•เตพ เดจเตฝเด•เตเด‚. เดˆ เด•เต‹เดดเตโ€Œเดธเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เด’เดฐเต เดฎเดพเดจเตเดคเตเดฐเดฟเด•เดจเดพเด•เดพเตป เด‰เดฆเตเดฆเต‡เดถเดฟเดšเตเดšเตเดณเตเดณเดคเดฒเตเดฒ; เดจเต‡เดฐเต†เดฎเดฑเดฟเดšเตเดšเต, เด†เดณเตเด•เตพ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดœเต‹เดฒเดฟเดธเตเดฅเดฒเดคเตเดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เด…เดคเต‡ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เด…เดตเตผ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด…เดคเต‡ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดจเดฟเด™เตเด™เตพ เดšเต†เดฏเตเดฏเตเด‚. เดจเดฟเด™เตเด™เตพ เด‰เตพเดชเตเดชเต†เดŸเตเดŸ เด˜เดŸเตเดŸเด™เตเด™เดณเดฟเดฒเต‚เดŸเต† เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเดฎเตเดชเต‹เตพ เดžเดพเตป เดธเดฟเดฆเตเดงเดพเดจเตเดคเด‚ เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เตเด‚.

เดŽเดจเตเดคเต เดšเต†เดฏเตเดฏเดฃเด‚?

เดžเด™เตเด™เตพ เดชเตเดฐเต‹เด—เดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดธเดพเดงเดพเดฐเดฃ CI เด˜เดŸเตเดŸเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดžเด™เตเด™เตพ เด•เตเดฐเดฎเต‡เดฃ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚, เด‡เดคเต เดˆ เดฒเดฟเดธเตเดฑเตเดฑเต เด“เตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฎเดฟเด•เดšเตเดš เดฎเดพเตผเด—เดฎเดพเดฃเต. เดฎเดฑเตเดฑเตŠเดฐเต เดตเดฟเดงเดคเตเดคเดฟเตฝ เดชเดฑเดžเตเดžเดพเตฝ, เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเด‚ เดจเดŸเดคเตเดคเตเด•เดฏเตเด‚ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเด‚ เดจเดŸเดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดžเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚. เดžเด™เตเด™เดณเตเดŸเต† CI เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเต† เดฏเดฅเดพเตผเดคเตเดฅเดฎเดพเดฏ เด’เดจเตเดจเดฟเดฒเต‡เด•เตเด•เต เด…เดŸเตเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดžเด™เตเด™เตพ เดฒเดณเดฟเดคเดฎเดพเดฏ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดŸเต†เดธเตเดฑเตเดฑเตเด•เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

เดจเดฟเด™เตเด™เตพ เด•เต‹เดดเตโ€Œเดธเดฟเดฒเต‚เดŸเต† เดชเตเดฐเต‹เด—เดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดˆ GIF เดจเดฟเด™เตเด™เดณเตเดŸเต† เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต† เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดคเด•เตพ เดธเตเด•เต€เดฎเดพเดฑเตเดฑเดฟเด•เต เด†เดฏเดฟ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเดจเดพเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เด‡เดตเดฟเดŸเต† เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เด’เดจเตเดจเตเด‚ เดคเดจเตเดจเต†เดฏเดฟเดฒเตเดฒ, เดเดฑเตเดฑเดตเตเด‚ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดคเต เดฎเดพเดคเตเดฐเด‚.

เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเต‹เดŸเต†เดฏเตเดณเตเดณ เดธเดพเดงเดพเดฐเดฃ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เตพ

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต CI เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเดฟเดฒเต‚เดŸเต† เดจเดฟเด™เตเด™เตพ เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเด‚:

  • เด’เดฐเต เดธเดตเดฟเดถเต‡เดทเดคเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•;
  • เด—เตเดฃเดจเดฟเดฒเดตเดพเดฐเด‚ เด‰เดฑเดชเตเดชเดพเด•เตเด•เดพเตป เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเดกเต เดŸเต†เดธเตเดฑเตเดฑเตเด•เดณเตเดŸเต† เดชเตเดฐเดฏเต‹เด—เด‚;
  • เดฎเตเตปเด—เดฃเดจเดพ เดšเตเดฎเดคเดฒ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตฝ;
  • เดถเดพเด–เด•เตพ เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดตเตˆเดฐเตเดฆเตเดงเตเดฏ เดชเดฐเดฟเดนเดพเดฐเด‚ (เดคเตผเด•เตเด•เด‚ เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด•);
  • เด‰เตฝเดชเตเดชเดพเดฆเดจ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ เด’เดฐเต เดชเดฟเดถเด•เต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเต.

เดจเดฟเด™เตเด™เตพ เดŽเดจเตเดคเต เดชเด เดฟเด•เตเด•เตเด‚?

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดšเต‹เดฆเตเดฏเด™เตเด™เตพเด•เตเด•เต เด‰เดคเตเดคเดฐเด‚ เดจเตฝเด•เดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดฏเตเด‚:

  • เดŽเดจเตเดคเดพเดฃเต เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเด‚ (CI)?
  • CI-เตฝ เดเดคเต เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเดกเต เดŸเต†เดธเตเดฑเตเดฑเตเด•เดณเดพเดฃเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต, เด…เดต เดเดคเตŠเด•เตเด•เต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเดพเดฃเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต?
  • เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดŽเดจเตเดคเตŠเด•เตเด•เต†เดฏเดพเดฃเต, เด…เดต เดŽเดชเตเดชเต‹เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต?
  • เดŽเดจเตเดคเดพเดฃเต เดŸเต†เดธเตเดฑเตเดฑเต เดกเตเดฐเตˆเดตเตบ เดกเต†เดตเดฒเดชเตโ€Œเดฎเต†เดจเตเดฑเต (เดŸเดฟเดกเดฟเดกเดฟ) เด…เดคเต เดธเดฟเดเดฏเตเดฎเดพเดฏเดฟ เดŽเด™เตเด™เดจเต† เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต?
  • เดžเดพเตป เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เดฃเต‹ เด…เดคเต‹ เดฑเต€เดฌเต‡เดธเต เดšเต†เดฏเตเดฏเดฃเต‹?
  • เดฑเต‹เตพ เดฌเดพเด•เตเด•เต เดšเต†เดฏเตเดฏเดฃเต‹ เด…เดคเต‹ เด…เดŸเตเดคเตเดค เดชเดคเดฟเดชเตเดชเดฟเตฝ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดฃเต‹?

เด†เดฆเตเดฏเด‚ เดžเดพเตป เดŽเดฒเตเดฒเดพเดฏเดฟเดŸเดคเตเดคเตเด‚ "เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดตเดฒเดฟเดšเตเดšเดฟเดŸเตเด•" เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดคเต, เดชเด•เตเดทเต‡ เด…เดคเดฟเดจเตเดฑเต† เดซเดฒเดฎเดพเดฏเดฟ เดตเดพเดšเด•เดคเตเดคเดฟเดฒเต† เดญเตเดฐเดพเดจเตเดคเดฟเดจเตเดฑเต† เด…เดณเดตเต เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดšเดฟเดฒ เดธเตเดฅเดฒเด™เตเด™เดณเดฟเตฝ เด‡เด‚เด—เตเดฒเต€เดทเดฟเตฝ เดตเดพเด•เตเดฏเด™เตเด™เตพ เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เดพเตป เดžเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต. เด†เดณเตเด•เตพ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดœเต‹เดฒเดฟเดธเตเดฅเดฒเดคเตเดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ "เด•เดฎเตเดฎเดฟเดฑเตเดฑเต" เดŽเดจเตเดจ เด…เดคเตเดญเตเดคเด•เดฐเดฎเดพเดฏ เด•เตเดฐเดฟเดฏ เดชเต‹เดฒเต† เดžเดพเตป เดšเดฟเดฒเดชเตเดชเต‹เตพ "เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตผ เดธเตเตผเดœเดฟเด•เต" เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

เดŽเดจเตเดคเดพเดฃเต เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเด‚?

เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดเด•เต€เด•เดฐเดฃเด‚, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ CI, เด’เดฐเต เดธเดพเด™เตเด•เต‡เดคเดฟเด• เดธเดฎเตเดชเตเดฐเดฆเดพเดฏเดฎเดพเดฃเต, เด…เดคเดฟเตฝ เด“เดฐเต‹ เดŸเต€เด‚ เด…เด‚เด—เดตเตเด‚ เด’เดฐเต เดฆเดฟเดตเดธเดคเตเดคเดฟเตฝ เด’เดฐเดฟเด•เตเด•เดฒเต†เด™เตเด•เดฟเดฒเตเด‚ เด…เดตเดฐเตเดŸเต† เด•เต‹เดกเต เด’เดฐเต เดชเตŠเดคเต เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต, เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เด•เต‹เดกเต เด•เตเดฑเดžเตเดžเดคเต เดชเดฟเดถเด•เตเด•เดณเดฟเดฒเตเดฒเดพเดคเต† เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดฃเด‚.

เดˆ เดชเดฆเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด…เดญเดฟเดชเตเดฐเดพเดฏเดตเตเดฏเดคเตเดฏเดพเดธเด™เตเด™เดณเตเดฃเตเดŸเต

เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเดฟเดจเตเดฑเต† เด†เดตเตƒเดคเตเดคเดฟเดฏเดพเดฃเต เดคเตผเด•เตเด•เดตเดฟเดทเดฏเด‚. เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏเดฟ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดฆเดฟเดตเดธเดคเตเดคเดฟเตฝ เด’เดฐเดฟเด•เตเด•เตฝ เดฎเดพเดคเตเดฐเด‚ เด•เต‹เดกเต เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเดฐเตเดฏเดพเดชเตเดคเดฎเดฒเตเดฒเต†เดจเตเดจเต เดšเดฟเดฒเตผ เดตเดพเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดฒเตเดฒเดพเดตเดฐเตเด‚ เดฐเดพเดตเดฟเดฒเต† เดชเตเดคเดฟเดฏ เด•เต‹เดกเต เดŽเดŸเตเด•เตเด•เตเด•เดฏเตเด‚ เดตเตˆเด•เตเดจเตเดจเต‡เดฐเด‚ เด’เดฐเดฟเด•เตเด•เตฝ เด…เดคเต เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเต เดŸเต€เดฎเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเตŠเดฐเต เดจเตเดฏเดพเดฏเดฎเดพเดฏ เดŽเดคเดฟเตผเดชเตเดชเดพเดฃเต†เด™เตเด•เดฟเดฒเตเด‚, เด’เดฐเต เดฆเดฟเดตเดธเดคเตเดคเดฟเตฝ เด’เดฐเดฟเด•เตเด•เตฝ เดŽเดจเตเดจ เดจเดฟเตผเดตเดšเดจเด‚ เดจเตเดฏเดพเดฏเดฎเดพเดฏเตเด‚ เดชเตเดฐเดพเดฏเต‹เด—เดฟเด•เดตเตเด‚ เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸเดตเตเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดค เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเดฒเตเดณเตเดณ เดŸเต€เดฎเตเด•เตพเด•เตเด•เต เด…เดจเตเดฏเต‹เดœเตเดฏเดตเตเดฎเดพเดฃเต†เดจเตเดจเต เดชเตŠเดคเตเดตเต† เดตเดฟเดถเตเดตเดธเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต.

เดฎเดฑเตเดฑเตŠเดฐเต เดŽเดคเดฟเตผเดชเตเดชเต, เดตเดฟเด•เดธเดจเดคเตเดคเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต‡เดฏเตŠเดฐเต เดญเดพเดท C++ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดฎเต‚เดฒเตเดฏเดจเดฟเตผเดฃเตเดฃเดฏเดคเตเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฎเดพเตผเด—เดฎเดพเดฏเดฟ เดชเดฟเดถเด•เต เดฐเดนเดฟเดค เด…เดธเด‚เดฌเตเดฒเดฟ เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเดคเต เดฆเตเตผเดฌเดฒเดฎเดพเดฃเต. เดšเดฟเดฒ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดค เดฏเต‚เดฃเดฟเดฑเตเดฑเต เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ) เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฃเด‚. เด‡เดชเตเดชเต‹เตพ, เด•เดฎเตเดฎเตเดฏเต‚เดฃเดฟเดฑเตเดฑเดฟ เด‡เดคเต เด’เดฐเต เด†เดตเดถเตเดฏเด•เดคเดฏเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เดจเต€เด™เตเด™เตเด•เดฏเดพเดฃเต, เดญเดพเดตเดฟเดฏเดฟเตฝ "เดฌเดฟเตฝเดกเต + เดฏเต‚เดฃเดฟเดฑเตเดฑเต เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ" เด‡เดคเต เด‡เดคเดฟเดจเด•เด‚ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด’เดฐเตเดชเด•เตเดทเต‡ เดธเดพเดงเดพเดฐเดฃ เดฐเต€เดคเดฟเดฏเดพเดฏเดฟ เดฎเดพเดฑเตเด‚.

เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดเด•เต€เด•เดฐเดฃเด‚ เด…เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเต เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดกเต†เดฒเดฟเดตเดฑเดฟ (เดคเตเดŸเตผเดšเตเดšเดฏเตเดณเตเดณ เดกเต†เดฒเดฟเดตเดฑเดฟ, เดธเดฟเดกเดฟ) เด“เดฐเต‹ เดเด•เต€เด•เดฐเดฃ เดธเตˆเด•เตเด•เดฟเดณเดฟเดจเต เดถเต‡เดทเดตเตเด‚ เด’เดฐเต เดฑเดฟเดฒเต€เดธเต เด•เดพเตปเดกเดฟเดกเต‡เดฑเตเดฑเต เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ.

เด•เต‹เดดเตโ€ŒเดธเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดžเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด˜เดŸเตเดŸเด™เตเด™เดณเตเดŸเต† เดชเดŸเตเดŸเดฟเด•

  1. เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เด•เต‹เดกเต เดตเดฒเดฟเด•เตเด•เตเด•. เดจเดฟเดจเตเดจเต เด’เดฐเต เดถเดพเด– เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• master. เดœเต‹เดฒเดฟ เดคเตเดŸเด™เตเด™เตเด•.
  2. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดคเดฟเดฏ เดถเดพเด–เดฏเดฟเตฝ เด•เดฎเตเดฎเดฟเดฑเตเดฑเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•. เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•. เดชเดพเดธเตเดธเต? เด…เดŸเตเดคเตเดค เด˜เดŸเตเดŸเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•. เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเดฎเต‹? เดชเดฟเดถเด•เตเด•เดณเต‹ เดชเดฐเดฟเดถเต‹เดงเดจเด•เดณเต‹ เดชเดฐเดฟเดนเดฐเดฟเดšเตเดšเต เดตเต€เดฃเตเดŸเตเด‚ เดถเตเดฐเดฎเดฟเด•เตเด•เตเด•.
  3. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดตเดฟเดฆเต‚เดฐ เดธเด‚เดญเดฐเดฃเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต‹ เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฌเตเดฐเดพเดžเตเดšเดฟเดฒเต‡เด•เตเด•เต‹ เด…เดฎเตผเดคเตเดคเตเด•.
  4. เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•. เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเตเด•, เดšเตผเดšเตเดš เดคเตเดŸเดฐเตเดฎเตเดชเต‹เตพ เด•เต‚เดŸเตเดคเตฝ เด•เดฎเตเดฎเดฟเดฑเตเดฑเตเด•เตพ เดšเต‡เตผเด•เตเด•เตเด•. เดซเต€เดšเตเดšเตผ เดฌเตเดฐเดพเดžเตเดšเดฟเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดตเดฟเดœเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด•.
  5. เดฎเดพเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด•/เดฑเต€เดฌเต‡เดธเต เด•เดฎเตเดฎเดฟเดฑเตเดฑเตเด•เตพ. เดฒเดฏเดจ เดซเดฒเดคเตเดคเดฟเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดตเดฟเดœเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด•.
  6. เดซเต€เดšเตเดšเตผ เดฌเตเดฐเดพเดžเตเดšเดฟเตฝ เดจเดฟเดจเตเดจเต เด‰เตฝเดชเตเดชเดพเดฆเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเด•.
  7. เด•เตเดฑเดšเตเดšเต เดธเดฎเดฏเดคเตเดคเต‡เด•เตเด•เต เด‰เตฝเดชเตเดชเดพเดฆเดจเดคเตเดคเดฟเตฝ เดŽเดฒเตเดฒเดพเด‚ เดฎเดฟเด•เดšเตเดšเดคเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดฎเดพเดธเตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด•.

เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเต‹เดŸเต†เดฏเตเดณเตเดณ เดธเดพเดงเดพเดฐเดฃ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เตพ

๏ธ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตฝ

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดถเดฐเดฟเดฏเดพเดฏ เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เด‰เดฃเตเดŸเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด•

เดˆ เด•เต‹เดดเตเดธเต เดŽเดŸเตเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเดพเดฃเต เดจเตŠเดฆเต†.เดœเตเดธเต ะธ 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 เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดŽเดจเตเดฑเต† เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เดชเดพเดฒเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เต‹เดดเตเดธเต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.

เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเต‹เดŸเต†เดฏเตเดณเตเดณ เดธเดพเดงเดพเดฐเดฃ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เตพ

เดžเด™เตเด™เตพ เด‡เดตเดฟเดŸเต† เดฐเดšเดฟเด•เตเด•เตเดจเตเดจ เดฒเดฟเดธเตโ€Œเดฑเตเดฑเดฟเดจเตเดฑเต† เดจเดฟเดฒเดตเดฟเดฒเต† เด…เดตเดธเตเดฅ เด•เดพเดฃเดพเตป เดฎเดพเตผเด•เตเด•เตเดกเต—เตบ เดฑเต†เตปเดกเตผ เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ GitHub-เดจเตเดฑเต† เด•เดดเดฟเดตเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดชเตเดชเต‹เดดเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚.

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 เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดเดคเต เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดค เดตเต‡เดฃเดฎเต†เดจเตเดจเต เด•เดฃเตเดŸเตเดชเดฟเดŸเดฟเด•เตเด•เดพเตป.
เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจ เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟ เดˆ เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดคเดฏเดฟเดฒเต‡เด•เตเด•เต เด‡เดคเตเดชเต‹เดฒเต† เดชเตเดจเดƒเดธเดœเตเดœเดฎเดพเด•เตเด•เดพเด‚:

git reset --hard <the SHA you need>

เดซเดฒเดคเตเดคเดฟเตฝ เดจเดฟเด™เตเด™เตพ เดธเดจเตเดคเตเดทเตเดŸเดจเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด’เดฐเต เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดŸเต† เดชเดคเดฟเดชเตเดชเต เด’เดฐเต เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดจเดฟเด™เตเด™เตพ เด‡เดคเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฌเตเดฐเดพเดžเตเดšเต เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเตป เดฎเดฑเด•เตเด•เดฐเตเดคเต.

git push --force origin master

เดžเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด• git push --force. เดจเดฟเด™เตเด™เตพ เด‡เดคเต เด‡เดŸเดฏเตเด•เตเด•เดฟเดŸเต† เดšเต†เดฏเตเดฏเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดคเต เด…เดธเด‚เดญเดตเตเดฏเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตŠเดชเตเดชเด‚, เด…เดตเตป เดŽเดจเตเดคเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต†เดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดธเดพเดนเดšเดฐเตเดฏเด‚ เดžเด™เตเด™เตพเด•เตเด•เตเดฃเตเดŸเต.

เดœเต‹เดฒเดฟ เดคเตเดŸเด™เตเด™เตเดจเตเดจเต

เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเต‹เดŸเต†เดฏเตเดณเตเดณ เดธเดพเดงเดพเดฐเดฃ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เตพ

เดจเดฎเตเด•เตเด•เต เดจเดฎเตเดฎเตเดŸเต† CI เด˜เดŸเตเดŸเด™เตเด™เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเดพเตป เดคเตเดŸเด™เตเด™เดพเด‚. เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เต‹เดกเดฟเดจเตเดฑเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเต เดจเดฟเด™เตเด™เตพ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดˆ เด˜เดŸเตเดŸเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด‚, เดชเด•เตเดทเต‡ เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเตเดตเดฐเต† เด’เดฐเต เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดถเต‡เด–เดฐเด‚ เด‡เดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เตพ เด…เดคเต เดฑเดฟเดฎเต‹เดŸเตเดŸเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เตเดฒเต‹เตบ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

๏ธ เดŸเดพเดธเตเด•เต: เดฒเต‹เด•เตเด•เตฝ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•, เด’เดฐเต เดฌเตเดฐเดพเดžเตเดšเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• master, เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเด•

  1. เด‡เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เต‹เดดเตโ€Œเดธเต เดถเต‡เด–เดฐเด‚ เด•เตเดฒเต‹เตบ เดšเต†เดฏเตเดฏเตเด• <URL ั€ะตะฟะพะทะธั‚ะพั€ะธั>.
  2. เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• npm install เด•เต‹เดดเตเดธเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเดฟเตฝ; เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดœเต†เดธเตเดฑเตเดฑเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.
  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- เดธเดฎเดพเดนเดฐเดฟเดšเตเดšเดคเต‹ เด†เดฏ เดญเดพเดทเด•เตพเด•เตเด•เดพเดฏเดฟ);
    • เด…เดธเด‚เดฌเตเดฒเดฟ เดธเดฎเดฏเดคเตเดคเต (เดธเดฎเดพเดนเดพเดฐเด‚ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดชเตเดชเต‹เตพ);
    • เดชเตเดฐเดคเดฟเดœเตเดžเดพเดฌเดฆเตเดงเดค;
    • เด’เดฐเต เดชเด™เตเด•เดฟเดŸเตเดŸ เดถเต‡เด–เดฐเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ.

  • เดฌเดฟเตฝเดกเต เดธเต†เตผเดตเดฑเดฟเตฝ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฌเดฟเตฝเดกเต เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต:
    • เด•เต‹เดกเต เด’เดฐเต เดตเตเดฏเด•เตเดคเดฟเด—เดค เดฌเตเดฐเดพเดžเตเดšเดฟเดฒเต‡เด•เตเด•เต/เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ.
    • เดˆ เดคเตเดฐเต†เดกเดฟเดฒเต† เด•เต‹เดกเต เดชเดฐเต€เด•เตเดทเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเดฟเดฐเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต.
    • เดฒเดฏเดจเดคเตเดคเดฟเดจเตเดฑเต† เดธเดพเดงเตเดฏเดคเดฏเตเดณเตเดณ เดซเดฒเด‚ เดชเดฐเต€เด•เตเดทเดฟเดšเตเดšเต (เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ master).
    • เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจ เด˜เดŸเตเดŸเด‚/เดคเตเดŸเตผเดšเตเดšเดฏเตเดณเตเดณ เดกเต†เดฒเดฟเดตเดฑเดฟ เดชเตˆเดชเตเดชเตเดฒเตˆเตป เดŽเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ

เดธเดพเดงเดพเดฐเดฃเด—เดคเดฟเดฏเดฟเตฝ, เด’เดฐเต เดŸเต†เดธเตเดฑเตเดฑเต เดธเตเดฏเต‚เดŸเตเดŸเต เดŽเดคเตเดฐ เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต‹ เด…เดคเตเดฐเดฏเดงเดฟเด•เด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดธเตเดฑเตเดฑเต‡เดœเต เดตเดฟเดคเดฐเดฃเด‚ เด‡เดคเตเดชเต‹เดฒเต†เดฏเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚.

  • เดซเดพเดธเตเดฑเตเดฑเต เดฏเต‚เดฃเดฟเดฑเตเดฑเต เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ - เดฌเดฟเตฝเดกเต เดธเดฎเดฏเดคเตเดคเต, CI เดชเตˆเดชเตเดชเตเดฒเตˆเดจเดฟเตฝ
  • เดธเตเดฒเต‹ เดฏเต‚เดฃเดฟเดฑเตเดฑเต เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ, เดซเดพเดธเตเดฑเตเดฑเต เด•เต‹เด‚เดชเต‹เดฃเดจเตเดฑเต, เด‡เดจเตเดฑเด—เตเดฐเต‡เดทเตป เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ - เด“เตบ เด•เดฎเตเดฎเดฟเดฑเตเดฑเต, CI เดชเตˆเดชเตเดชเตโ€Œเดฒเตˆเดจเดฟเตฝ
  • เดฎเดจเตเดฆเด—เดคเดฟเดฏเดฟเดฒเตเดณเตเดณ เด˜เดŸเด•เดตเตเด‚ เดเด•เต€เด•เดฐเดฃ เดชเดฐเดฟเดถเต‹เดงเดจเด•เดณเตเด‚ - CI เดชเตˆเดชเตเดชเตเดฒเตˆเดจเดฟเตฝ
  • เดธเตเดฐเด•เตเดทเดพ เดชเดฐเดฟเดถเต‹เดงเดจ, เดฒเต‹เดกเต เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต, เดฎเดฑเตเดฑเต เดธเดฎเดฏเดฎเต†เดŸเตเด•เตเด•เตเดจเตเดจเดคเต‹ เดšเต†เดฒเดตเต‡เดฑเดฟเดฏเดคเต‹ เด†เดฏ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ - CI/CD เดชเตˆเดชเตเดชเต เดฒเตˆเดจเตเด•เดณเดฟเตฝ, เดŽเดจเตเดจเดพเตฝ เดฌเดฟเตฝเดกเดฟเดจเตเดฑเต† เดšเดฟเดฒ เดฎเต‹เดกเตเด•เตพ/เดธเตเดฑเตเดฑเต‡เดœเตเด•เตพ/เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เดณเดฟเตฝ เดฎเดพเดคเตเดฐเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด’เดฐเต เดฑเดฟเดฒเต€เดธเต เด•เดพเตปเดกเดฟเดกเต‡เดฑเตเดฑเต เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเดฎเตเดชเต‹เดดเต‹ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เดดเต‹.

๏ธเดŸเดพเดธเตเด•เต

เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เดฆเตเดฏเด‚ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดžเดพเตป เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเต npm test. เด…เดคเดฟเดจเตเดถเต‡เดทเด‚, เด•เดฎเตเดฎเดฟเดฑเตเดฑเดฟเตฝ เดžเด™เตเด™เดณเตเดŸเต† เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดฑเตบ เดšเต†เดฏเตเดฏเดพเตป เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดœเดฟเดฑเตเดฑเต เดนเตเด•เตเด•เต เดšเต‡เตผเด•เตเด•เดพเด‚. เด’เดฐเต เด•เตเดฏเดพเดšเตเดšเต เด‰เดฃเตเดŸเต: Git เดนเตเด•เตเด•เตเด•เตพ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดŸเต† เดญเดพเด—เดฎเดพเดฏเดฟ เด•เดฃเด•เตเด•เดพเด•เตเด•เดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดฌเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เด•เต‹เดดเตโ€Œเดธเต เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ GitHub-เตฝ เดจเดฟเดจเตเดจเต เด•เตเดฒเต‹เตบ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ. เดนเตเด•เตเด•เต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต install_hook.sh เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดซเดฏเตฝ เดชเด•เตผเดคเตเดคเตเด• repo/hooks/pre-commit เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต .git/hooks/.
เดจเดฟเด™เตเด™เตพ เด•เดฎเตเดฎเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดฑเตบ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดพเดฏเดฟ เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเด•เดฏเตเด‚ เดšเดฟเดฒ เด•เต€เดตเต‡เดกเตเด•เตพ เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เด‰เดฃเตเดŸเต‹ เดŽเดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

  1. เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดšเตเดšเต เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดธเตเดตเดฎเต‡เดงเดฏเดพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• npm test เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เต‹เดดเตโ€Œเดธเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เดซเต‹เตพเดกเดฑเดฟเตฝ. เดชเดฐเดฟเดถเต‹เดงเดจเด•เตพ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹เดฏเต†เดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•.
  2. เด“เดŸเดฟเด•เตเด•เตŠเดฃเตเดŸเต เด’เดฐเต เด•เดฎเตเดฎเดฟเดฑเตเดฑเต เดนเตเด•เตเด•เต (เดชเตเดฐเต€-เด•เดฎเตเดฎเดฟเดฑเตเดฑเต เดนเตเด•เตเด•เต) เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด• 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-เดฒเต† เด“เดชเตเดชเตบ เดธเต‹เดดเตเดธเต เดชเตเดฐเต‹เดœเด•เตเดŸเตเด•เดณเดฟเตฝ เดˆ เดธเดฎเต€เดชเดจเด‚ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดฑเต† เดตเดฟเดชเตเดฒเดฎเดพเดฏ เด•เต‹เดดเตโ€Œเดธเดฟเดฒเตเด‚ เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต [เดŸเต€เด‚ เดตเตผเด•เตเด•เต, CI เดตเดฟเดคเตเดคเต Git] (http://devops.redpill.solutions/).
  • เด’เดฐเต เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เดฎเดพเดคเตเดฐเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•, เดฌเตเดฐเดพเดžเตเดšเต เดฎเดพเดคเตเดฐเด‚ เดŽเดฃเตเดฃเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดฎเดฑเตเดฑเตŠเดฐเต เดธเดฎเต€เดชเดจเด‚ master "เดธเด‚เดฐเด•เตเดทเดฟเดค" เดŽเดจเตเดจ เดชเด™เตเด•เดฟเดŸเตเดŸ เดถเต‡เด–เดฐเด‚. เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดตเตเดฏเด•เตเดคเดฟเด—เดค เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เด…เดตเดฐเตเดŸเต† เด•เต‹เดกเต เด’เดฐเต เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเตเดŸเต† เดถเดพเด–เด•เดณเดฟเดฒเต‡เด•เตเด•เต เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเตเดตเดดเดฟ เดฎเดฑเตเดฑเตเดณเตเดณเดตเตผเด•เตเด•เต เดˆ เด•เต‹เดกเต เดจเต‹เด•เตเด•เดพเดจเดพเด•เตเด‚, เดŽเดฒเตเดฒเดพเด‚ เด•เตเดฐเดฎเดคเตเดคเดฟเดฒเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด…เดคเต เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด• master เดชเด™เตเด•เดฟเดŸเตเดŸ เดถเต‡เด–เดฐเด‚.

เดˆ เดชเตเดฐเดคเตเดฏเต‡เด• เด•เต‹เดดเตเดธเดฟเตฝ, เดžเด™เตเด™เตพ เดถเดพเด–เด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดตเตผเด•เตเด•เตเดซเตเดฒเต‹ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด‚.

เดจเดฎเตเด•เตเด•เต เดจเดฎเตเดฎเตเดŸเต† เด•เต‹เดกเต เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เดพเด‚.

๏ธเดŸเดพเดธเตเด•เต

  • เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดฌเตเดฐเดพเดžเตเดšเดฟเดจเตเดฑเต† เด…เดคเต‡ เดชเต‡เดฐเดฟเตฝ เด’เดฐเต เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฌเตเดฐเดพเดžเตเดšเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเด•

ะšะพะผะฐะฝะดั‹

git push --set-upstream origin feature

เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•

เด’เดฐเต เดถเต€เตผเดทเด•เด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• เด˜เดŸเตเดŸเด™เตเด™เดณเตเดŸเต† เด…เดตเดฒเต‹เด•เดจเด‚... เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• feature "เดคเดฒ เดถเดพเด–" เดชเต‹เดฒเต†เดฏเตเด‚ master "เดฌเต‡เดธเต เดฌเตเดฐเดพเดžเตเดšเต" เดชเต‹เดฒเต†.

เดจเดฟเด™เตเด™เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด• master เด…เดตเดจเตเดฑเต† เดถเต‡เด–เดฐเด‚ เดซเต‹เตผเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด• เด’เดฐเต "เดฌเต‡เดธเต เดฌเตเดฐเดพเดžเตเดšเต" เดŽเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เด•เต‹เดดเตโ€Œเดธเต เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตเด•เดณเตเดŸเต† เดถเต‡เด–เดฐเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฎเดพเดฑเตเดฑเดคเตเดคเดฟเดจเตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเต‹เดŸเต เดžเดพเตป เดชเตเดฐเดคเดฟเด•เดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ.

GitHub เดฒเดฟเด‚เด—เต‹เดฏเดฟเตฝ, "เดฌเต‡เดธเต เดฌเตเดฐเดพเดžเตเดšเต" เดŽเดจเตเดจเดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดœเต‹เดฒเดฟเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดถเดพเด–เดฏเดพเดฃเต, เด•เต‚เดŸเดพเดคเต† "เดนเต†เดกเต เดฌเตเดฐเดพเดžเตเดšเต" เดŽเดจเตเดจเดคเต เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเดšเตเดš เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เดถเดพเด–เดฏเดพเดฃเต.

เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเตเด•, เดšเตผเดšเตเดš เดคเตเดŸเดฐเตเดฎเตเดชเต‹เตพ เดชเตเดคเดฟเดฏ เด•เดฎเตเดฎเดฟเดฑเตเดฑเตเด•เตพ เดšเต‡เตผเด•เตเด•เตเด•

เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดตเดฒเดฟเด•เตเด•เตเด•(PR)

เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดตเดฒเดฟเด•เตเด•เตเด•(PR) เด•เต‹เดกเต เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดกเต‹เด•เตเดฏเตเดฎเต†เดจเตเดฑเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด•เต‹เดกเต เด…เดตเดฒเต‹เด•เดจเด‚ เดจเดŸเดคเตเดคเดพเดจเตเดฎเตเดณเตเดณ เด’เดฐเต เดฎเดพเตผเด—เดฎเดพเดฃเต. เดฎเตŠเดคเตเดคเดคเตเดคเดฟเดฒเตเดณเตเดณ เด•เต‹เดกเดฟเดฒเต‡เด•เตเด•เต เดตเตเดฏเด•เตเดคเดฟเด—เดค เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตŠเดคเตเดตเดพเดฏ เดฐเต€เดคเดฟเดฏเตเดŸเต† เดชเต‡เดฐเดฟเดฒเดพเดฃเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพเด•เตเด•เต เดชเต‡เดฐเต เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต. เดธเดพเดงเดพเดฐเดฃเด—เดคเดฟเดฏเดฟเตฝ, เด’เดฐเต เดตเตเดฏเด•เตเดคเดฟ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดฑเดฟเดฎเต‹เดŸเตเดŸเต เด’เดซเต€เดทเตเดฏเตฝ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เด•เตเดฒเต‹เตบ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เด•เต‹เดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดคเดฟเดจเตเดถเต‡เดทเด‚, เด…เดตเตป เดคเดจเตเดฑเต† เดธเตเดตเด•เดพเดฐเตเดฏ เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เด•เต‹เดกเต เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด”เดฆเตเดฏเต‹เด—เดฟเด• เดถเต‡เด–เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเดฎเตเดณเตเดณเดตเดฐเต‹เดŸเต เดŽเดŸเตเด•เตเด•เดพเตป เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต(เดตเดฒเดฟเด•เตเด•เตเด•) เด…เดคเดฟเดจเตเดฑเต† เด•เต‹เดกเต เด…เดตเดฐเตเดŸเต† เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดถเต‡เด–เดฐเดฃเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต, เด…เดตเดฟเดŸเต† เด…เดตเตผ เด…เดตเดฒเต‹เด•เดจเด‚ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚(เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด•) เด…เดฆเตเดฆเต‡เดนเดคเตเดคเดฟเดจเตเดฑเต†. เดˆ เด†เดถเดฏเด‚ เดฎเดฑเตเดฑเต เดชเต‡เดฐเตเด•เดณเดฟเดฒเตเด‚ เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจ.

เดจเดฟเด™เตเด™เตพ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ GitHub เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดธเดฎเดพเดจเดฎเดพเดฏ เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเตเด•เดณเตเดŸเต† เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเดตเดฟเดถเต‡เดทเดค เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ. เดกเต†เดตเดฒเดชเตโ€Œเดฎเต†เดจเตเดฑเต เดŸเต€เดฎเตเด•เตพ เดฎเตเด–เดพเดฎเตเด– เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚, เดตเต‹เดฏเตโ€Œเดธเต เด•เต‹เดณเตเด•เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด‡เดฎเต†เดฏเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเต†เดฏเตเดณเตเดณ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเดคเตเดคเดฟเดจเตเดฑเต† เดฎเดฑเตเดฑเต เดฐเต€เดคเดฟเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚, เดŽเดจเตเดจเดพเตฝ เดซเต‹เดฑเด‚ เดถเตˆเดฒเดฟเดฏเดฟเดฒเตเดณเตเดณ เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‡เดจเดฟเดฏเตเด‚ เดจเดฟเดฐเดตเดงเดฟ เด•เดพเดฐเดฃเด™เตเด™เดณเตเดฃเตเดŸเต. เด…เดตเดฏเดฟเตฝ เดšเดฟเดฒเดคเต เด‡เดคเดพ:

  • เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เด•เต‹เดกเต เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เดšเตผเดšเตเดšเด•เตพ เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเดšเตเดšเต;
  • เด“เดŸเตเดŸเต‹เดŸเต†เดธเตเดฑเตเดฑเตผเดฎเดพเดฐเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดธเดฎเดชเตเดฐเดพเดฏเด•เตเด•เดพเดฐเดฟเตฝ เดจเดฟเดจเตเดจเตเดฎเตเดณเตเดณ เดชเตเดฐเต‹เด—เดคเดฟเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดซเต€เดกเตโ€Œเดฌเดพเด•เตเด•เต เด•เดพเดฃเดพเดจเตเดณเตเดณ เด’เดฐเต เดธเตเดฅเดฒเดฎเดพเดฏเดฟ;
  • เด•เต‹เดกเต เด…เดตเดฒเต‹เด•เดจเด™เตเด™เดณเตเดŸเต† เด”เดชเดšเดพเดฐเดฟเด•เดค;
  • เด…เดคเดฟเดจเดพเตฝ เดˆ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด† เด•เต‹เดกเดฟเดจเตเดฑเต† เดชเดฟเดจเตเดจเดฟเดฒเต† เด•เดพเดฐเดฃเด™เตเด™เดณเตเด‚ เดชเดฐเดฟเด—เดฃเดจเด•เดณเตเด‚ เดชเดฟเดจเตเดจเต€เดŸเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเดพเดจเต‹ เดซเต€เดกเตโ€Œเดฌเดพเด•เตเด•เต เดจเต‡เดŸเดพเดจเต‹ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดชเตเดชเต‹เตพ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดจเดฟเด™เตเด™เตพ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดตเดฟเดงเดคเตเดคเดฟเตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เด’เดฐเต เดซเต€เดšเตเดšเดฑเดฟเดฒเดพเดฃเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดถเดฏเด™เตเด™เตพ เดชเด™เตเด•เตเดตเต†เด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเดนเด•เดพเดฐเดฟเด•เดณเตเดฎเดพเดฏเดฟ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเดฆเตเดงเดคเดฟเด•เตพ เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดฎเดพเดฏเดฟ เด•เต‹เดกเดฟเดจเตเดฑเต† เด†เดฆเตเดฏ เดตเดฐเดฟ เดŽเดดเตเดคเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเดตเตเดจเตเดจเดคเดพเดฃเต. เดœเต‹เดฒเดฟ เดฒเดณเดฟเดคเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด‡เดคเดฟเดจเด•เด‚ เดšเต†เดฏเตเดคเตเด•เดดเดฟเดžเตเดžเดพเตฝ เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดคเตเดฑเด•เตเด•เตเด‚, เดชเตเดฐเดคเดฟเดœเตเดžเดพเดฌเดฆเตเดงเดฎเดพเดฃเต, เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเดพเด‚. เดšเดฟเดฒ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเดฟเตฝ, เด—เตเดฃเดจเดฟเดฒเดตเดพเดฐ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃ เด•เดพเดฐเดฃเด™เตเด™เดณเดพเตฝ เดฎเดพเดคเตเดฐเด‚ เดจเดฟเด™เตเด™เตพ เด’เดฐเต PR เดคเตเดฑเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚: เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเดกเต เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเต‹ เด•เต‹เดกเต เด…เดตเดฒเต‹เด•เดจเด™เตเด™เตพ เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเดจเต‹. เดจเดฟเด™เตเด™เตพ เดŽเดจเตเดคเต เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเดพเดฒเตเด‚, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเดฟเตปเดตเดฒเดฟเด•เตเด•เตฝ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เด‚เด—เต€เด•เดพเดฐเด‚ เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เด†เดณเตเด•เดณเต† @เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เดพเตป เดฎเดฑเด•เตเด•เดฐเตเดคเต.

เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ, เด’เดฐเต PR เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดจเดฟเด™เตเด™เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดต เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

  • เดจเดฟเด™เตเด™เตพ เดŽเดจเตเดคเดพเดฃเต เดฎเดพเดฑเตเดฑเดพเตป เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเตเด‚ เดŽเดตเดฟเดŸเต†เดฏเดพเดฃเต†เดจเตเดจเตเด‚ เดธเต‚เดšเดฟเดชเตเดชเดฟเด•เตเด•เตเด•.
  • เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตเดŸเต† เด‰เดฆเตเดฆเต‡เดถเตเดฏเด‚ เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดตเดฟเดตเดฐเดฃเด‚ เดŽเดดเตเดคเตเด•. เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚:
    • เด•เต‹เดกเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเด•เตเดคเดฎเดฒเตเดฒเดพเดคเตเดค เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดšเต‡เตผเด•เตเด•เตเด•, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเตเดฐเดธเด•เตเดคเดฎเดพเดฏ #เดฌเด—เตเด•เดณเตเด‚ เด•เดฎเตเดฎเดฟเดฑเตเดฑเต เดจเดฎเตเดชเดฑเตเด•เดณเตเด‚ เดชเต‹เดฒเต† เดธเดจเตเดฆเตผเดญเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดšเต‡เตผเด•เตเด•เตเด•;
    • เดจเดฟเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจ เด†เดฐเต†เดฏเต†เด™เตเด•เดฟเดฒเตเด‚ @เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เตเด•, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดตเดฐเต† เดชเดฟเดจเตเดจเต€เดŸเต เด•เดฎเดจเตเดฑเตเด•เดณเดฟเตฝ @เดชเดฐเดพเดฎเตผเดถเดฟเด•เตเด•เดพเด‚;
    • เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดธเดนเดพเดฏเดฟเด•เตเด•เดพเตป เดธเดนเดชเตเดฐเดตเตผเดคเตเดคเด•เดฐเต‹เดŸเต เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเด• เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเตเดฐเดคเตเดฏเต‡เด•เดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•.

เดจเดฟเด™เตเด™เตพ เดชเดฟเด†เตผ เดคเตเดฑเดจเตเดจเต เด•เดดเดฟเดžเตเดžเดพเตฝ, เด…เดคเตเดคเดฐเด‚ เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตโ€Œเดค เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดŽเด•เตโ€Œเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚. เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เดจเดŸเดคเตเดคเดฟเดฏ เดŸเต†เดธเตเดฑเตเดฑเตเด•เดณเตเดŸเต† เด…เดคเต‡ เดธเต†เดฑเตเดฑเต เด†เดฏเดฟเดฐเดฟเด•เตเด•เตเด‚ เด‡เดคเต, เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดฏเดฅเดพเตผเดคเตเดฅ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตฝ เด…เดงเดฟเด• เดชเดฐเดฟเดถเต‹เดงเดจเด•เดณเตเด‚ เดชเดฐเดฟเดถเต‹เดงเดจเด•เดณเตเด‚ เด‰เดฃเตเดŸเดพเดฏเต‡เด•เตเด•เดพเด‚.

เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดจเตเดจเดคเตเดตเดฐเต† เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเด•. GitHub เด‡เดจเตเดฑเตผเดซเต‡เดธเดฟเตฝ PR เดšเตผเดšเตเดšเดฏเตเดŸเต† เดšเตเดตเดŸเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŸเต†เดธเตเดฑเตเดฑเตเด•เดณเตเดŸเต† เดจเดฟเดฒ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚. เดชเดฐเดฟเดถเต‹เดงเดจเด•เตพ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดฎเตเดชเต‹เตพ เดคเตเดŸเดฐเตเด•.

๏ธ CI เด˜เดŸเตเดŸเด™เตเด™เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเดฟเดจเตเดฑเต† เด•เตเดฐเดฎเดฐเดนเดฟเดคเดคเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด’เดฐเต เด•เตเดฑเดฟเดชเตเดชเต เดšเต‡เตผเด•เตเด•เตเด•

เดˆ เด•เต‹เดดเตโ€Œเดธเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฒเดฟเดธเตเดฑเตเดฑเต เดเด•เดชเด•เตเดทเต€เดฏเดตเตเด‚ เด†เดคเตเดฎเดจเดฟเดทเตเด เดตเตเดฎเดพเดฃเต, เดžเด™เตเด™เตพ เด‡เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด’เดฐเต เด•เตเดฑเดฟเดชเตเดชเต เดšเต‡เตผเด•เตเด•เดฃเด‚.

๏ธ เดŸเดพเดธเตเด•เต: เดˆ เด…เดญเดฟเดชเตเดฐเดพเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•

  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 เด‡เดจเตเดฑเตผเดซเต‡เดธเดฟเตฝ เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดฑเตบ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด•เดพเดฃเตเด•.

  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 เดนเตเด•เตเด•เต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเต, เด•เดฎเตเดฎเดฟเดฑเตเดฑเต เดถเตเดฐเดฎเด‚ เดชเดฐเดพเดœเดฏเดชเตเดชเต†เดŸเตเด‚.
  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 เดžเด™เตเด™เตพ เดˆ PR-เตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ.
เด‡เดคเต เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฌเตเดฐเดพเดžเตเดšเต เดŽเดจเตเดจ เด…เดตเดธเตเดฅ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต master เดžเด™เตเด™เตพ เดฌเตเดฐเดพเดžเตเดšเต เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเดคเดฟเดจเต‡เด•เตเด•เดพเตพ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เด‰เดฃเตเดŸเต feature. เด‡เด•เตเด•เดพเดฐเดฃเดคเตเดคเดพเตฝ, เดจเดฎเตเด•เตเด•เต เดนเต†เดกเต เดฑเดฟเดตเตˆเตปเดกเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ master เดคเตเดฐเต†เดกเดฟเดจเตเดฑเต† เด…เดตเดธเดพเดจเด‚ เดตเดฐเต† feature. เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด’เดจเตเดจเตเด•เดฟเตฝ เดจเดฎเตเด•เตเด•เต เด•เดฎเตเดฎเดฟเดฑเตเดฑเตเด•เตพ เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเต‹ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเต‹ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต feature เดฑเต€เดฌเต‡เดธเต master. เดชเตŠเดฐเตเดคเตเดคเด•เตเด•เต‡เดŸเตเด•เตพ เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ GitHub-เดจเต เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดฏเดพเดจเตเดคเตเดฐเดฟเด• เดฒเดฏเดจเด™เตเด™เตพ เดจเดŸเดคเตเดคเดพเตป เด•เดดเดฟเดฏเตเด‚. เด…เดฏเตเดฏเต‹, เดžเด™เตเด™เดณเตเดŸเต† เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดฐเดฃเตเดŸเต เดถเดพเด–เด•เตพเด•เตเด•เตเด‚ เดซเดฏเดฒเดฟเตฝ เดฎเดคเตเดธเดฐ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตเดฃเตเดŸเต ci.md. เดˆ เดธเดพเดนเดšเดฐเตเดฏเด‚ เด’เดฐเต เดฒเดฏเดจ เดตเตˆเดฐเตเดฆเตเดงเตเดฏเด‚ เดŽเดจเตเดจเดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต, เดžเด™เตเด™เตพ เด‡เดคเต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฑเต€เดฌเต‡เดธเต เดšเต†เดฏเตเดฏเตเด•

เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด•

  • เด’เดฐเต เด…เดงเดฟเด• เดฒเดฏเดจ เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดค เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดตเตผเด•เตเด•เต เดšเดฐเดฟเดคเตเดฐเด‚ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.
    • เดถเดพเด–เด•เดณเตเดŸเต† เดฏเดฅเดพเตผเดคเตเดฅ เด•เดฎเตเดฎเดฟเดฑเตเดฑเตเด•เตพ เด…เดตเดฏเตเดŸเต† เดฏเดฅเดพเตผเดคเตเดฅ เดŸเตˆเด‚เดธเตเดฑเตเดฑเดพเดฎเตเดชเตเด•เดณเตเด‚ เดฐเดšเดฏเดฟเดคเดพเด•เตเด•เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.
    • เดฎเดพเดฑเตเดฑ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดšเตผเดšเตเดšเด•เดณเดฟเตฝ เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดคเด•เดณเตเดŸเต† SHA เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดตเดฏเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฒเดฟเด™เตเด•เตเด•เตพ.
  • เด’เดฑเตเดฑเดคเตเดคเดตเดฃ เดตเตˆเดฐเตเดฆเตเดงเตเดฏ เดชเดฐเดฟเดนเดพเดฐเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต.
  • เด•เดฅเดฏเต† เดจเต‹เตบ-เดฒเต€เดจเดฟเดฏเตผ เด†เด•เตเด•เตเดจเตเดจเต.
    • เดงเดพเดฐเดพเดณเด‚ เดถเดพเด–เด•เตพ (เดเดกเดฟเด‡ เด•เต‡เดฌเดฟเดณเดฟเดจเต† เด…เดจเตเดธเตเดฎเดฐเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต) เด•เดพเดฐเดฃเด‚ เด•เดฅ เดตเดพเดฏเดฟเด•เตเด•เดพเตป เดชเตเดฐเดฏเดพเดธเดฎเดพเดฃเต.
    • เดธเตเดตเดฏเดฎเต‡เดตเดฏเตเดณเตเดณ เดกเต€เดฌเด—เตเด—เดฟเด‚เด—เต เด•เต‚เดŸเตเดคเตฝ เดชเตเดฐเดฏเดพเดธเด•เดฐเดฎเดพเด•เตเด•เตเดจเตเดจเต, เด‰เดฆเดพ. 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.

๏ธ เดŸเดพเดธเตเด•เต: เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เด…เด‚เด—เต€เด•เดฐเดฟเด•เตเด•เตเด• "เด˜เดŸเตเดŸ เด…เดตเดฒเต‹เด•เดจเด‚"

  1. เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดคเตเดฑเด•เตเด•เตเด•.
  2. "เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด•" เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเด•.
  3. "เดฒเดฏเดจเด‚ เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฟเด•เตเด•เตเด•" เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด•.
  4. เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเตฝ "เดถเดพเด– เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•" เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเด•.

เด‡เดคเดพเดฃเต เด‡เดชเตเดชเต‹เตพ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดถเต‡เด–เดฐเด‚
เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเต‹เดŸเต†เดฏเตเดณเตเดณ เดธเดพเดงเดพเดฐเดฃ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เตพ

เด‰เตฝเดชเตเดชเดจเตเดจ เดชเดฟเดถเด•เต

"เดคเต†เดฑเตเดฑเตเด•เดณเตเดŸเต† เดธเดพเดจเตเดจเดฟเดงเตเดฏเด‚ เด•เดพเดฃเดฟเด•เตเด•เดพเตป เดŸเต†เดธเตเดฑเตเดฑเดฟเด‚เด—เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚, เดชเด•เตเดทเต‡ เด…เดตเดฏเตเดŸเต† เด…เดญเดพเดตเด‚ เด’เดฐเดฟเด•เตเด•เดฒเตเด‚ เด•เดพเดฃเดฟเด•เตเด•เดฐเตเดคเต" เดŽเดจเตเดจเต เดชเดฑเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต. เดžเด™เตเด™เตพเด•เตเด•เต เดชเดฐเดฟเดถเต‹เดงเดจเด•เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดŸเตเดŸเตเด‚ เด…เดตเตผ เดžเด™เตเด™เตพเด•เตเด•เต เดชเดฟเดถเด•เตเด•เดณเตŠเดจเตเดจเตเด‚ เด•เดพเดฃเดฟเดšเตเดšเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเดฒเตเด‚, เด’เดฐเต เดตเดžเตเดšเดจเดพเดชเดฐเดฎเดพเดฏ เดฌเด—เต เด‰เตฝเดชเตเดชเดพเดฆเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด•เดŸเดจเตเดจเต.

เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดจเดฎเตเดฎเตพ เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

  • เด‰เตฝเดชเดพเดฆเดจเดคเตเดคเดฟเตฝ เดŽเดจเตเดคเดพเดฃเต เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต;
  • เดคเตเดฐเต†เดกเดฟเดฒเต† เด•เต‹เดกเต master เด’เดฐเต เดชเดฟเดถเด•เต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เด…เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผเด•เตเด•เต เดชเตเดคเดฟเดฏ เดœเต‹เดฒเดฟ เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.

เดžเดพเตป เด…เดคเต เดชเดฟเตปเดตเดฒเดฟเด•เตเด•เดฃเต‹ เด…เดคเต‹ เด…เดŸเตเดคเตเดค เดชเดคเดฟเดชเตเดชเดฟเตฝ เดถเดฐเดฟเดฏเดพเด•เตเด•เดฃเต‹?

เดฑเต‹เดณเดฟเด‚เด—เต เดฌเดพเด•เตเด•เต เดŽเดจเตเดจเดคเต เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต เดจเดฒเตเดฒ เดฎเตเตป เดชเดคเดฟเดชเตเดชเต เดจเดฟเตผเดฎเตเดฎเดพเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดชเดฟเดถเด•เต เด‰เตพเด•เตเด•เตŠเดณเตเดณเตเดจเตเดจ เด•เดฎเตเดฎเดฟเดฑเตเดฑเตเด•เตพ เดชเดดเดฏเดชเดŸเดฟเดฏเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดพเดฃเต. "เดซเดฟเด•เตเดธเดฟเด‚เด—เต เดซเต‹เตผเดตเต‡เดกเต" เดŽเดจเตเดจเดคเต เด’เดฐเต เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเดฟเดจเตเดฑเต† เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เดฒเดพเดฃเต master เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เดŽเดคเตเดฐเดฏเตเด‚ เดตเต‡เด—เด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดกเต†เดฒเดฟเดตเดฑเดฟเดฏเตเด‚ เดจเดฒเตเดฒ เดŸเต†เดธเตเดฑเตเดฑเต เด•เดตเดฑเต‡เดœเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเตŠเดกเด•เตเดทเดจเดฟเดฒเต‡เด•เตเด•เต เด•เต‹เดกเต เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ API-เด•เดณเตเด‚ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเตเด•เต€เดฎเด•เดณเตเด‚ เดฎเดพเดฑเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดฑเต‹เตพ เดฌเดพเด•เตเด•เต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด…เดŸเตเดคเตเดค เดชเดคเดฟเดชเตเดชเดฟเตฝ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต‡เด•เตเด•เดพเตพ เดตเดณเดฐเต† เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเดณเตเดณเดคเตเด‚ เด…เดชเด•เดŸเด•เดฐเดตเตเดฎเดพเดฃเต.

เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เด’เดฐเต เดฑเดฟเดธเตโ€Œเด•เตเด‚ เดŽเดŸเตเด•เตเด•เดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เดžเด™เตเด™เตพ เดˆ เดตเดดเดฟ เดชเต‹เด•เตเด‚, โ€‹โ€‹เด•เดพเดฐเดฃเด‚ เด‡เดคเต เดžเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต

  • เด‰เตฝเดชเตเดชเดจเตเดจเดคเตเดคเดฟเดฒเต† เดชเดฟเดถเด•เต เดŽเดคเตเดฐเดฏเตเด‚ เดตเต‡เด—เด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเด•;
  • เด•เต‹เดกเต เด‰เดฃเตเดŸเดพเด•เตเด•เตเด• master เด’เดฐเต เดชเตเดคเดฟเดฏ เดœเต‹เดฒเดฟ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‰เดŸเดจเดŸเดฟ เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฃเต.

๏ธเดŸเดพเดธเตเด•เต

  1. เดฌเตเดฐเดพเดžเตเดšเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเด• master เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ
  2. เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเต‹เด•เตเด•เตฝ เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•.
  3. เดชเดฟเด†เตผ เดฒเดฏเดจ เด•เดฎเตเดฎเดฟเดฑเตเดฑเต เดชเดดเดฏเดชเดŸเดฟเดฏเดพเด•เตเด•เตเด• เด˜เดŸเตเดŸเด™เตเด™เดณเตเดŸเต† เด…เดตเดฒเต‹เด•เดจเด‚ ะฒ 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 เด’เดฐเต เดฒเดฏเดจ เด•เดฎเตเดฎเดฟเดฑเตเดฑเต เดชเตเดจเดƒเดธเตเดฅเดพเดชเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ "เดธเตเดจเต€เด•เตเด•เดฟ เดฌเด—เต" เดŽเดจเตเดจ เดตเดพเดšเด•เด‚ เดฎเต‡เดฒเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ.

CI เด˜เดŸเตเดŸเด™เตเด™เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต เดถเดฐเดฟเดฏเดพเด•เตเด•เดฟ เด…เดคเต เดฎเดพเดธเตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด•

เดžเด™เตเด™เตพ เดฌเตเดฐเดพเดžเตเดšเดฟเดจเตเดฑเต† เดฒเดฏเดจ เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดค เดชเต‚เตผเดฃเดฎเดพเดฏเตเด‚ เดชเดฟเตปเดตเดฒเดฟเดšเตเดšเต. feature. เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดชเตเดชเต‹เตพ เด’เดฐเต เดคเต†เดฑเตเดฑเตเด‚ เด‡เดฒเตเดฒ เดŽเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒ เดตเดพเตผเดคเตเดค master. เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจ เดจเดŸเดชเดŸเดฟเด•เดณเตเดŸเต† เดžเด™เตเด™เดณเตเดŸเต† เดตเดฟเดฒเดฏเต‡เดฑเดฟเดฏ เดฒเดฟเดธเตเดฑเตเดฑเตเด‚ เด‡เดฒเตเดฒเดพเดคเดพเดฏเดฟ เดŽเดจเตเดจเดคเดพเดฃเต เดฎเต‹เดถเด‚ เดตเดพเตผเดคเตเดค. เด…เดคเดฟเดจเดพเตฝ, เด†เดฆเตผเดถเดชเดฐเดฎเดพเดฏเดฟ, เดžเด™เตเด™เตพ เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดคเด•เตพเด•เตเด•เต เดชเดฐเดฟเดนเดพเดฐเด‚ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต feature เด…เดต เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เตเด• master เดถเดฐเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตŠเดชเตเดชเด‚.

เดจเดฎเตเด•เตเด•เต เดชเตเดฐเดถเตเดจเดคเตเดคเต† เดตเตเดฏเดคเตเดฏเดธเตเดค เดฐเต€เดคเดฟเด•เดณเดฟเตฝ เดธเดฎเต€เดชเดฟเด•เตเด•เดพเด‚:

  • เดฒเดฏเดจเดคเตเดคเต† เดชเดดเดฏเดชเดŸเดฟเดฏเดพเด•เตเด•เตเด• feature ั master;
  • เดฎเตเดฎเตเดชเดคเตเดคเต‡เดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดจเต€เด•เตเด•เด‚ feature.

เดตเตเดฏเดคเตเดฏเดธเตโ€Œเดค เดตเดฟเด•เดธเดจ เดŸเต€เดฎเตเด•เตพ เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ เดตเตเดฏเดคเตเดฏเดธเตโ€Œเดค เดธเดฎเต€เดชเดจเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดžเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดชเตเดฐเดฆเดฎเดพเดฏ เด•เดฎเตเดฎเดฟเดฑเตเดฑเตเด•เตพ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดฌเตเดฐเดพเดžเตเดšเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเด•เดฏเตเด‚ เดˆ เดชเตเดคเดฟเดฏ เดฌเตเดฐเดพเดžเตเดšเดฟเดจเดพเดฏเดฟ เดชเตเดฐเดคเตเดฏเต‡เด• เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

๏ธเดŸเดพเดธเตเด•เต

  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

เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•.

เด’เดฐเต เดถเต€เตผเดทเด•เด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• เดธเดตเดฟเดถเต‡เดทเดค เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเต... เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• feature-fix "เดคเดฒ เดถเดพเด–" เดชเต‹เดฒเต†เดฏเตเด‚ master "เดฌเต‡เดธเต เดฌเตเดฐเดพเดžเตเดšเต" เดชเต‹เดฒเต†.
เดชเดฐเดฟเดถเต‹เดงเดจเด•เตพ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเดจเตเดจเดคเตเดตเดฐเต† เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเด•. PR เดšเตผเดšเตเดšเดฏเตเดŸเต† เดšเตเดตเดŸเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŸเต†เดธเตเดฑเตเดฑเตเด•เดณเตเดŸเต† เดจเดฟเดฒ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚.

เดจเดฟเด™เตเด™เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด• master เด…เดตเดจเตเดฑเต† เดถเต‡เด–เดฐเด‚ เดซเต‹เตผเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด• เด’เดฐเต "เดฌเต‡เดธเต เดฌเตเดฐเดพเดžเตเดšเต" เดŽเดจเตเดจ เดจเดฟเดฒเดฏเดฟเตฝ, เด•เต‹เดดเตโ€Œเดธเต เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตเด•เดณเตเดŸเต† เดถเต‡เด–เดฐเดฃเดคเตเดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฎเดพเดฑเตเดฑเดคเตเดคเดฟเดจเตเดณเตเดณ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเต‹เดŸเต เดžเดพเตป เดชเตเดฐเดคเดฟเด•เดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ.

"เดธเดตเดฟเดถเต‡เดทเดค เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตฝ" เดŽเดจเตเดจ เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เด…เด‚เด—เต€เด•เดฐเดฟเด•เตเด•เตเด•

เดคเดฟเดฐเตเดคเตเดคเดฒเดฟเดจเต เดจเดจเตเดฆเดฟ! เดŽเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดฆเดฏเดตเดพเดฏเดฟ เด…เด‚เด—เต€เด•เดฐเดฟเด•เตเด•เตเด• master เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต.

๏ธเดŸเดพเดธเตเด•เต

  1. "เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เดฒเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเด•" เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเด•.
  2. "เดฒเดฏเดจเด‚ เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฟเด•เตเด•เตเด•" เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเตเด•.
  3. เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเตฝ "เดถเดพเด– เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•" เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเด•.

เดˆ เดจเดฟเดฎเดฟเดทเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เด‡เดคเดพเดฃเต.
เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดคเตเดคเต‹เดŸเต†เดฏเตเดณเตเดณ เดธเดพเดงเดพเดฐเดฃ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เตพ

เด…เดญเดฟเดจเดจเตเดฆเดจเด™เตเด™เตพ!

เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจ เดธเดฎเดฏเดคเตเดคเต เด†เดณเตเด•เตพ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดŽเดŸเตเด•เตเด•เตเดจเตเดจ เดŽเดฒเตเดฒเดพ เด˜เดŸเตเดŸเด™เตเด™เดณเตเด‚ เดจเดฟเด™เตเด™เตพ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟ.

เด•เต‹เดดเตโ€Œเดธเดฟเตฝ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เตพ เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดคเต เดŽเด™เตเด™เดจเต† เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดฎเต†เดจเตเดจเต เด…เดฑเดฟเดฏเดพเดฎเต‹, เดฆเดฏเดตเดพเดฏเดฟ เด’เดฐเต เดชเตเดฐเดถเตโ€Œเดจเด‚ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด• เด•เต‹เดดเตโ€Œเดธเต เดฎเต†เดฑเตเดฑเต€เดฐเดฟเดฏเดฒเตเด•เดณเตเดณเตเดณ เดถเต‡เด–เดฐเด™เตเด™เตพ. เดˆ เด•เต‹เดดเตเดธเตเด‚ เด‰เดฃเตเดŸเต เดธเด‚เดตเต‡เดฆเดจเดพเดคเตเดฎเด• เดชเดคเดฟเดชเตเดชเต GitHub เดฒเต‡เดฃเดฟเด‚เด—เต เดฒเดพเดฌเต เด’เดฐเต เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•