เชถเซเช เชคเชฎเซ เชเชฟเช เชเชฎเชพเชจเซเชกเซเชธ เชถเซเชเซเชฏเชพ เชเซ เชชเชฐเชเชคเซ เชเชฒเซเชชเชจเชพ เชเชฐเชตเชพ เชฎเชพเชเชเซ เชเซ เชเซ เชธเชคเชค เชเชเซเชเชฐเชฃ (CI) เชตเชพเชธเซเชคเชตเชฟเชเชคเชพเชฎเชพเช เชเซเชตเซ เชฐเซเชคเซ เชเชพเชฐเซเชฏ เชเชฐเซ เชเซ? เช เชฅเชตเชพ เชเชฆเชพเช เชคเชฎเซ เชคเชฎเชพเชฐเซ เชฆเซเชจเชฟเช เชชเซเชฐเชตเซเชคเซเชคเชฟเชเชจเซ เชเชชเซเชเชฟเชฎเชพเชเช เชเชฐเชตเชพ เชฎเชพเชเชเซ เชเซ? เช เชเซเชฐเซเชธ เชคเชฎเชจเซ GitHub เชฐเซเชชเซเชเซเชเชฐเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชธเชคเชค เชเชเซเชเชฐเชฃเชฎเชพเช เชตเซเชฏเชตเชนเชพเชฐเซ เชเซเชถเชฒเซเชฏ เชเชชเชถเซ. เช เชเซเชฐเซเชธเชจเซ เชนเซเชคเซ เชตเชฟเชเชพเชฐเซเชก เชฌเชจเชตเชพเชจเซ เชจเชฅเซ เชเซ เชเซเชจเชพ เชฆเซเชตเชพเชฐเชพ เชคเชฎเซ เชซเชเซเชค เชเซเชฒเชฟเช เชเชฐเซ เชถเชเซ; เชคเซเชจเชพเชฅเซ เชตเชฟเชชเชฐเชฟเชค, เชคเชฎเซ เชคเซ เช เชเซเชฐเชฟเชฏเชพเช เชเชฐเชถเซ เชเซ เชฒเซเชเซ เชเชฐเซเชเชฐ เชเชพเชฎ เชชเชฐ เชเชฐเซ เชเซ, เชคเซ เช เชฐเซเชคเซ เชคเซเช เชเชฐเซ เชเซ. เชคเชฎเซ เชธเชพเชฎเซเชฒ เชชเชเชฒเชพเชเชเชฎเชพเชเชฅเซ เชชเชธเชพเชฐ เชฅเชถเซ เชคเซเชฎ เชนเซเช เชธเชฟเชฆเซเชงเชพเชเชค เชธเชฎเชเชพเชตเซเชถ.
เชเชชเชฃเซ เชถเซเช เชเชฐเซเช?
เชเซเชฎ เชเซเชฎ เชเชชเชฃเซ เชชเซเชฐเชเชคเชฟ เชเชฐเซเชถเซเช เชคเซเชฎ, เช เชฎเซ เชงเซเชฎเซ เชงเซเชฎเซ เชฒเชพเชเซเชทเชฃเชฟเช CI เชชเชเชฒเชพเชเชเชจเซ เชธเซเชเชฟ เชฌเชจเชพเชตเซเชถเซเช, เชเซ เช เชธเซเชเชฟเชจเซ เชฏเชพเชฆ เชฐเชพเชเชตเชพเชจเซ เชเช เชธเชฐเชธ เชฐเซเชค เชเซ. เชฌเซเชเชพ เชถเชฌเซเชฆเซเชฎเชพเช เชเชนเซเช เชคเซ, เช เชฎเซ เชธเชคเชค เชเชเซเชเชฐเชฃ เชเชฐเชคเซ เชตเชเชคเซ, เชธเชคเชค เชเชเซเชเชฐเชฃ เชเชฐเชคเซ เชตเชเชคเซ เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเช เชฒเซเชคเซ เชเซเชฐเชฟเชฏเชพเชเชจเซ เชธเซเชเชฟ เชฌเชจเชพเชตเซเชถเซเช. เช เชฎเซ เช เชฎเชพเชฐเซ CI เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เชตเชพเชธเซเชคเชตเชฟเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เชจเชเซเช เชฒเชพเชตเชตเชพ เชฎเชพเชเซ เชชเชฐเซเชเซเชทเชฃเซเชจเชพ เชเช เชธเชฐเชณ เชธเซเชเชจเซ เชชเชฃ เชเชชเชฏเซเช เชเชฐเซเชถเซเช.
เช GIF เชฏเซเชเชจเชพเชเซเชฏ เชฐเซเชคเซ เชคเชฎเชพเชฐเชพ เชฐเชฟเชชเซเชเซเชเชฐเซเชฎเชพเช เชเชฎเชฟเชเซเชธเชจเซ เชฌเชคเชพเชตเซ เชเซ เชเชพเชฐเชฃ เชเซ เชคเชฎเซ เชเซเชฐเซเชธเชฎเชพเช เชเชเชณ เชตเชงเซ เชเซ. เชเซเชฎ เชคเชฎเซ เชเซเช เชถเชเซ เชเซ, เช เชนเซเช เชเชเช เชเชเชฟเชฒ เชจเชฅเซ เช เชจเซ เชฎเชพเชคเซเชฐ เชธเซเชฅเซ เชเชฐเซเชฐเซ เชเซ.
เชคเชฎเซ เชจเซเชเซเชจเชพ เชชเซเชฐเชฎเชพเชฃเชญเซเชค CI เชฆเซเชถเซเชฏเซเชฎเชพเชเชฅเซ เชชเชธเชพเชฐ เชฅเชถเซ:
- เชฒเชเซเชทเชฃ เชชเชฐ เชเชพเชฎ เชเชฐเซ;
- เชเซเชฃเชตเชคเซเชคเชพ เชธเซเชจเชฟเชถเซเชเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชธเซเชตเชเชพเชฒเชฟเชค เชชเชฐเซเชเซเชทเชฃเซเชจเซ เช เชฐเชเซ;
- เช เชเซเชฐเชคเชพ เชเชพเชฐเซเชฏเชจเซเช เช เชฎเชฒเซเชเชฐเชฃ;
- เชถเชพเชเชพเช เชฎเชฐเซเช เชเชฐเชคเซ เชตเชเชคเซ เชธเชเชเชฐเซเชทเชจเซเช เชจเชฟเชฐเชพเชเชฐเชฃ (เชฎเชฐเซเช เชธเชเชเชฐเซเชท);
- เชชเซเชฐเซเชกเชเซเชถเชจ เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซเชจเซเชเชฎเชพเช เชญเซเชฒ เชฅเชพเชฏ เชเซ.
เชคเชฎเซ เชถเซเช เชถเซเชเชถเซ?
เชคเชฎเซ เชจเซเชเซเชจเชพ เชชเซเชฐเชถเซเชจเซเชจเชพ เชเชตเชพเชฌ เชเชชเชตเชพ เชฎเชพเชเซ เชธเชฎเชฐเซเชฅ เชนเชถเซ:
- เชธเชคเชค เชเชเซเชเชฐเชฃ (CI) เชถเซเช เชเซ?
- CI เชฎเชพเช เชเชฏเชพ เชชเซเชฐเชเชพเชฐเชจเชพ เชธเซเชตเชเชพเชฒเชฟเชค เชชเชฐเซเชเซเชทเชฃเซเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เช เชจเซ เชคเซ เชเช เชเซเชฐเชฟเชฏเชพเช เชเซเชฐเชฟเชเชฐ เชฅเชพเชฏ เชเซ เชคเซเชจเชพ เชเชตเชพเชฌเชฎเชพเช?
- เชชเซเชฒ เชตเชฟเชจเชเชคเซเช เชถเซเช เชเซ เช เชจเซ เชคเซเชฎเชจเซ เชเซเชฏเชพเชฐเซ เชเชฐเซเชฐ เชเซ?
- เชเซเชธเซเช เชกเซเชฐเชฟเชตเชจ เชกเซเชตเชฒเชชเชฎเซเชจเซเช (TDD) เชถเซเช เชเซ เช เชจเซ เชคเซ CI เชธเชพเชฅเซ เชเซเชตเซ เชฐเซเชคเซ เชธเชเชฌเชเชงเชฟเชค เชเซ?
- เชถเซเช เชฎเชพเชฐเซ เชซเซเชฐเชซเชพเชฐเซเชจเซ เชฎเชฐเซเช เชเชฐเชตเซเช เชเซเชเช เช เชฅเชตเชพ เชฐเซเชฌเซเช เชเชฐเชตเซเช เชเซเชเช?
- เชฐเซเชฒ เชฌเซเช เชเชฐเซเช เชเซ เชชเชเซเชจเชพ เชตเชฐเซเชเชจเชฎเชพเช เช เซเช เชเชฐเซเช?
เชถเชฐเซเชเชคเชฎเชพเช เชฎเซเช เชฆเชฐเซเช เชเชเซเชฏเชพเช "เชชเซเชฒ เชตเชฟเชจเชเชคเซเช" เชเซเชตเซ เชตเชธเซเชคเซเชเชจเซ เช เชจเซเชตเชพเชฆ เชเชฐเซเชฏเซ, เชชเชฐเชเชคเซ เชชเชฐเชฟเชฃเชพเชฎเซ เชฎเซเช เชเซเชเซเชธเซเชเชฎเชพเช เชเชพเชเชกเชชเชฃเชจเซ เชกเชฟเชเซเชฐเซ เชเชเชพเชกเชตเชพ เชฎเชพเชเซ เชเซเชเชฒเซเช เชเชเซเชฏเชพเช เช เชเชเซเชฐเซเชเซเชฎเชพเช เชถเชฌเซเชฆเชธเชฎเซเชนเซ เชชเชฐเชค เชเชฐเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช. เชนเซเช เชเซเชเชฒเซเชเชตเชพเชฐ เช เชฆเซเชญเซเชค เชเซเชฐเชฟเชฏเชพเชชเชฆ "เชเชฎเชฟเช" เชจเซ เชเซเชฎ "เชชเซเชฐเซเชเซเชฐเชพเชฎเชฐ เชธเชฐเซเชเชฟเช" เชจเซ เชเชชเชฏเซเช เชเชฐเซเชถ เชเซเชฏเชพเช เชฒเซเชเซ เชเชฐเซเชเชฐ เชเชพเชฎ เชชเชฐ เชคเซเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ.
เชธเชคเชค เชเชเซเชเชฐเชฃ เชถเซเช เชเซ?
เชธเชคเชค เชเชเซเชเชฐเชฃ, เช เชฅเชตเชพ CI, เชเช เชคเชเชจเซเชเซ เชชเซเชฐเซเชเซเชเชฟเชธ เชเซ เชเซเชฎเชพเช เชฆเชฐเซเช เชเซเชฎเชจเชพ เชธเชญเซเชฏ เชคเซเชฎเชจเชพ เชเซเชกเชจเซ เชฆเชฟเชตเชธเชฎเชพเช เชเชเชพเชฎเชพเช เชเชเชพ เชเช เชตเชเชค เชเช เชธเชพเชฎเชพเชจเซเชฏ เชญเชเชกเชพเชฐเชฎเชพเช เชเชเซเชเซเชค เชเชฐเซ เชเซ, เช เชจเซ เชชเชฐเชฟเชฃเชพเชฎเซ เชเซเชก เชเชเชพเชฎเชพเช เชเชเซ เชญเซเชฒเซ เชตเชฟเชจเชพ เชฌเชพเชเชงเชตเซ เชเซเชเช.
เช เชถเชฌเซเชฆ เชตเชฟเชถเซ เชฎเชคเชญเซเชฆเซ เชเซ
เชตเชฟเชตเชพเชฆเชจเซ เชฎเซเชฆเซเชฆเซ เช เชเชเซเชเชฐเชฃเชจเซ เชเชตเชฐเซเชคเชจ เชเซ. เชเซเชเชฒเชพเช เชเชตเซ เชฆเชฒเซเชฒ เชเชฐเซ เชเซ เชเซ เชฆเชฟเชตเชธเชฎเชพเช เชฎเชพเชคเซเชฐ เชเช เช เชตเชพเชฐ เชเซเชก เชฎเชฐเซเช เชเชฐเชตเซ เช เชตเชพเชธเซเชคเชตเชฎเชพเช เชธเชคเชค เชเชเซเชเซเชค เชฅเชตเชพ เชฎเชพเชเซ เชชเซเชฐเชคเซเช เชจเชฅเซ. เชเช เชเซเชฎเชจเซเช เชเชฆเชพเชนเชฐเชฃ เชเชชเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชเซ เชเซเชฏเชพเช เชฆเชฐเซเช เชตเซเชฏเชเซเชคเชฟ เชธเชตเชพเชฐเซ เชคเชพเชเซ เชเซเชก เชฒเซ เชเซ เช เชจเซ เชธเชพเชเชเซ เชเชเชตเชพเชฐ เชคเซเชจเซ เชเชเซเชเซเชค เชเชฐเซ เชเซ. เช เชตเชพเชเชฌเซ เชตเชพเชเชงเซ เชนเซเชตเชพ เชเชคเชพเช, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชเชตเซเช เชฎเชพเชจเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชเซ เชฆเชฟเชตเชธเชฎเชพเช เชเชเชตเชพเชฐเชจเซ เชตเซเชฏเชพเชเซเชฏเชพ เชตเซเชฏเชพเชเชฌเซ เชฐเซเชคเซ เชตเซเชฏเชตเชนเชพเชฐเซ, เชตเชฟเชถเชฟเชทเซเช เช เชจเซ เชตเชฟเชตเชฟเชง เชเชฆเชจเซ เชเซเชฎเซ เชฎเชพเชเซ เชฏเซเชเซเชฏ เชเซ.
เชฌเซเชเซ เชตเชพเชเชงเซ เช เชเซ เชเซ C++ เช เชนเชตเซ เชตเชฟเชเชพเชธเชฎเชพเช เชตเชชเชฐเชพเชคเซ เชเชเชฎเชพเชคเซเชฐ เชญเชพเชทเชพ เชจเชฅเซ, เช เชจเซ เชฎเชพเชจเซเชฏเชคเชพเชจเชพ เชฎเชพเชฐเซเช เชคเชฐเซเชเซ เชญเซเชฒ-เชฎเซเชเซเชค เชเชธเซเชฎเซเชฌเชฒเซเชจเซ เชเชตเชถเซเชฏเชเชคเชพ เชจเชฌเชณเซ เชเซ. เชชเชฐเซเชเซเชทเชฃเซเชจเชพ เชเซเชเชฒเชพเช เชธเซเช (เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชธเซเชฅเชพเชจเชฟเช เชฐเซเชคเซ เชเชฒเชพเชตเชตเชพเชฎเชพเช เชเชตเชคเชพ เชเชเชฎ เชชเชฐเซเชเซเชทเชฃเซ) เชชเชฃ เชธเชซเชณเชคเชพเชชเซเชฐเซเชตเช เชชเซเชฐเซเชฃ เชฅเชตเชพ เชเซเชเช. เช เชเซเชทเชฃเซ, เชธเชฎเซเชฆเชพเชฏ เชเชจเซ เชเชฐเซเชฐเชฟเชฏเชพเชค เชฌเชจเชพเชตเชตเชพ เชคเชฐเชซ เชเชเชณ เชตเชงเซ เชฐเชนเซเชฏเซ เชเซ, เช เชจเซ เชญเชตเชฟเชทเซเชฏเชฎเชพเช "เชฌเชฟเชฒเซเชก + เชฏเซเชจเชฟเช เชชเชฐเซเชเซเชทเชฃเซ" เชเชฆเชพเช เชธเชพเชฎเชพเชจเซเชฏ เชชเซเชฐเชฅเชพ เชฌเชจเซ เชเชถเซ, เชเซ เชคเซ เชชเชนเซเชฒเชพเชฅเซ เชจเชฅเซ.
เชธเชคเชค เชเชเซเชเชฐเชฃ เชฅเซ เช เชฒเช เชธเชคเชค เชกเชฟเชฒเชฟเชตเชฐเซ (เชธเชคเชค เชกเชฟเชฒเชฟเชตเชฐเซ, เชธเซเชกเซ) เชเซเชฎเชพเช เชฆเชฐเซเช เชเชเซเชเชฐเชฃ เชเชเซเชฐ เชชเชเซ เชคเซเชจเซ เชฐเชฟเชฒเซเช เชเชฎเซเชฆเชตเชพเชฐเชจเซ เชเชฐเซเชฐ เชจเชฅเซ.
เชชเชเชฒเชพเชเชเชจเซ เชธเซเชเชฟ เชเซเชจเซ เช เชฎเซ เชธเชฎเชเซเชฐ เช เชญเซเชฏเชพเชธเชเซเชฐเชฎ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชเชชเชฏเซเช เชเชฐเซเชถเซเช
- เชจเชตเซเชจเชคเชฎ เชเซเชก เชเซเชเชเซ. เชฅเซ เชถเชพเชเชพ เชฌเชจเชพเชตเซ
master
. เชเชพเชฎ เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ. - เชคเชฎเชพเชฐเซ เชจเชตเซ เชถเชพเชเชพ เชชเชฐ เชเชฎเชฟเช เชฌเชจเชพเชตเซ. เชธเซเชฅเชพเชจเชฟเช เชฐเซเชคเซ เชฌเชจเชพเชตเซ เช เชจเซ เชชเชฐเซเชเซเชทเชฃ เชเชฐเซ. เชชเชพเชธ? เชเชเชฒเชพ เชชเชเชฒเชพ เชชเชฐ เชเชพเช. เชจเชฟเชทเซเชซเชณ? เชญเซเชฒเซ เช เชฅเชตเชพ เชชเชฐเซเชเซเชทเชฃเซเชจเซ เช เซเช เชเชฐเซ เช เชจเซ เชซเชฐเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ.
- เชคเชฎเชพเชฐเชพ เชฐเชฟเชฎเซเช เชฐเชฟเชชเซเชเซเชเชฐเซ เช เชฅเชตเชพ เชฐเชฟเชฎเซเช เชฌเซเชฐเชพเชจเซเช เชชเชฐ เชฆเชฌเชพเชฃ เชเชฐเซ.
- เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชฌเชจเชพเชตเซ. เชซเซเชฐเชซเชพเชฐเซเชจเซ เชเชฐเซเชเชพ เชเชฐเซ, เชเชฐเซเชเชพ เชเชพเชฒเซ เชฐเชนเซ เชคเซเชฎ เชตเชงเซ เชเชฎเชฟเช เชเชฎเซเชฐเซ. เชซเซเชเชฐ เชฌเซเชฐเชพเชจเซเช เชชเชฐ เชเซเชธเซเช เชชเชพเชธ เชเชฐเชพเชตเซ.
- เชฎเชพเชธเซเชเชฐ เชคเชฐเชซเชฅเซ เชฎเชฐเซเช/เชฐเซเชฌเซเชธ เชเชฎเชฟเช. เชฎเชฐเซเช เชชเชฐเชฟเชฃเชพเชฎ เชชเชฐ เชชเชฐเซเชเซเชทเชฃเซ เชชเชพเชธ เชเชฐเซ.
- เชธเซเชตเชฟเชงเชพ เชถเชพเชเชพเชฅเซ เชเชคเซเชชเชพเชฆเชจ เชธเซเชงเซ เชเชฎเชพเชตเช เชเชฐเซ.
- เชเซ เช เชฎเซเช เชธเชฎเชฏเชเชพเชณเชพ เชฎเชพเชเซ เชเชคเซเชชเชพเชฆเชจเชฎเชพเช เชฌเชงเซเช เชธเชพเชฐเซเช เชนเซเชฏ, เชคเซ เชซเซเชฐเชซเชพเชฐเซเชจเซ เชฎเชพเชธเซเชเชฐเชฎเชพเช เชฎเชฐเซเช เชเชฐเซ.
๏ธ เชคเซเชฏเชพเชฐเซ
เชเชพเชคเชฐเซ เชเชฐเซ เชเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เชฏเซเชเซเชฏ เชธเซเชซเซเชเชตเซเชฐ เชเซ
เช เชเซเชฐเซเชธ เชฒเซเชตเชพ เชฎเชพเชเซ เชคเชฎเชพเชฐเซ เชเชฐเซเชฐ เชชเชกเชถเซ
เชคเชฎเซ เชเซเชเชชเชฃ Git เชเซเชฒเชพเชฏเชเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ, เชชเชฐเชเชคเซ เชนเซเช เชซเชเซเชค เชเชฆเซเชถ เชตเชพเชเซเชฏ เชฎเชพเชเซ เชเชฆเซเชถเซ เชชเซเชฐเชฆเชพเชจ เชเชฐเซเชถ.
เชเชพเชคเชฐเซ เชเชฐเซ เชเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เชเชฟเช เชเซเชฒเชพเชฏเชจเซเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชฒเซเช เชเซ เชเซ เชเชฎเชพเชจเซเชก เชฒเชพเชเชจเชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ
เชเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เชนเชเซ เชธเซเชงเซ เชเชฎเชพเชจเซเชก เชฒเชพเชเชจเชจเซ เชธเชชเซเชฐเซเช เชเชฐเชคเซเช เชเชฟเช เชเซเชฒเชพเชฏเชเช เชจเชฅเซ, เชคเซ เชคเชฎเซ เชเชจเซเชธเซเชเซเชฒเซเชถเชจ เชธเซเชเชจเชพเช เชถเซเชงเซ เชถเชเซ เชเซ
เชฐเซเชชเซเชเซเชเชฐเซ เชคเซเชฏเชพเชฐ เชเชฐเซ
เชคเชฎเชพเชฐเซ เชตเซเชฏเชเซเชคเชฟเชเชค เชจเชเชฒ (เชซเซเชฐเซเช) เชฌเชจเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ
เชฅเช เชเชฏเซเช? เชเซ เชคเชฎเซ เชกเชฟเชซเซเชฒเซเช เชธเซเชเชฟเชเชเซเชธ เชฌเชฆเชฒเซเชฏเชพ เชจเชฅเซ, เชคเซ เชคเชฎเชพเชฐเชพ เชเซเชฐเซเชธ เชฐเชฟเชชเซเชเซเชเชฐเซเชจเซ เชฎเซเชเซ เชญเชพเชเซ เชเชนเซเชตเชพเชฎเชพเช เชเชตเซ เชเซ continuous-integration-team-scenarios-students
, เชคเซ เชคเชฎเชพเชฐเชพ GitHub เชเชเชพเชเชจเซเชเชฎเชพเช เชธเซเชฅเชฟเชค เชเซ เช
เชจเซ URL เชเชจเชพ เชเซเชตเซเช เชฆเซเชเชพเชฏ เชเซ
https://github.com/<ะฒะฐัะต ะธะผั ะฟะพะปะทะพะฒะฐัะตะปั ะฝะฐ GitHub>/continuous-integration-team-scenarios-students
เชนเซเช เชซเชเซเชค เช เชธเชฐเชจเชพเชฎเซ เชเซเชฒ เชเชฐเซเชถ <URL ัะตะฟะพะทะธัะพัะธั>
.
เชเซเชตเชพ เชเซเชฃ เชเซเชเชธ
<ััั>
เชคเซเชจเซ เช เชฐเซเชฅ เช เชฅเชถเซ เชเซ เชคเชฎเชพเชฐเซ เชฏเซเชเซเชฏ เชฎเซเชฒเซเชฏ เชธเชพเชฅเซ เชเชตเชพ เช เชญเชฟเชตเซเชฏเชเซเชคเชฟเชจเซ เชฌเชฆเชฒเชตเซ เชเชตเชถเซเชฏเช เชเซ.
เชคเซ เชชเชพเชเซเช เชเชฐเซ เชฒเซ 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
, เชเชพเชฎ เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ
- เชฅเซ เชเซเชฐเซเชธ เชฐเซเชชเซเชเซเชเชฐเซ เชเซเชฒเซเชจ เชเชฐเซ
<URL ัะตะฟะพะทะธัะพัะธั>
. - เชเชฒเชพเชตเซ
npm install
เชเซเชฐเซเชธ เชฐเซเชชเซเชเซเชเชฐเซ เชกเชฟเชฐเซเชเซเชเชฐเซเชฎเชพเช; เช เชฎเชจเซ เชเซเชธเซเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเซเชจเซ เชเชฐเซเชฐ เชเซ, เชเซเชจเซ เชเชชเชฏเซเช เช เชฎเซ เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซ เชเชฐเซเช เชเซเช. - เชเช เชถเชพเชเชพ เชฌเชจเชพเชตเซ เช
เชจเซ เชคเซเชจเซเช เชจเชพเชฎ เชเชชเซ
feature
. เช เชฅเซเชฐเซเชก เชชเชฐ เชธเซเชตเชฟเช เชเชฐเซ. -
เชฎเชพเช เชเซเชธเซเช เชเซเชก เชเชฎเซเชฐเซ
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); });
- เชซเชพเชเชฒเชฎเชพเช เชชเซเชฐเชฅเชฎ 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
. เชคเซ เชชเชเซ, เชเชพเชฒเซ เชเชฎเชฟเช เชชเชฐ เช
เชฎเชพเชฐเชพ เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซ เชเชฟเช เชนเซเช เชเชฎเซเชฐเซเช. เชคเซเชฏเชพเช เชเช เชเซเช เชเซ: เชเชฟเช เชนเซเชเซเชธเชจเซ เชญเชเชกเชพเชฐเชจเซ เชญเชพเช เชฎเชพเชจเชตเชพเชฎเชพเช เชเชตเชคเซ เชจเชฅเซ เช
เชจเซ เชคเซเชฅเซ เชฌเชพเชเซเชจเซ เชเซเชฐเซเชธ เชธเชพเชฎเชเซเชฐเซ เชธเชพเชฅเซ เชเชฟเชเชนเชฌเชฎเชพเชเชฅเซ เชเซเชฒเซเชจ เชเชฐเซ เชถเชเชพเชคเซเช เชจเชฅเซ. เชนเซเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเชฎเชพเชฐเซ เชเชฒเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ install_hook.sh
เช
เชฅเชตเชพ เชซเชพเชเชฒเชจเซ เชจเชเชฒ เชเชฐเซ repo/hooks/pre-commit
เชธเซเชฅเชพเชจเชฟเช เชกเชฟเชฐเซเชเซเชเชฐเซเชฎเชพเช .git/hooks/
.
เชเซเชฏเชพเชฐเซ เชคเชฎเซ เชเชฎเชฟเช เชเชฐเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชคเชฎเซ เชเซเชถเซ เชเซ เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ เช
เชจเซ เชคเซเช เชธเซเชเชฟเชฎเชพเช เชเซเชเซเชเชธ เชเซเชตเชฐเซเชกเซเชธ เชนเชพเชเชฐ เชเซ เชเซ เชเซเชฎ เชคเซ เชเซเชตเชพ เชฎเชพเชเซ เชคเชชเชพเชธ เชเชฐเซ เชเซ.
- เชเชฆเซเชถ เชเชฒเชพเชตเซเชจเซ เชฎเซเชจเซเชฏเซเช
เชฒเซ เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเซ
npm test
เชคเชฎเชพเชฐเชพ เชเซเชฐเซเชธ เชฐเชฟเชชเซเชเซเชเชฐเซ เชซเซเชฒเซเชกเชฐเชฎเชพเช. เชเชเชพเชธเซ เชเซ เชชเชฐเซเชเซเชทเชฃเซ เชชเซเชฐเซเชฃ เชฅเช เชเชฏเชพ เชเซ. - เชฆเซเชกเซเชจเซ เชเชฎเชฟเช เชนเซเช (เชชเซเชฐเซ-เชเชฎเชฟเช เชนเซเช) เชธเซเช เชเชฐเซ
install_hook.sh
. - เชคเชฎเชพเชฐเชพ เชธเซเชฅเชพเชจเชฟเช เชฐเซเชชเซเชเซเชเชฐเซเชฎเชพเช เชคเชฎเชพเชฐเชพ เชซเซเชฐเชซเชพเชฐเซ เชฎเซเชเชฒเซ.
- เชเชพเชคเชฐเซ เชเชฐเซ เชเซ เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพ เชชเชนเซเชฒเชพเช เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เช เชชเชเชฒเชพเชเชจเซ เช
เชจเซเชธเชฐเซเชฏเชพ เชชเชเซ เชคเชฎเชพเชฐเซเช เชญเชเชกเชพเชฐ เชเชจเชพ เชเซเชตเซเช เชฆเซเชเชพเชตเซเช เชเซเชเช.
เชเซเชฎเซเชกเซ
# ะฃััะฐะฝะพะฒะธัะต 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 เชชเชฐ เชเชชเชจ เชธเซเชฐเซเชธ เชชเซเชฐเซเชเซเชเซเชเซเชธเชฎเชพเช เชตเชชเชฐเชพเชฏ เชเซ. เชคเซเชจเซ เชเชชเชฏเซเช เชฎเชพเชฐเชพ เชเชกเชตเชพเชจเซเชธ เชเซเชฐเซเชธเชฎเชพเช เชชเชฃ เชฅเชพเชฏ เชเซ [เชเซเชฎ เชตเชฐเซเช เช
เชจเซ เชธเซเชเช เชตเชฟเชฅ เชเชฟเช] (
http://devops.redpill.solutions/ ). - เชฌเซเชเซ เช
เชญเชฟเชเชฎ เช เชเซ เชเซ เชฎเชพเชคเซเชฐ เชเช เชฐเชฟเชฎเซเช เชฐเชฟเชชเซเชเซเชเชฐเซเชจเซ เชเชชเชฏเซเช เชเชฐเชตเซ เช
เชจเซ เชฎเชพเชคเซเชฐ เชถเชพเชเชพเชจเซ เชเชฃเชคเชฐเซ เชเชฐเชตเซ
master
เชตเชนเซเชเชเชพเชฏเซเชฒ เชญเชเชกเชพเชฐ "เชธเชเชฐเชเซเชทเชฟเชค". เช เชฆเซเชถเซเชฏเชฎเชพเช, เชตเซเชฏเชเซเชคเชฟเชเชค เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเช เชคเซเชฎเชจเชพ เชเซเชกเชจเซ เชฐเชฟเชฎเซเช เชฐเชฟเชชเซเชเซเชเชฐเซเชจเซ เชถเชพเชเชพเชเชฎเชพเช เชชเซเชฐเชเชพเชถเชฟเชค เชเชฐเซ เชเซ เชเซเชฅเซ เชเชฐเซเชจเซ เช เชจเซเชฏ เชฒเซเชเซ เช เชเซเชกเชจเซ เชเซเช เชถเชเซ, เชเซ เชฌเชงเซเช เชตเซเชฏเชตเชธเซเชฅเชฟเชค เชนเซเชฏ, เชคเซ เชคเซเชจเซ เชธเชพเชฅเซ เชฎเชฐเซเช เชเชฐเซmaster
เชตเชนเซเชเชเชพเชฏเซเชฒ เชฐเซเชชเซเชเซเชเชฐเซ.
เช เชเซเชเซเชเชธ เชเซเชฐเซเชธเชฎเชพเช, เช เชฎเซ เชตเชฐเซเชเชซเซเชฒเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช เชเซ เชถเชพเชเชพเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ.
เชเชพเชฒเซ เช เชฎเชพเชฐเซ เชเซเชก เชชเซเชฐเชเชพเชถเชฟเชค เชเชฐเซเช.
๏ธเชเชพเชธเซเช
- เชคเชฎเชพเชฐเซ เชเชพเชฐเซเชฏเชเชพเชฐเซ เชถเชพเชเชพเชจเชพ เชจเชพเชฎเชจเชพ เช เชจเชพเชฎ เชธเชพเชฅเซ เชฆเซเชฐเชธเซเชฅ เชถเชพเชเชพเชฎเชพเช เชซเซเชฐเชซเชพเชฐเซ เชชเซเชฐเชเชพเชถเชฟเชค เชเชฐเซ
เชเซเชฎเซเชกเซ
git push --set-upstream origin feature
เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชฌเชจเชพเชตเซ
เชถเซเชฐเซเชทเช เชธเชพเชฅเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชฌเชจเชพเชตเซ เชชเชเชฒเชพเช เชธเชฎเซเชเซเชทเชพ. เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ feature
เชเซเชฎ เชเซ "เชนเซเชก เชฌเซเชฐเชพเชจเซเช" เช
เชจเซ master
เชเซเชฎ เชเซ "เชเชงเชพเชฐ เชถเชพเชเชพ".
เชเชพเชคเชฐเซ เชเชฐเซ เชเซ เชคเชฎเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชฏเซเช เชเซ
master
เชคเซเชจเชพ เชฎเชพเช เชฐเชฟเชชเซเชเซเชเชฐเซเชจเซ เชซเซเชฐเซเช เชเชฐเซ "เชฌเซเช เชฌเซเชฐเชพเชจเซเช" เชคเชฐเซเชเซ, เชนเซเช เชเซเชฐเซเชธ เชฎเชเชฟเชฐเชฟเชฏเชฒ เชฐเชฟเชชเซเชเซเชเชฐเซเชฎเชพเช เชซเซเชฐเชซเชพเชฐ เชฎเชพเชเซเชจเซ เชตเชฟเชจเชเชคเซเชเชจเซ เชเชตเชพเชฌ เชเชชเซเชถ เชจเชนเซเช.
GitHub เชญเชพเชทเชพเชฎเชพเช, "เชเชงเชพเชฐ เชถเชพเชเชพ" เช เชถเชพเชเชพ เชเซ เชเซเชจเชพ เชชเชฐ เชคเชฎเซ เชคเชฎเชพเชฐเชพ เชเชพเชฐเซเชฏเชจเซ เชเชงเชพเชฐ เชเชชเซ เชเซ, เช เชจเซ "เชนเซเชก เชฌเซเชฐเชพเชจเซเช" เช เชธเซเชเชฟเชค เชซเซเชฐเชซเชพเชฐเซ เชงเชฐเชพเชตเชคเซ เชถเชพเชเชพ เชเซ.
เชซเซเชฐเชซเชพเชฐเซเชจเซ เชเชฐเซเชเชพ เชเชฐเซ, เชเชฐเซเชเชพ เชเชพเชฒเซ เชฐเชนเซ เชคเซเชฎ เชจเชตเซ เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพเช เชเชฎเซเชฐเซ
เชชเซเชฒ เชตเชฟเชจเชเชคเซ (PR)
เชชเซเชฒ เชตเชฟเชจเชเชคเซ (PR) เชเซเชกเชจเซ เชเชฐเซเชเชพ เชเชฐเชตเชพเชจเซ เช เชจเซ เชฆเชธเซเชคเชพเชตเซเชเซเชเชฐเชฃ เชเชฐเชตเชพเชจเซ เชคเซเชฎเช เชเซเชกเชจเซ เชธเชฎเซเชเซเชทเชพ เชเชฐเชตเชพเชจเซ เชฐเซเชค เชเซ. เชชเซเชฒ เชตเชฟเชจเชเชคเซเชเชจเซ เชเชเชเชฆเชฐ เชเซเชกเชฎเชพเช เชตเซเชฏเชเซเชคเชฟเชเชค เชซเซเชฐเชซเชพเชฐเซเชจเซ เชเชเซเชเซเชค เชเชฐเชตเชพเชจเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเชจเชพ เชจเชพเชฎ เชชเชฐเชฅเซ เชจเชพเชฎ เชเชชเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชเซ. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, เชตเซเชฏเชเซเชคเชฟ เชชเซเชฐเซเชเซเชเซเชเชจเชพ เชฐเชฟเชฎเซเช เชเชซเชฟเชถเชฟเชฏเชฒ เชฐเชฟเชชเซเชเซเชเชฐเซเชจเซ เชเซเชฒเซเชจ เชเชฐเซ เชเซ เช เชจเซ เชเซเชก เชชเชฐ เชธเซเชฅเชพเชจเชฟเช เชฐเซเชคเซ เชเชพเชฎ เชเชฐเซ เชเซ. เช เชชเชเซ, เชคเซ เชเซเชกเชจเซ เชคเซเชจเซ เช เชเชเชค เชฐเซเชฎเซเช เชฐเซเชชเซเชเซเชเชฐเซเชฎเชพเช เชฎเซเชเซ เชเซ เช เชจเซ เชธเชคเซเชคเชพเชตเชพเชฐ เชฐเซเชชเซเชเซเชเชฐเซ เชฎเชพเชเซ เชเชตเชพเชฌเชฆเชพเชฐ เชฒเซเชเซเชจเซ เชเชชเชพเชกเชตเชพเชจเซเช เชเชนเซ เชเซ(เชเซเชเชเซ) เชคเซเชจเซ เชเซเชก เชคเซเชฎเชจเซ เชธเซเชฅเชพเชจเชฟเช เชฐเชฟเชชเซเชเซเชเชฐเซเชเชฎเชพเช เชเซ, เชเซเชฏเชพเช เชคเซเช เชธเชฎเซเชเซเชทเชพ เชเชฐเซ เชเซ เช เชจเซ เชธเชเชญเชตเชคเช เชธเชเชเชฒเชฟเชค เชเชฐเซ เชเซ(เชฎเชฐเซเช เชเชฐเซ) เชคเซเชจเชพ. เช เชเซเชฏเชพเชฒ เช เชจเซเชฏ เชจเชพเชฎเซเชฅเซ เชชเชฃ เชเชณเชเชพเชฏ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชฎเชฐเซเช เชเชฐเชตเชพเชจเซ เชตเชฟเชจเชเชคเซ.
เชคเชฎเชพเชฐเซ เชเชฐเซเชเชฐ GitHub เช เชฅเชตเชพ เชธเชฎเชพเชจ เชชเซเชฒเซเชเชซเซเชฐเซเชฎเชจเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชธเซเชตเชฟเชงเชพเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชจเชฅเซ. เชกเซเชตเชฒเชชเชฎเซเชจเซเช เชเซเชฎเซ เชธเชพเชฎ-เชธเชพเชฎเซ เชธเชเชเชพเชฐ, เชตเซเชเชธ เชเซเชฒเซเชธ เช เชฅเชตเชพ เชเชฎเซเชเชฒ เชธเชนเชฟเชค เชธเชเชเชพเชฐเชจเซ เช เชจเซเชฏ เชชเชฆเซเชงเชคเชฟเชเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชถเชเซ เชเซ, เชชเชฐเชเชคเซ เชซเซเชฐเชฎ-เชถเซเชฒเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชนเชเซ เชชเชฃ เชเชฃเชพ เชเชพเชฐเชฃเซ เชเซ. เช เชนเซเช เชคเซเชฎเชพเชเชฅเซ เชเซเชเชฒเชพเช เชเซ:
- เชเซเชเซเชเชธ เชเซเชก เชซเซเชฐเชซเชพเชฐเซ เชธเชเชฌเชเชงเชฟเชค เชธเชเชเช เชฟเชค เชเชฐเซเชเชพเช;
- เชเชเซเชเซเชธเซเชเชฐเซเชธ เช เชจเซ เชธเชพเชฅเซเชฆเชพเชฐเซ เชฌเชเชจเซ เชคเชฐเชซเชฅเซ เชตเชฐเซเช-เชเชจ-เชชเซเชฐเซเชเซเชฐเซเชธ เชชเชฐ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชเซเชตเชพ เชฎเชพเชเซเชจเชพ เชธเซเชฅเชณ เชคเชฐเซเชเซ;
- เชเซเชก เชธเชฎเซเชเซเชทเชพเชเชจเซเช เชเชชเชเชพเชฐเชฟเชเชเชฐเชฃ;
- เชเซเชฅเซ เชชเชเซเชฅเซ เชคเชฎเซ เชเซเชกเชจเชพ เช เช เชฅเชตเชพ เชคเซ เชญเชพเช เชชเชพเชเชณเชจเชพ เชเชพเชฐเชฃเซ เช เชจเซ เชตเชฟเชเชพเชฐเชฃเชพเช เชถเซเชงเซ เชถเชเซ.
เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชเซเชฏเชพเชฐเซ เชคเชฎเชพเชฐเซ เชเซเช เชตเชพเชคเชจเซ เชเชฐเซเชเชพ เชเชฐเชตเชพเชจเซ เช เชฅเชตเชพ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชฎเซเชณเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชนเซเชฏ เชคเซเชฏเชพเชฐเซ เชคเชฎเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชฌเชจเชพเชตเซ เชเซ. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเซ เชคเชฎเซ เชเชตเซ เชธเซเชตเชฟเชงเชพ เชชเชฐ เชเชพเชฎ เชเชฐเซ เชฐเชนเซเชฏเชพเช เชเซ เชเซ เชเซ เชเช เชเชฐเชคเชพเช เชตเชงเซ เชฐเซเชคเซ เช เชฎเชฒเชฎเชพเช เชเชตเซ เชถเชเซ, เชคเซ เชคเชฎเซ เชคเชฎเชพเชฐเชพ เชตเชฟเชเชพเชฐเซเชจเซ เชถเซเชฐ เชเชฐเชตเชพ เช เชจเซ เชคเชฎเชพเชฐเชพ เชธเชนเชฏเซเชเซเช เชธเชพเชฅเซ เชคเชฎเชพเชฐเซ เชฏเซเชเชจเชพเชเชจเซ เชเชฐเซเชเชพ เชเชฐเชตเชพ เชฎเชพเชเซ เชเซเชกเชจเซ เชชเซเชฐเชฅเชฎ เชฒเชพเชเชจ เชฒเชเชคเชพ เชชเชนเซเชฒเชพ เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชฌเชจเชพเชตเซ เชถเชเซ เชเซ. เชเซ เชเชพเชฐเซเชฏ เชธเชฐเชณ เชนเซเชฏ, เชคเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชเซเชฒเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชเซเชฏเชพเชฐเซ เชเชเชเช เชชเชนเซเชฒเซเชฅเซ เช เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชนเซเชฏ, เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เชนเซเชฏ เช เชจเซ เชเชฐเซเชเชพ เชเชฐเซ เชถเชเชพเชฏ. เชเซเชเชฒเซเช เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชเชฎเชพเช, เชคเชฎเซ เชเซเชฃเชตเชคเซเชคเชพ เชจเชฟเชฏเชเชคเซเชฐเชฃเชจเชพ เชเชพเชฐเชฃเซเชธเชฐ PR เชเซเชฒเชตเชพ เชฎเชพเชเซ เชถเชเซ เชเซ: เชธเซเชตเชฏเชเชธเชเชเชพเชฒเชฟเชค เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเชตเชพ เช เชฅเชตเชพ เชเซเชก เชธเชฎเซเชเซเชทเชพเช เชถเชฐเซ เชเชฐเชตเชพ. เชคเชฎเซ เชเซ เชชเชฃ เชจเชเซเชเซ เชเชฐเซ เชเซ, เชคเชฎเชพเชฐเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซเชฎเชพเช เชคเชฎเซ เชเซเชฎเชจเซ เชฎเชเชเซเชฐเซ เชเชเซเชเซ เชเซ เชคเซ เชฒเซเชเซเชจเซ @ เชเชฒเซเชฒเซเช เชเชฐเชตเชพเชจเซเช เชญเซเชฒเชถเซ เชจเชนเซเช.
เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, PR เชฌเชจเชพเชตเชคเซ เชตเชเชคเซ, เชคเชฎเซ เชจเซเชเซเชจเชพ เชเชฐเซ เชเซ.
- เชธเซเชเชตเซ เชเซ เชคเชฎเซ เชถเซเช เชฌเชฆเชฒเชตเชพเชจเซ เชชเซเชฐเชธเซเชคเชพเชต เชฎเซเชเซเชฏเซ เชเซ เช เชจเซ เชเซเชฏเชพเช.
- เชซเซเชฐเชซเชพเชฐเซเชจเซ เชนเซเชคเซ เชธเชฎเชเชพเชตเชคเซเช เชตเชฐเซเชฃเชจ เชฒเชเซ. เชคเชฎเซ เชเชเซเชเซ เชถเชเซ เชเซ:
- เชเซเชกเชฎเชพเชเชฅเซ เชธเซเชชเชทเซเช เชจ เชนเซเชฏ เชคเซเชตเซ เชเซเช เชชเชฃ เช เชเชคเซเชฏเชจเซ เชตเชธเซเชคเซ เช เชฅเชตเชพ เชธเชเชฆเชฐเซเชญเชจเซ เชธเชฎเชเชตเชพ เชฎเชพเชเซ เชเชชเชฏเซเชเซ เชเชเชเช เชเชฎเซเชฐเซ, เชเซเชฎ เชเซ เชธเชเชฌเชเชงเชฟเชค #เชฌเชเซเชธ เช เชจเซ เชเชฎเชฟเช เชจเชเชฌเชฐเซเชธ;
- เชคเชฎเซ เชเซเชจเซ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเชเซ เชเซ เชคเซ เชเซเชเชชเชฃเชจเซ @เชเชฒเซเชฒเซเช เชเชฐเซ, เช เชฅเชตเชพ เชคเชฎเซ เชชเชเซเชฅเซ เชเชฟเชชเซเชชเชฃเซเชเชฎเชพเช เชคเซเชฎเชจเซ @เชเชฒเซเชฒเซเช เชเชฐเซ เชถเชเซ เชเซ;
- เชธเชนเชเชพเชฐเซเชฏเชเชฐเซเชจเซ เชเซเช เชฌเชพเชฌเชคเชฎเชพเช เชฎเชฆเชฆ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชนเซ เช เชฅเชตเชพ เชเซเชเซเชเชธ เชเชเชเช เชคเชชเชพเชธเซ.
เชเชเชตเชพเชฐ เชคเชฎเซ PR เชเซเชฒเซ เชชเชเซ, เชเชตเชพ เชเชฟเชธเซเชธเชพเชเชฎเชพเช เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซ เชเซเช เชตเซเชฒ เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เช เชฎเชพเชฐเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เช เชคเซ เช เชชเชฐเซเชเซเชทเชฃเซเชจเซ เชธเชฎเซเชน เชนเชถเซ เชเซ เช เชฎเซ เชธเซเชฅเชพเชจเชฟเช เชฐเซเชคเซ เชเชฒเชพเชตเซเชฏเชพ เชนเชคเชพ, เชชเชฐเชเชคเซ เชตเชพเชธเซเชคเชตเชฟเช เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชตเชงเชพเชฐเชพเชจเชพ เชชเชฐเซเชเซเชทเชฃเซ เช เชจเซ เชคเชชเชพเชธเซ เชนเซเช เชถเชเซ เชเซ.
เชชเชฐเซเชเซเชทเชฃเซ เชชเซเชฐเซเชฃ เชฅเชพเชฏ เชคเซเชฏเชพเช เชธเซเชงเซ เชเซเชชเชพ เชเชฐเซเชจเซ เชฐเชพเชน เชเซเช. เชคเชฎเซ GitHub เชเชจเซเชเชฐเชซเซเชธเชฎเชพเช PR เชเชฐเซเชเชพเชจเชพ เชคเชณเชฟเชฏเซ เชชเชฐเซเชเซเชทเชฃเซเชจเซ เชธเซเชฅเชฟเชคเชฟ เชเซเช เชถเชเซ เชเซ. เชเซเชฏเชพเชฐเซ เชชเชฐเซเชเซเชทเชฃเซ เชชเซเชฐเซเชฃ เชฅเชพเชฏ เชคเซเชฏเชพเชฐเซ เชเชพเชฒเซ เชฐเชพเชเซ.
๏ธ CI เชชเชเชฒเชพเชเชเชจเซ เชธเซเชเชฟเชจเซ เชฐเซเชจเซเชกเชฎเชจเซเชธ เชตเชฟเชถเซ เชจเซเชเชง เชเชฎเซเชฐเซ
เช เชเซเชฐเซเชธเชฎเชพเช เชตเชชเชฐเชพเชคเซ เชธเซเชเชฟ เชฎเชจเชธเซเชตเซ เช เชจเซ เชตเซเชฏเชเซเชคเชฟเชฒเชเซเชทเซ เชเซ, เชเชชเชฃเซ เช เชตเชฟเชถเซ เชเช เชจเซเชเชง เชเชฎเซเชฐเชตเซ เชเซเชเช.
๏ธ เชเชพเชฐเซเชฏ: เช เชเชฟเชชเซเชชเชฃเซ เชฎเชพเชเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชฌเชจเชพเชตเซ
- เชถเชพเชเชพ เชชเชฐ เชธเซเชตเชฟเช เชเชฐเซ
master
. - เชจเชพเชฎเชจเซ เชถเชพเชเชพ เชฌเชจเชพเชตเซ
bugfix
. - เชซเชพเชเชฒเชจเชพ เช
เชเชคเชฎเชพเช เชจเซเชเชง เชเซเชเซเชธเซเช เชเชฎเซเชฐเซ
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/).
- เชซเซเชฐเชซเชพเชฐเซ เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เชเชฐเซ.
- เชฅเซเชฐเซเชก เชชเซเชฐเชเชพเชถเชฟเชค เชเชฐเซ
bugfix
เชฆเซเชฐเชธเซเชฅ เชฐเซเชชเซเชเซเชเชฐเซเชฎเชพเช. - เชจเชพเชฎเชจเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชฌเชจเชพเชตเซ เชเช เชเชฟเชชเซเชชเชฃเซ เชเชฎเซเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช เชฎเซเชเซเชฏ เชถเชพเชเชพ เชธเชพเชฅเซ
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 ะบะฐะบ ะพะฟะธัะฐะฝะพ ะฒััะต
เชชเซเชฒ เชตเชฟเชจเชเชคเซเชจเซ เชฎเชเชเซเชฐ เชเชฐเซ "เชเช เชเชฟเชชเซเชชเชฃเซ เชเชฎเซเชฐเชตเซ"
๏ธเชเชพเชธเซเช
- เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชฌเชจเชพเชตเซ.
- "เชฎเชฐเซเช เชชเซเชฒ เชตเชฟเชจเชเชคเซ" เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ.
- "เชฎเชฐเซเชเชจเซ เชชเซเชทเซเชเชฟ เชเชฐเซ" เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ.
- "เชถเชพเชเชพ เชเชพเชขเซ เชจเชพเชเซ" เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ, เช เชฎเชจเซ เชนเชตเซ เชคเซเชจเซ เชเชฐเซเชฐ เชจเชฅเซ.
เช เชฎเชฐเซเช เชชเชเซ เชเชฎเชฟเชเซเชธเชจเซ เชเชเซเชคเชฟ เชเซ.
๏ธ เชเชพเชฎ เชเชฐเชคเชพ เชฐเชนเซ เช เชจเซ เชชเชฐเซเชเซเชทเชฃเซ เชเชฎเซเชฐเชคเชพ เชฐเชนเซ
เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชชเชฐ เชธเชนเชฏเซเช เชเชฐเชตเชพเชฅเซ เชเชฃเซเชตเชพเชฐ เชตเชงเชพเชฐเชพเชจเชพ เชเชพเชฐเซเชฏเชฎเชพเช เชชเชฐเชฟเชฃเชฎเซ เชเซ. เช เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชเซเชก เชธเชฎเซเชเซเชทเชพ เช เชฅเชตเชพ เชเชฐเซเชเชพเชจเซเช เชชเชฐเชฟเชฃเชพเชฎ เชนเซเชฏ เชเซ, เชชเชฐเชเชคเซ เช เชฎเชพเชฐเชพ เช เชญเซเชฏเชพเชธเชเซเชฐเชฎเชฎเชพเช เช เชฎเซ CI เชชเชเชฒเชพเชเชเชจเซ เช เชฎเชพเชฐเซ เชธเซเชเชฟเชฎเชพเช เชจเชตเซ เชเชเชเชฎ เชเชฎเซเชฐเซเชจเซ เชเชจเซ เชฎเซเชกเชฒ เชเชฐเชตเชพ เชเช เชฐเชนเซเชฏเชพ เชเซเช.
เชธเชคเชค เชเชเซเชเชฐเชฃเชฎเชพเช เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชเซเชเชฒเชพเช เชชเชฐเซเชเซเชทเชฃ เชเชตเชฐเซเชเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ. เชเซเชธเซเช เชเชตเชฐเซเชเชจเซ เชเชตเชถเซเชฏเชเชคเชพเช เช เชฒเช-เช เชฒเช เชนเซเชฏ เชเซ เช เชจเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ "เชเซเชจเซเชเซเชฐเซเชฌเซเชฏเซเชถเชจ เชเชพเชเชกเชฒเชพเชเชจเซเชธ" เชเซเชตเชพ เชฆเชธเซเชคเชพเชตเซเชเชฎเชพเช เชเซเชตเชพ เชฎเชณเซ เชเซ. เช เชฎเซ เชคเซเชจเซ เชธเชฐเชณ เชฐเชพเชเซเชถเซเช เช เชจเซ เช เชฎเชพเชฐเซ เชเซเชเชฒเชฟเชธเซเชเชฎเชพเช เชฆเชฐเซเช เชฒเชพเชเชจ เชฎเชพเชเซ เชเซเชธเซเช เชเชฎเซเชฐเซเชถเซเช.
เชธเซเชเชชเชฃเซเช เชเชฒเชพเชตเชคเซ เชตเชเชคเซ, เชชเชนเซเชฒเชพ เชชเชฐเซเชเซเชทเชฃเซ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ. เชเซ เชคเชฎเซ เชฏเซเชเซเชฏ เชฐเซเชคเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชฏเซเช เชเซ pre-commit
เชนเซเช เช
เชเชพเช, เชจเชตเซ เชเชฎเซเชฐเชตเชพเชฎเชพเช เชเชตเซเชฒ เชชเชฐเซเชเซเชทเชฃ เชเชฒเชพเชตเชตเชพเชฎเชพเช เชเชตเชถเซ, เชจเชฟเชทเซเชซเชณ เชเชถเซ, เช
เชจเซ เชเชเชเชชเชฃ เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เชฅเชถเซ เชจเชนเซเช. เชจเซเชเชง เชเชฐเซ เชเซ เช เชฐเซเชคเซ เชเชชเชฃเซ เชเชพเชฃเซเช เชเซเช เชเซ เช
เชฎเชพเชฐเชพ เชชเชฐเซเชเซเชทเชฃเซ เชเชฐเซเชเชฐ เชเชเชเช เชชเชฐเซเชเซเชทเชฃ เชเชฐเซ เชเซ. เชฐเชธเชชเซเชฐเชฆ เชตเชพเชค เช เชเซ เชเซ, เชเซ เช
เชฎเซ เชชเชฐเซเชเซเชทเชฃเซ เชชเชนเซเชฒเชพเช เชเซเชก เชธเชพเชฅเซ เชชเซเชฐเชพเชฐเชเชญ เชเชฐเซเช, เชคเซ เชชเชฐเซเชเซเชทเชฃเซ เชชเชพเชธ เชเชฐเชตเชพเชจเซ เช
เชฐเซเชฅ เช เชฅเช เชถเชเซ เชเซ เชเซเชก เช
เชชเซเชเซเชทเชพ เชฎเซเชเชฌ เชเชพเชฎ เชเชฐเซ เชเซ, เช
เชฅเชตเชพ เชชเชฐเซเชเซเชทเชฃเซ เชเชฐเซเชเชฐ เชเชเชเชชเชฃ เชชเชฐเซเชเซเชทเชฃ เชเชฐเซ เชฐเชนเซเชฏเชพเช เชจเชฅเซ. เชเชชเชฐเชพเชเชค, เชเซ เช
เชฎเซ เชชเซเชฐเชฅเชฎ เชธเซเชฅเชพเชจเซ เชชเชฐเซเชเซเชทเชฃเซ เชฒเชเซเชฏเชพ เชจ เชนเซเชค, เชคเซ เช
เชฎเซ เชเชฆเชพเช เชคเซเชฎเชจเชพ เชตเชฟเชถเซ เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ เชญเซเชฒเซ เชเชฏเชพ เชนเซเชค, เชเชพเชฐเชฃ เชเซ เชเชเชเชชเชฃ เช
เชฎเชจเซ เชคเซเชจเซ เชฏเชพเชฆ เช
เชชเชพเชตเซเชฏเซเช เชจ เชนเซเชค.
เชเซเชธเซเช เชกเซเชฐเชฟเชตเชจ เชกเซเชตเชฒเชชเชฎเซเชจเซเช (TDD)
TDD เชเซเชก เชชเชนเซเชฒเชพเช เชชเชฐเซเชเซเชทเชฃเซ เชฒเชเชตเชพเชจเซ เชญเชฒเชพเชฎเชฃ เชเชฐเซ เชเซ. TDD เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชธเชพเชฎเชพเชจเซเชฏ เชตเชฐเซเชเชซเซเชฒเซ เชเชจเชพ เชเซเชตเซ เชฆเซเชเชพเชฏ เชเซ.
- เชเช เชชเชฐเซเชเซเชทเชฃ เชเชฎเซเชฐเซ.
- เชฌเชงเชพ เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเซ เช เชจเซ เชเชพเชคเชฐเซ เชเชฐเซ เชเซ เชจเชตเซ เชชเชฐเซเชเซเชทเชฃ เชจเชฟเชทเซเชซเชณ เชเชพเชฏ เชเซ.
- เชเซเชก เชฒเชเซ.
- เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเซ, เชเชพเชคเชฐเซ เชเชฐเซ เชเซ เชคเชฎเชพเชฎ เชชเชฐเซเชเซเชทเชฃเซ เชชเชพเชธ เชฅเชพเชฏ เชเซ.
- เชคเชฎเชพเชฐเซ เชเซเชก เชฐเชฟเชซเซเชเซเช เชเชฐเซ.
- เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เชเชฐเซ.
เชเชพเชฐเชฃ เชเซ เชเซ เชชเชฐเซเชเซเชทเชฃเซ เชจเชฟเชทเซเชซเชณ เชเชพเชฏ เชเซ เชคเซเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชฒเชพเชฒ เชฐเชเชเชฎเชพเช เชฌเชคเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เช เชจเซ เชเซ เชชเชพเชธ เชฅเชฏเชพ เชเซ เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชฒเซเชฒเชพ เชฐเชเชเชฎเชพเช เชฌเชคเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชเชเซเชฐเชจเซ เชฒเชพเชฒ-เชฒเซเชฒเชพ-เชฐเชฟเชซเซเชเซเชเชฐ เชคเชฐเซเชเซ เชชเชฃ เชเชณเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
๏ธเชเชพเชธเซเช
เชชเซเชฐเชฅเชฎ, เชชเชฐเซเชเซเชทเชฃเซ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ เช
เชจเซ เชคเซเชฎเชจเซ เชจเชฟเชทเซเชซเชณ เชฅเชตเชพ เชฆเซ, เชชเชเซ CI เชธเซเชเซเชช เชฒเชฟเชธเซเชเชฎเชพเช เช เชเซเชเซเชธเซเช เชเชฎเซเชฐเซ เช
เชจเซ เชเชฎเชฟเช เชเชฐเซ. เชคเชฎเซ เชเซเชถเซ เชเซ เชชเชฐเซเชเซเชทเชฃเซ เชชเชธเชพเชฐ เชฅเช เชฐเชนเซเชฏเชพ เชเซ ("เชฒเซเชฒเซ").
เชชเชเซ เชฐเชฟเชฎเซเช เชฐเชฟเชชเซเชเซเชเชฐเซเชฎเชพเช เชจเชตเซ เชเซเชก เชชเซเชฐเชเชพเชถเชฟเชค เชเชฐเซ เช
เชจเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชเชฐเซเชเชพ เช
เชจเซ PR เชธเซเชเซเชเชธ เช
เชชเชกเซเชเชจเชพ เชคเชณเชฟเชฏเซ GitHub เชเชจเซเชเชฐเชซเซเชธเชฎเชพเช เชเชพเชฒเชคเชพ เชชเชฐเซเชเซเชทเชฃเซ เชเซเช.
- เชถเชพเชเชพ เชชเชฐ เชธเซเชตเชฟเช เชเชฐเซ
feature
. -
เช เชชเชฐเซเชเซเชทเชฃเซ เชเชฎเซเชฐเซ
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); });
- เชชเชฐเซเชเซเชทเชฃเซ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ. เชเซ
pre-commit
เชนเซเช เชธเซเชฅเชพเชชเชฟเชค เชฅเชฏเซเชฒ เชเซ, เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เชชเซเชฐเชฏเชพเชธ เชจเชฟเชทเซเชซเชณ เชเชถเซ. - เชชเชเซ เช เชเซเชเซเชธเซเช เชเชฎเซเชฐเซ
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.
- เชธเซเชฅเชพเชจเชฟเช เชฐเซเชคเซ เชซเซเชฐเชซเชพเชฐเซ เชเชฐเซ เช เชจเซ เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เชเชฐเซ.
- เชถเชพเชเชพเชฎเชพเช เชซเซเชฐเชซเชพเชฐเซ เชชเซเชธเซเช เชเชฐเซ
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 เชจเซ เชธเชพเชเชตเซ เชเซ เช เชจเซ เชคเซเชฎเชจเซ เชธเชพเชฅเซ เชฒเชฟเชเช เชเชฐเซ เชเซ.
- เชเช-เชตเชเชคเชจเชพ เชธเชเชเชฐเซเชทเชจเชพ เชจเชฟเชฐเชพเชเชฐเชฃเชจเซ เชเชฐเซเชฐ เชเซ.
- เชตเชพเชฐเซเชคเชพเชจเซ เชฌเชฟเชจ-เชฐเซเชเซเชฏ เชฌเชจเชพเชตเซ เชเซ.
- เชฎเซเชเซ เชธเชเชเซเชฏเชพเชฎเชพเช เชถเชพเชเชพเช (IDE เชเซเชฌเชฒเชจเซ เชฏเชพเชฆ เช เชชเชพเชตเซ เชเซ)เชจเซ เชเชพเชฐเชฃเซ เชตเชพเชฐเซเชคเชพ เชตเชพเชเชเชตเซ เชฎเซเชถเซเชเซเชฒ เชฌเชจเซ เชถเชเซ เชเซ.
- เชธเซเชตเชเชพเชฒเชฟเชค เชกเซเชฌเชเซเชเชเชจเซ เชตเชงเซ เชฎเซเชถเซเชเซเชฒ เชฌเชจเชพเชตเซ เชเซ, เชฆเชพ.เชค.
git bisect
เชเชเชพ เชเชชเชฏเซเชเซ - เชคเซ เชฎเชพเชคเซเชฐ เชฎเชฐเซเช เชเชฎเชฟเช เชถเซเชงเชถเซ.
เชฐเชฟเชฌเซเช
- เชฌเซเช เชฌเซเชฐเชพเชจเซเชเชจเซ เชเชชเชฐเชจเซ เชตเชฐเซเชคเชฎเชพเชจ เชถเชพเชเชพเชฎเชพเชเชฅเซ เชเช เชชเชเซ เชเช เชฐเชฟเชชเซเชฒเซ เชเชฎเชฟเช เชฅเชพเชฏ เชเซ.
- เชจเชตเชพ SHA เชธเชพเชฅเซ เชจเชตเชพ เชเชฎเชฟเชเซเชธ เชเชจเชฐเซเช เชฅเชพเชฏ เชเซ, เชเซเชจเชพ เชเชพเชฐเชฃเซ GitHub เชฎเชพเช เชเชฎเชฟเชเซเชธ เชฎเซเชณ เชชเซเชฒ เชตเชฟเชจเชเชคเซเช เชธเชพเชฅเซ เชฎเซเชณ เชเชพเชฏ เชเซ, เชชเชฐเชเชคเซ เช เชจเซเชฐเซเชช เชเชฟเชชเซเชชเชฃเซเช เชธเชพเชฅเซ เชจเชนเซเช.
- เชเชฎเชฟเชเซเชธเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชฎเชพเช เชชเซเชจเชเชธเชเชฏเซเชเชฟเชค เช เชจเซ เชธเชเชถเซเชงเชฟเชค เชเชฐเซ เชถเชเชพเชฏ เชเซ, เช เชฅเชตเชพ เชเชเชฎเชพเช เชฎเชฐเซเช เชชเชฃ เชเชฐเซ เชถเชเชพเชฏ เชเซ.
- เชฌเชนเซเชตเชฟเชง เชคเชเชฐเชพเชฐ เชเชเซเชฒเชตเชพเชจเซ เชเชฐเซเชฐ เชชเชกเซ เชถเชเซ เชเซ.
- เชคเชฎเชจเซ เชฐเซเชเซเชฏ เชตเชพเชฐเซเชคเชพ เชเชพเชณเชตเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
- เชตเชพเชฐเซเชคเชพ เชตเชพเชเชเชตเชพ เชฎเชพเชเซ เชธเชฐเชณ เชนเซเช เชถเชเซ เชเซ เชเชพเชฐเชฃ เชเซ เชคเซ เชเซเช เชตเซเชฏเชพเชเชฌเซ เชเชพเชฐเชฃเซเชธเชฐ เชเซเชฌ เชฒเชพเชเชฌเซ เชจ เชนเซเชฏ.
- เชธเซเชตเชเชพเชฒเชฟเชค เชกเชฟเชฌเชเซเชเช เช
เชจเซ เชฎเซเชถเซเชเซเชฒเซเชจเชฟเชตเชพเชฐเชฃ เชฅเซเชกเซเช เชธเชฐเชณ เชเซ: เชคเซ เชถเชเซเชฏ เชฌเชจเชพเชตเซ เชเซ
git bisect
, เชเชชเซเชเชช เชฐเซเชฒเชฌเซเชเชจเซ เชธเซเชชเชทเซเช เช เชจเซ เชตเชงเซ เช เชจเซเชฎเชพเชจเชฟเชค เชฌเชจเชพเชตเซ เชถเชเซ เชเซ.
- เชงเซเชตเช เชธเชพเชฅเซ เชธเซเชฅเชพเชจเชพเชเชคเชฐเชฟเชค เชเชฎเชฟเช เชธเชพเชฅเซ เชถเชพเชเชพ เชชเซเชฐเชเชพเชถเชฟเชค เชเชฐเชตเซ เชเชฐเซเชฐเซ เชเซ
--force
เชเซเชฏเชพเชฐเซ เชชเซเชฒ เชตเชฟเชจเชเชคเซเช เชธเชพเชฅเซ เชตเชชเชฐเชพเชฏ เชเซ.
เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, เชเซเชฎเซ เชเซเชฏเชพเชฐเซ เชซเซเชฐเชซเชพเชฐเซเชจเซ เชฎเชฐเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชนเซเชฏ เชคเซเชฏเชพเชฐเซ เชนเชเชฎเซเชถเชพ เชธเชฎเชพเชจ เชตเซเชฏเซเชนเชฐเชเชจเชพเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชธเชเชฎเชค เชฅเชพเชฏ เชเซ. เช เชเช "เชถเซเชฆเซเชง" เชฎเชฐเซเช เช
เชฅเชตเชพ เชเซเช เชชเชฐ "เชถเซเชฆเซเชง" เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เชนเซเช เชถเชเซ เชเซ, เช
เชฅเชตเชพ เชตเชเซเชเซ เชเชเชเช, เชเซเชฎ เชเซ เช
เชฐเชธเชชเชฐเชธ เชฐเซเชคเซ เชเซเช เชชเชฐ เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เชเชฐเชตเซเช(git rebase -i
) เชธเซเชฅเชพเชจเชฟเช เชฐเซเชคเซ เชเชพเชนเซเชฐ เชญเชเชกเชพเชฐเชฎเชพเช เชชเซเชฐเชเชพเชถเชฟเชค เชจ เชฅเชฏเซเชฒเซ เชถเชพเชเชพเช เชฎเชพเชเซ, เชชเชฐเชเชคเซ "เชเชพเชนเซเชฐ" เชถเชพเชเชพเช เชฎเชพเชเซ เชฎเชฐเซเช เชเชฐเซ.
เช เชนเซเช เชเชชเชฃเซ เชฎเชฐเซเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช.
๏ธเชเชพเชธเซเช
- เชเชพเชคเชฐเซ เชเชฐเซ เชเซ เชเซเชก เชธเซเชฅเชพเชจเชฟเช เชถเชพเชเชพเชฎเชพเช เชเซ
master
เชฐเซเชฎเซเช เชฐเซเชชเซเชเซเชเชฐเซเชฎเชพเชเชฅเซ เช เชชเชกเซเช เชเชฐเซเชฒ. - เชถเชพเชเชพ เชชเชฐ เชธเซเชตเชฟเช เชเชฐเซ
feature
. - เชถเชพเชเชพ เชธเชพเชฅเซ เชฎเชฐเซเช เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ
master
. เชฎเชพเช เชธเซเชชเชฐเซเชงเชพเชคเซเชฎเช เชซเซเชฐเชซเชพเชฐเซเชจเซ เชเชพเชฐเชฃเซ เชฎเชฐเซเช เชธเชเชเชฐเซเชทci.md
. - เชธเชเชเชฐเซเชทเชจเซ เชเชเซเชฒเซ เชเซเชฅเซ เชเชฐเซเชจเซ เช เชฎเชพเชฐเชพ CI เชชเชเชฒเชพเชเชจเซ เชธเซเชเชฟ เช เชจเซ เชคเซเชจเชพ เชตเชฟเชถเซเชจเซ เชจเซเชเชง เชเซเชเซเชธเซเชเชฎเชพเช เชฐเชนเซ.
- เชฆเซเชฐเชธเซเชฅ เชถเชพเชเชพเชฎเชพเช เชฎเชฐเซเช เชเชฎเชฟเช เชชเซเชฐเชเชพเชถเชฟเชค เชเชฐเซ
feature
. - 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
.
๏ธ เชเชพเชฐเซเชฏ: เชชเซเชฒ เชตเชฟเชจเชเชคเซเชจเซ เชฎเชเชเซเชฐ เชเชฐเซ "เชชเชเชฒเชพเช เชธเชฎเซเชเซเชทเชพ"
- เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชเซเชฒเซ.
- "เชฎเชฐเซเช เชชเซเชฒ เชตเชฟเชจเชเชคเซ" เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ.
- "เชฎเชฐเซเชเชจเซ เชชเซเชทเซเชเชฟ เชเชฐเซ" เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ.
- "เชถเชพเชเชพ เชเชพเชขเซ เชจเชพเชเซ" เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ เชเชพเชฐเชฃ เชเซ เช เชฎเชจเซ เชนเชตเซ เชคเซเชจเซ เชเชฐเซเชฐ เชจเชฅเซ.
เช เชเซเชทเชฃเซ เช เชคเชฎเชพเชฐเซ เชญเชเชกเชพเชฐ เชเซ
เชเชคเซเชชเชพเชฆเชจ เชญเซเชฒ
เชเชตเซเช เชเชนเซเชตเชพเชฏ เชเซ เชเซ "เชชเชฐเซเชเซเชทเชฃเชจเซ เชเชชเชฏเซเช เชญเซเชฒเซเชจเซ เชนเชพเชเชฐเซ เชฌเชคเชพเชตเชตเชพ เชฎเชพเชเซ เชฅเช เชถเชเซ เชเซ, เชชเชฐเชเชคเซ เชคเซเชฎเชจเซ เชเซเชฐเชนเชพเชเชฐเซ เชฌเชคเชพเชตเชตเชพ เชฎเชพเชเซ เชเซเชฏเชพเชฐเซเชฏ เชจเชนเซเช." เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชชเชฐเซเชเซเชทเชฃเซ เชนเซเชตเชพ เชเชคเชพเช เช เชจเซ เชคเซเชเช เช เชฎเชจเซ เชเซเช เชญเซเชฒเซ เชฌเชคเชพเชตเซ เชจ เชนเซเชตเชพ เชเชคเชพเช, เชเช เชเชชเชเซ เชญเซเชฒ เชเชคเซเชชเชพเชฆเชจเชฎเชพเช เชเชตเซ เชเช.
เชเชตเซ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช, เชเชชเชฃเซ เชเชพเชณเชเซ เชฒเซเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ:
- เชเชคเซเชชเชพเชฆเชจเชฎเชพเช เชถเซเช เชเชฎเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ;
- เชฅเซเชฐเซเชกเชฎเชพเช เชเซเชก
master
เชญเซเชฒ เชธเชพเชฅเซ, เชเซเชฎเชพเชเชฅเซ เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเช เชจเชตเซเช เชเชพเชฐเซเชฏ เชถเชฐเซ เชเชฐเซ เชถเชเซ เชเซ.
เชถเซเช เชฎเชพเชฐเซ เชชเชพเชเซเช เชฐเซเชฒ เชเชฐเชตเซเช เชเซเชเช เช เชฅเชตเชพ เชคเซเชจเซ เชเชเชฒเชพ เชธเชเชธเซเชเชฐเชฃเชฎเชพเช เช เซเช เชเชฐเชตเซเช เชเซเชเช?
เชฐเซเชฒ เชฌเซเช เช เชเชพเชฃเซเชคเซ เชธเชพเชฐเซ เช
เชเชพเชเชจเซ เชเชตเซเชคเซเชคเชฟเชจเซ เชชเซเชฐเซเชกเชเซเชถเชจเชฎเชพเช เชเชฎเชพเชตเชตเชพเชจเซ เช
เชจเซ เชญเซเชฒ เชงเชฐเชพเชตเชคเซ เชเชฎเชฟเชเซเชธเชจเซ เชชเชพเชเซ เชฒเชพเชตเชตเชพเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเซ. "เชซเชฟเชเซเชธเชฟเชเช เชซเซเชฐเชตเชฐเซเชก" เช เชซเชฟเชเซเชธเชจเซ เชเชฎเซเชฐเซ เชเซ master
เช
เชจเซ เชถเชเซเชฏ เชคเซเชเชฒเซ เชตเชนเซเชฒเซ เชคเชเซ เชจเชตเชพ เชธเชเชธเซเชเชฐเชฃเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชฐเชนเซเชฏเชพเช เชเซเช. เชเชพเชฐเชฃ เชเซ APIs เช
เชจเซ เชกเซเชเชพเชฌเซเช เชธเซเชเซเชฎเชพ เชเซเชกเชจเซ เชเชคเซเชชเชพเชฆเชจเชฎเชพเช เชคเซเชจเชพเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเชคเชพเช เชฌเชฆเชฒเชพเชฏ เชเซ, เชธเชคเชค เชกเชฟเชฒเชฟเชตเชฐเซ เช
เชจเซ เชธเชพเชฐเชพ เชชเชฐเซเชเซเชทเชฃ เชเชตเชฐเซเช เชธเชพเชฅเซ, เชฐเซเชฒ เชฌเซเช เชเชฐเชตเซเช เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชเชเชฒเชพ เชธเชเชธเซเชเชฐเชฃเชฎเชพเช เชคเซเชจเซ เช เซเช เชเชฐเชตเชพ เชเชฐเชคเชพเช เชตเชงเซ เชฎเซเชถเซเชเซเชฒ เช
เชจเซ เชเซเชเชฎเซ เชเซ.
เชเชพเชฐเชฃ เชเซ เชชเชพเชเชพ เชซเชฐเชตเชพเชฅเซ เช เชฎเชพเชฐเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช เชเซเช เชเซเชเชฎ เชจเชฅเซ, เช เชฎเซ เช เชฎเชพเชฐเซเช เชชเชฐ เชเชเชถเซเช, เชเชพเชฐเชฃ เชเซ เชคเซ เช เชฎเชจเซ เชชเชฐเชตเชพเชจเชเซ เชเชชเซ เชเซ
- เชถเชเซเชฏ เชคเซเชเชฒเซ เชตเชนเซเชฒเซ เชคเชเซ เชเชคเซเชชเชพเชฆเชจ เชชเชฐเชจเซ เชญเซเชฒเชจเซ เช เซเช เชเชฐเซ;
- เชฎเชพเช เชเซเชก เชฌเชจเชพเชตเซ
master
เชจเชตเซ เชจเซเชเชฐเซ เชถเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ เชคเชฐเชค เช เชฏเซเชเซเชฏ.
๏ธเชเชพเชธเซเช
- เชถเชพเชเชพ เชชเชฐ เชธเซเชตเชฟเช เชเชฐเซ
master
เชธเซเชฅเชพเชจเชฟเช เชฐเซเชคเซ - เชฐเซเชฎเซเช เชฐเซเชชเซเชเซเชเชฐเซเชฎเชพเชเชฅเซ เชธเซเชฅเชพเชจเชฟเช เชฐเซเชชเซเชเซเชเชฐเซเชจเซ เช เชชเชกเซเช เชเชฐเซ.
- PR เชฎเชฐเซเช เชเชฎเชฟเชเชจเซ เชชเชพเชเซเช เชซเซเชฐเชตเซ เชชเชเชฒเชพเช เชธเชฎเซเชเซเชทเชพ ะฒ
master
. - เชฐเซเชฎเซเช เชฐเซเชชเซเชเซเชเชฐเซเชฎเชพเช เชซเซเชฐเชซเชพเชฐเซ เชชเซเชฐเชเชพเชถเชฟเชค เชเชฐเซ.
เช เชเช เชญเชเชกเชพเชฐเชจเซ เชเชคเชฟเชนเชพเชธ เชเซ เชเซเชฎเชพเช เชฎเชฐเซเช เชเชฎเชฟเช เชฐเชฟเชตเชฐเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ
เชเซเชฎเซเชกเซ
# ะะตัะตะบะปััะธัะตัั ะฝะฐ ะฒะตัะบั 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
.
เช เชเชฟเชธเซเชธเชพเชฎเชพเช เชตเชฟเชตเชฟเชง เชตเชฟเชเชพเชธ เชเซเชฎเซ เชตเชฟเชตเชฟเชง เช เชญเชฟเชเชฎเซเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ, เชชเชฐเชเชคเซ เช เชฎเซ เชเชชเชฏเซเชเซ เชเชฎเชฟเชเซเชธเชจเซ เช เชฒเช เชถเชพเชเชพเชฎเชพเช เชเชธเซเชกเซเชถเซเช เช เชจเซ เช เชจเชตเซ เชถเชพเชเชพ เชฎเชพเชเซ เช เชฒเช เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชฌเชจเชพเชตเซเชถเซเช.
๏ธเชเชพเชธเซเช
- เชจเชพเชฎเชจเซ เชฅเซเชฐเซเชก เชฌเชจเชพเชตเซ
feature-fix
เช เชจเซ เชคเซเชจเชพ เชชเชฐ เชธเซเชตเชฟเช เชเชฐเซ. -
เช เชเชพเชเชจเซ เชถเชพเชเชพเชฎเชพเชเชฅเซ เชคเชฎเชพเชฎ เชเชฎเชฟเชเซเชธเชจเซ เชธเซเชฅเชพเชจเชพเชเชคเชฐเชฟเชค เชเชฐเซ
feature
เชจเชตเชพ เชฅเซเชฐเซเชก เชชเชฐ. เชธเซเชฅเชณเชพเชเชคเชฐ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฅเชฏเซเชฒเชพ เชฎเชฐเซเช เชธเชเชเชฐเซเชทเซเชจเซ เชเชเซเชฒเซ. -
เชฎเชพเชเซ เชฐเซเชเซเชฐเซเชถเชจ เชเซเชธเซเช เชเชฎเซเชฐเซ
ci.test.js
:it('does not contain the sneaky bug', () => { expect( /.*sneakys+bug.*/gi.test(fileContents)).toBe(false); });
- เชคเซเช เชจเชฟเชทเซเชซเชณ เชจ เชฅเชพเชฏ เชคเซเชจเซ เชเชพเชคเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ เชธเซเชฅเชพเชจเชฟเช เชฐเซเชคเซ เชชเชฐเซเชเซเชทเชฃเซ เชเชฒเชพเชตเซ.
- "เชเช เชธเซเชจเซเชเซ เชฌเช เชธเชพเชฅเซ" เชเซเชเซเชธเซเชเชจเซ เช
เชเชฆเชฐ เชฆเซเชฐ เชเชฐเซ
ci.md
. - เช เชจเซเชเซเชฐเชฎเชฃเชฟเชเชพเชฎเชพเช เชชเชฐเซเชเซเชทเชฃ เชซเซเชฐเชซเชพเชฐเซ เช เชจเซ เชชเชเชฒเชพเชเชจเซ เชธเซเชเชฟเชฎเชพเช เชซเซเชฐเชซเชพเชฐเซ เชเชฎเซเชฐเซ เช เชจเซ เชคเซเชฎเชจเซ เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เชเชฐเซ.
- เชถเชพเชเชพเชจเซ เชฐเชฟเชฎเซเช เชฐเชฟเชชเซเชเซเชเชฐเซเชฎเชพเช เชชเซเชฐเชเชพเชถเชฟเชค เชเชฐเซ.
เชคเชฎเชพเชฐเซ เชเชจเชพ เชเซเชตเซเช เช เชเชเชเช เชธเชฎเชพเชชเซเชค เชเชฐเชตเซเช เชเซเชเช:
เชเซเชฎเซเชกเซ
# ะกะพะทะดะฐะนัะต ะฒะตัะบั ะฟะพะด ะฝะฐะทะฒะฐะฝะธะตะผ 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
เชชเซเชฒ เชตเชฟเชจเชเชคเซ เชฅเซ.
๏ธเชเชพเชธเซเช
- "เชฎเชฐเซเช เชชเซเชฒ เชตเชฟเชจเชเชคเซ" เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ.
- "เชฎเชฐเซเชเชจเซ เชชเซเชทเซเชเชฟ เชเชฐเซ" เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ.
- "เชถเชพเชเชพ เชเชพเชขเซ เชจเชพเชเซ" เชชเชฐ เชเซเชฒเชฟเช เชเชฐเซ เชเชพเชฐเชฃ เชเซ เช เชฎเชจเซ เชนเชตเซ เชคเซเชจเซ เชเชฐเซเชฐ เชจเชฅเซ.
เช เชคเซ เชเซ เชเซ เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เช เชเซเชทเชฃเซ เชนเซเชตเซเช เชเซเชเช.
เช เชญเชฟเชจเชเชฆเชจ!
เชคเชฎเซ เชคเซ เชฌเชงเชพ เชชเชเชฒเชพเช เชชเซเชฐเซเชฃ เชเชฐเซ เชฒเซเชงเชพเช เชเซ เชเซ เชฒเซเชเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชธเชคเชค เชเชเซเชเชฐเชฃ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฒเซ เชเซ.
เชเซ เชคเชฎเชจเซ เชเซเชฐเซเชธเชฎเชพเช เชเซเช เชธเชฎเชธเซเชฏเชพ เชเชฃเชพเชฏ เชเซ เช
เชฅเชตเชพ เชคเซเชจเซ เชเซเชตเซ เชฐเซเชคเซ เชธเซเชงเชพเชฐเชตเซ เชคเซ เชเชพเชฃเซ เชเซ, เชคเซ เชเซเชชเชพ เชเชฐเซเชจเซ เชคเซเชฎเชพเช เชธเชฎเชธเซเชฏเชพ เชฌเชจเชพเชตเซ
เชธเซเชฐเซเชธ: www.habr.com