เบเปเบฒเบเปเบเปเบฎเบฝเบเบฎเบนเปเบเปเบฒเบชเบฑเปเบ Git เปเบเปเบเปเบญเบเบเบฒเบเบเบดเบเบเบฐเบเบฒเบเบฒเบเบงเบดเบเบตเบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ (CI) เปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบเบเป? เบซเบผเบทเบเบฒเบเบเบตเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบดเบเบเบฐเบเปเบฒเบเบฐเบเปเบฒเบงเบฑเบเบเบญเบเบเปเบฒเบเบเป? เบซเบผเบฑเบเบชเบนเบเบเบตเปเบเบฐเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเปเปเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบเบเปเบเป GitHub repository. เบซเบผเบฑเบเบชเบนเบเบเบตเปเบเปเปเปเบเปเบกเบตเบเบธเบเบเบฐเบชเบปเบเปเบเบทเปเบญเปเบเบฑเบเบเบปเบงเบเปเบงเบเบชเปเบฒเบเบเบตเปเบเปเบฒเบเบเบฝเบเปเบเปเบชเบฒเบกเบฒเบเบเบปเบเปเบเบเบเปเบฒเบ; เปเบเบเบฒเบเบเบปเบเบเบฑเบเบเปเบฒเบก, เบเปเบฒเบเบเบฐเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฐเบเปเบฒเบเบฝเบงเบเบฑเบเบเบฑเบเบเบปเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเบปเบงเบเบดเบ, เปเบเบเบฒเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบงเบเปเบเบปเบฒ. เบเปเบญเบเบเบฐเบญเบฐเบเบดเบเบฒเบเบเบดเบเบชเบฐเบเบตเปเบเบเบฐเบเบฐเบเบตเปเปเบเบปเปเบฒเบเปเบฒเบเบเบฑเปเบเบเบญเบเบเบตเปเบเปเบฝเบงเบเปเบญเบ.
เบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเปเบเบงเปเบ?
เปเบเบเบฐเบเบฐเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบงเบซเบเปเบฒ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบญเบเปเบชเปเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบฑเปเบเบเบญเบ CI เบเบปเบเบเบฐเบเบด, เปเบเบดเปเบเปเบเบฑเบเบงเบดเบเบตเบเบตเปเบเบตเบเบตเปเบเบฐเบเบทเปเบเปเบฒเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเป. เปเบเบเปเบฒเบชเบฑเบเบเปเบฒเบเปเบญเบทเปเบเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเปเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบฐเบเบดเบเบฑเบเปเบเบเบฐเบเบฐเบเบตเปเปเบฎเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ, เบเปเบฒเปเบเบตเบเบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ. เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบฐเปเบเปเบเบธเบเบเบฒเบเบเบปเบเบชเบญเบเบเบตเปเบเปเบฒเบเบเบฒเบเปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบเบฐเบเบงเบเบเบฒเบ CI เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเปเบเบดเบเบเบฑเบเบเบปเบงเบเบดเบ.
GIF เบเบตเป schematically เบชเบฐ โโเปเบเบ เปเบซเป เปเบซเบฑเบ เบเปเบฒ เบซเบกเบฑเปเบ เบชเบฑเบ เบเบฒ เปเบ repository เบเบญเบ เบเปเบฒเบ เปเบ เบเบฐ เบเบฐ เบเบตเป เบเปเบฒเบ เบเปเบฒเบง เปเบ เปเบเบ เบเปเบฒเบ เบงเบด เบเบฒ เบเบฒเบ. เบเบฑเปเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเป, เบเปเปเบกเบตเบซเบเบฑเบเบชเบฑเบเบชเบปเบเบขเบนเปเบเบตเปเบเบตเปเปเบฅเบฐเบเบฝเบเปเบเปเบกเบตเบเบงเบฒเบกเบเปเบฒเปเบเบฑเบเบเบตเปเบชเบธเบ.
เบเปเบฒเบเบเบฐเบเปเบฒเบเบชเบฐเบเบฒเบเบฐเบเบฒเบ CI เบกเบฒเบเบเบฐเบเบฒเบเบเปเปเปเบเบเบตเป:
- เปเบฎเบฑเบเบงเบฝเบเบเปเบฝเบงเบเบฑเบเบเบธเบเบเบฐเบชเบปเบกเบเบฑเบ;
- เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเบฒเบเบเบปเบเบชเบญเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเบทเปเบญเบฎเบฑเบเบเบฐเบเบฑเบเบเบธเบเบเบฐเบเบฒเบ;
- เบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบงเบฝเบเบเบฒเบเบเบนเบฅเบดเบกเบฐเบชเบดเบ;
- เบเบฒเบโเปเบเปโเปเบโเบเบงเบฒเบกโเบเบฑเบโเปเบเปเบโเปเบโเปเบงโเบฅเบฒโเบเบตเปโเบเบฒเบโเบฅเบงเบกโเบเบดเปเบโเบเปเบฒ (merge เบเปเปโเบเบฑเบโเปเบเปเบโ)โ;
- เบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเบตเบเบเบถเปเบเปเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบฒเบเบเบฐเบฅเบดเบ.
เปเบเบปเปเบฒเบเบฐเบฎเบฝเบเบซเบเบฑเบ?
เบเปเบฒเบเบเบฐเบชเบฒเบกเบฒเบเบเบญเบเบเปเบฒเบเบฒเบกเบเปเปเปเบเบเบตเป:
- เบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ (CI) เปเบกเปเบเบซเบเบฑเบ?
- เบเบฒเบเบเบปเบเบชเบญเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบฐเปเบเบเปเบเปเบเปเบเบตเปเบเบทเบเบเปเบฒเปเบเปเปเบ CI, เปเบฅเบฐเปเบเบทเปเบญเบเบญเบเบชเบฐเบซเบเบญเบเบเบฑเบเบเบฒเบเบเบฐเบเปเบฒเปเบเบเบตเปเบเบงเบเบกเบฑเบเบเบทเบเบเบฐเบเบธเปเบ?
- เบเบฒเบเบฎเปเบญเบเบเปเบเบถเบเปเบกเปเบเบซเบเบฑเบเปเบฅเบฐเบเบงเบเปเบเบปเบฒเบเปเบญเบเบเบฒเบเปเบงเบฅเบฒเปเบ?
- Test Driven Development (TDD) เปเบกเปเบเบซเบเบฑเบ เปเบฅเบฐเบกเบฑเบเบเปเบฝเบงเบเปเบญเบเบเบฑเบ CI เปเบเบงเปเบ?
- เบเปเบญเบเบเบงเบเบฅเบงเบกเบซเบผเบทเบเบทเปเบเบเบนเบเบฒเบเบเปเบฝเบเปเบเบเบเป?
- เบเบฑเบเบเบทเบเบซเบผเบทเปเบเปเปเบเปเบเบชเบฐเบเบฑเบเบเปเปเปเบ?
เปเบเบเบญเบเบเปเบฒเบญเบดเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบเบชเบดเปเบเบเปเบฒเบเปเปเบเบฑเปเบ "เบเบฒเบเบฎเปเบญเบเบเปเบเบถเบ" เบขเบนเปเบเบปเปเบงเบเบธเบเปเบซเปเบ, เปเบเปเบเบปเบเปเบเปเบฎเบฑเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฑเบเบชเบดเบเปเบเบเบฑเบเบเบทเบเบเบฐเปเบซเบเบเปเบเบเบฒเบชเบฒเบญเบฑเบเบเบดเบเปเบเบเบฒเบเบเปเบญเบเปเบเบทเปเบญเบซเบผเบธเบเบเปเบญเบเบฅเบฐเบเบฑเบเบเบงเบฒเบกเบเปเบฒเปเบเบเปเปเบเบงเบฒเบก. เบเบฒเบเบเบฑเปเบเบเปเบญเบเบเบฐเปเบเป "เบเบฑเบเบเบฝเบเปเบเบฅเปเบเบฅเบก surzhik" เบเบทเบเบฑเบเบเปเบฒเบเบตเปเบเบฐเปเบชเบตเบ "commit" เบเปเบญเบเบเบตเปเบเบฐเบเบฒเบเบปเบเปเบเปเบกเบฑเบเบขเบนเปเปเบเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบ.
เบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบกเปเบเบซเบเบฑเบ?
เบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ, เบซเบผเบท CI, เปเบกเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเปเบฒเบเบงเบดเบเบฒเบเบฒเบเบเบตเปเบชเบฐเบกเบฒเบเบดเบเบเบตเบกเบเบฒเบเปเบเปเบฅเบฐเบเบปเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบฅเบฐเบซเบฑเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเบปเปเบฒเปเบเปเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบเบปเปเบงเปเบเบขเปเบฒเบเบซเบเปเบญเบเบซเบเบถเปเบเบเบฑเปเบเบเปเปเบกเบทเป, เปเบฅเบฐเบฅเบฐเบซเบฑเบเบเบปเบเปเบเปเบฎเบฑเบเบขเปเบฒเบเบซเบเปเบญเบเบเปเบญเบเบเบทเบเบชเปเบฒเบเบเบถเปเบเปเบเบเบเปเปเบกเบตเบเปเปเบเบดเบเบเบฒเบ.
เบกเบตเบเบงเบฒเบกเบเบฑเบเปเบเปเบเบเปเบฝเบงเบเบฑเบเบเปเบฒเบชเบฑเบเบเบตเป
เบเบธเบเบเบญเบเบเบฒเบเบเบฑเบเปเบเปเบเปเบกเปเบเบเบงเบฒเบกเบเบตเปเบเบญเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบ. เบเบฒเบเบเบปเบเปเบเปเบเบฝเบเบงเปเบฒเบเบฒเบเบฅเบงเบกเบฅเบฐเบซเบฑเบเบเบฝเบเปเบเปเบซเบเบถเปเบเบเบฑเปเบเบเปเปเบกเบทเปเบเปเปเบเบฝเบเบเปเบเบตเปเบเบฐเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบปเบงเบเบดเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ. เบเบปเบงเบขเปเบฒเบเปเบกเปเบเปเบซเปเบเบตเบกเบเบฒเบเบเบตเปเบเบธเบเบเบปเบเปเบญเบปเบฒเบฅเบฐเบซเบฑเบเบชเบปเบเปเบเบเบญเบเปเบเบปเปเบฒเปเบฅเบฐเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบกเบฑเบเบซเบเบถเปเบเบเบฑเปเบเปเบเบเบญเบเปเบฅเบ. เปเบเบเบฐเบเบฐเบเบตเปเบเบตเปเปเบกเปเบเบเบฒเบเบเบฑเบเบเปเบฒเบเบเบตเปเบชเบปเบกเปเบซเบเบชเบปเบกเบเบปเบ, เปเบเบเบเบปเปเบงเปเบเปเบฅเปเบงเบกเบฑเบเปเบเบทเปเบญเบงเปเบฒเบเปเบฒเบเบดเบเบฒเบกเบกเบทเปเบซเบเบถเปเบเปเบกเปเบเบชเบปเบกเปเบซเบเบชเบปเบกเบเบปเบ, เบชเบฐเปเบเบฒเบฐ, เปเบฅเบฐเปเบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบเบเบตเบกเบเบฒเบเบเบตเปเบกเบตเบเบฐเบซเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ.
เบเบฒเบเบเบฑเบเบเปเบฒเบเบญเบตเบเบขเปเบฒเบเบซเบเบถเปเบเปเบกเปเบเบงเปเบฒ C ++ เบเปเปเปเบกเปเบเบเบฒเบชเบฒเบเบฝเบงเบเบตเปเปเบเปเปเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒ, เปเบฅเบฐเบเบฝเบเปเบเปเบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบเบฒเบเบเบฐเบเบญเบเบเบตเปเบเปเปเบกเบตเบเปเปเบเบดเบเบเบฒเบเปเบเบฑเบเบงเบดเบเบตเบเบฒเบเบเบงเบเบชเบญเบเปเบกเปเบเบญเปเบญเบเปเบญ. เบเบฒเบเบเบธเบเบเบญเบเบเบฒเบเบเบปเบเบชเบญเบ (เบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบเบปเบเบชเบญเบเบซเบเปเบงเบเบเบฒเบเบเบตเปเบเบฐเบเบดเบเบฑเบเบขเบนเปเปเบเบเปเบญเบเบเบดเปเบ) เบเปเปเบเปเบญเบเบชเปเบฒเปเบฅเบฑเบเบขเปเบฒเบเบชเปเบฒเปเบฅเบฑเบเบเบปเบ. เปเบเบเบฑเบเบเบธเบเบฑเบ, เบเบธเบกเบเบปเบเบเปเบฒเบฅเบฑเบเบเปเบฒเบงเปเบเบชเบนเปเบเบฒเบเปเบฎเบฑเบเปเบซเปเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบตเป, เปเบฅเบฐเปเบเบญเบฐเบเบฒเบเบปเบ "เบเบฒเบเบเปเปเบชเปเบฒเบ + เบเบฒเบเบเบปเบเบชเบญเบเบซเบเปเบงเบ" เบญเบฒเบเบเบฐเบเบฒเบเปเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบปเปเบงเปเบ, เบเปเบฒเบกเบฑเบเบเบฑเบเบเปเปเบเบฑเบเปเบเป.
เบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ เปเบเบเบเปเบฒเบเบเบฒเบ เบเบฒเบเบเบฑเบเบชเบปเปเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ (เบเบฒเบเบเบฑเบเบชเบปเปเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ, CD) เปเบเบเบฑเปเบเบกเบฑเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบกเบตเบเบนเปเบชเบฐเบซเบกเบฑเบเบเบฒเบเบเปเบญเบเบเบปเบงเบซเบผเบฑเบเบเบฒเบเปเบเปเบฅเบฐเบงเบปเบเบเบญเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบ.
เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบฑเปเบเบเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเปเบเปเบเบฐเบซเบผเบญเบเบซเบผเบฑเบเบชเบนเบ
- เบเบถเบเบฅเบฐเบซเบฑเบเบซเบผเปเบฒเบชเบธเบ. เบชเปเบฒเบเบชเบฒเบเบฒเบเบฒเบ
master
. เปเบฅเบตเปเบกเปเบฎเบฑเบเบงเบฝเบ. - เบชเปเบฒเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเปเบเบชเบฒเบเบฒเปเบซเบกเปเบเบญเบเบเปเบฒเบ. เบชเปเบฒเบโเปเบฅเบฐโเบเบปเบโเบชเบญเบโเปเบโเบเปเบญเบโเบเบดเปเบโ. เบเปเบฒเบ? เปเบเบเบฑเปเบเบเบญเบเบเปเปเปเบ. เบฅเบปเปเบกเปเบซเบฅเบง? เปเบเปเปเบเบเปเปเบเบดเบเบเบฒเบ เบซเบผเบทเบเบฒเบเบเบปเบเบชเบญเบ เปเบฅเบฐเบฅเบญเบเปเปเปเบญเบตเบ.
- เบเบนเปเปเบเบเบตเป repository เบซเบผเบทเบชเบฒเบเบฒเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบเบเบญเบเบเปเบฒเบ.
- เบชเปเบฒเบเบเบฒเบเบฎเปเบญเบเบเปเบเบถเบ. เบเบถเบเบชเบฒเบซเบฒเบฅเบทเบเบฒเบเบเปเบฝเบเปเบเบ, เปเบเบตเปเบกเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเปเบเบตเปเบกเปเบเบตเบกเปเบเบเบฐเบเบฐเบเบตเปเบเบฒเบเบชเบปเบเบเบฐเบเบฒเบเบฑเบเบชเบทเบเบเปเป. เปเบฎเบฑเบเปเบซเปเบเบฒเบเบเบปเบเบชเบญเบเบเปเบฒเบเบชเบฒเบเบฒเบเบธเบเบชเบปเบกเบเบฑเบ.
- Merge / rebase เบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเบเบฒเบเบเบปเปเบเบชเบฐเบเบฑเบ. เปเบฎเบฑเบโเปเบซเปโเบเบฒเบโเบเบปเบโเบชเบญเบโเบเปเบฒเบโเบเบปเบโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบฅเบงเบกโ.
- เบเบณเปเบเปเบเบฒเบเบชเบฒเบเบฒเบเบธเบเบชเบปเบกเบเบฑเบเปเบเบชเบนเปเบเบฒเบเบเบฐเบฅเบดเบ.
- เบเปเบฒเบซเบฒเบเบงเปเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบเบตเปเบเบเบฒเบเบเบฐเบฅเบดเบเบชเปเบฒเบฅเบฑเบเปเบฅเบเบฐเปเบงเบฅเบฒเบเบญเบเบเบฒเบเปเบงเบฅเบฒ, merge เบเบฒเบเบเปเบฝเบเปเบเบเบเบปเปเบเบชเบฐเบเบฑเบ.
๏ธ เบเบฒเบเบเบฐเบเบฝเบก
เปเบซเปเปเบเปเปเบเบงเปเบฒเบเปเบฒเบเบกเบตเบเบญเบเปเบงเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบก
เปเบเบทเปเบญเบฎเบฝเบเบงเบดเบเบฒเบเบตเป, เบเปเบฒเบเบเบฐเบเปเบญเบเบเบฒเบ
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบฅเบนเบเบเปเบฒ Git เปเบเบเปเปเบเบฒเบก, เปเบเปเบเปเบญเบเบเบฐเปเบซเปเบเปเบฒเบชเบฑเปเบเบชเปเบฒเบฅเบฑเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบเปเบเบปเปเบฒเบเบฑเปเบ.
เปเบซเปเปเบเปเปเบเบงเปเบฒเบเปเบฒเบเบกเบตเบฅเบนเบเบเปเบฒ Git เบเบดเบเบเบฑเปเบเบเบตเปเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบ
เบเปเบฒเบเปเบฒเบเบเบฑเบเบเปเปเบเบฑเบเบกเบตเบฅเบนเบเบเปเบฒ Git เบเบตเปเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเปเบชเบฑเปเบเบเปเบฒเบชเบฑเปเบ, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบเปเบฒเปเบเบฐเบเปเบฒเบเบฒเบเบเบดเบเบเบฑเปเบ
เบเบฐเบเบฝเบกเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบ
เบเปเบฒเบเบเบฐเบเปเบญเบเบชเปเบฒเบเบชเปเบฒเปเบเบปเบฒเบชเปเบงเบเบเบปเบง (เบชเปเบญเบก)
เบชเบณเปเบฅเบฑเบเปเบฅเปเบง? เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเปเบฒเบโเบเปเปโเปเบเปโเบกเบตโเบเบฒเบโเบเปเบฝเบโเปเบเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒโเปเบฅเบตเปเบกโเบเบปเปเบโ, repository เบเบญเบโเบเปเบฒเบโเบเบฐโเบเบทเบโเปเบญเบตเปเบโเบซเบผเบฒเบโเบเบตเปโเบชเบธเบโ continuous-integration-team-scenarios-students
, เบกเบฑเบเบเบฑเปเบเบขเบนเปเปเบเบเบฑเบเบเบต GitHub เบเบญเบเบเปเบฒเบเปเบฅเบฐ URL เปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป
https://github.com/<ะฒะฐัะต ะธะผั ะฟะพะปะทะพะฒะฐัะตะปั ะฝะฐ GitHub>/continuous-integration-team-scenarios-students
เบเปเบญเบเบเบฐเปเบเบซเบฒเบเบตเปเบขเบนเปเบเบตเปเบเปเบฒเบเป <URL ัะตะฟะพะทะธัะพัะธั>
.
เบงเบปเบเปเบฅเบฑเบเบกเบธเบกเบเปเบฒเบเบเบท
<ััั>
เบเบฐเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเบฒเบเบเปเบญเบเบเบปเบเปเบเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบฑเปเบเบเปเบฒเบงเบเปเบงเบเบเปเบฒเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบก.
เปเบซเปเปเบเปเปเบเบงเปเบฒ เบเบฒเบเบเบฐเบเบดเบเบฑเบ GitHub เบฅเบงเบกเปเบเปเบเบดเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบซเบผเบฑเบเบชเบนเบเบเบตเป. เบเปเบฒเบเบงเบเปเบเบปเบฒเบเปเปเปเบเปเปเบเบตเบเปเบเป, เบเบฐเบฅเบธเบเบฒเปเบเบตเบเปเบเปเบเบงเบเบกเบฑเบเปเบเบเบเบฒเบเบเบฅเบดเบเปเบชเปเบเบธเปเบกเบเบฐเบซเบเบฒเบเปเบซเบเปเบขเบนเปเปเบเบดเปเบเบเบฒเบเบเบญเบเบซเบเปเบฒ, เบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบซเบฒเปเบเปเปเบเบเบเบฒเบเบเบฅเบดเบเปเบชเปเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเบเบฒเบเปเบเปเบเบญเบ GitHub.
เบเปเบฒเบเบเบฐเบเปเปเบชเบฒเบกเบฒเบเบชเปเบฒเปเบฅเบฑเบเบซเบผเบฑเบเบชเบนเบเบเบฐเบเบดเบเบฑเบเบเบฒเบกเบเปเบฒเปเบเบฐเบเปเบฒเบเบญเบเบเปเบญเบเบเปเบฒ GitHub Actions เบเปเปเปเบเปเบเบทเบเปเบเบตเบเปเบเป.
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบเบญเบ GitHub เปเบเบทเปเบญเบชเบฐเปเบเบ Markdown เปเบเบทเปเบญเปเบเบดเปเบเบชเบฐเบเบฒเบเบฐเบเบฐเบเบธเบเบฑเบเบเบญเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเบฝเบเบขเบนเปเบเบตเปเบเบตเป
https://github.com/<your GitHub user name>/continuous-integration-team-scenarios-students/blob/master/ci.md
เบเปเบฝเบงเบเบฑเบเบเปเบฒเบเบญเบ
เปเบเบเบฐเบเบฐเบเบตเปเบงเบดเบเบตเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบตเปเบเบฐเปเบฎเบฑเบเบชเปเบฒเปเบฅเบฑเบเบซเบผเบฑเบเบชเบนเบเบเบตเปเปเบกเปเบเปเบฎเบฑเบเบเบปเบงเบเปเบฒเบเปเบญเบ, เบเปเบฒเบเบญเบฒเบเบเบฐเบกเบตเบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบเบเบฒเบเบขเปเบฒเบ.
เบเปเบฒเบเปเบฒเบเบฎเบนเปเบชเบถเบเบงเปเบฒเบเปเบฒเบเบเปเปเปเบเบปเปเบฒเปเบเบชเบดเปเบเบเบตเปเบเปเบญเบเปเบฎเบฑเบเปเบฅเบฐเบเปเปเบชเบฒเบกเบฒเบเบชเบทเบเบเปเปเปเบเป, เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเปเบเบซเบปเบงเบเปเป solution
, เปเบเบดเปเบเบขเบนเปเปเบ repository เปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบเปเบฒเบ.
เบเบฐเบฅเบธเบเบฒเบขเปเบฒเบฎเบงเบก solution
ะฒ master
เปเบเบฅเบฐเบซเบงเปเบฒเบเบซเบผเบฑเบเบชเบนเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบชเบฒเบเบฒเบเบตเปเปเบเบทเปเบญเบเบดเบเบชเบดเปเบเบเบตเปเบเปเบญเบเปเบฎเบฑเบ, เบซเบผเบทเปเบเบทเปเบญเบเบฝเบเบเบฝเบเบฅเบฐเบซเบฑเบเบเบญเบเบเปเบฒเบเบเบฑเบเบเบนเปเบเบฝเบ, เปเบเบเปเบเปเบเบงเบฒเบกเบชเบฒเบกเบฒเบเบเบฑเบเบซเบกเบปเบเบเบตเป Git เปเบซเปเบเบงเบเปเบฎเบปเบฒ. เบเปเบฒเบเปเบฒเบเบชเบนเบเปเบชเบเปเบเบซเบกเบปเบเปเบฅเปเบง, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฝเบเบชเบฒเบเบฒเบเบญเบเบเปเบฒเบเปเบเปเบขเปเบฒเบเบชเบปเบกเบเบนเบ master
เบขเบนเปเปเบเบชเบฒเบเบฒ solution
เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ reset directory เปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเปเบฒเบเบเบฑเบเบเบฑเปเบเบเบญเบเบซเบผเบฑเบเบชเบนเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบ.
เปเบเปเบเบฝเบเปเบเปเบเบตเปเบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบเปเป
เบกเบญเบเบฅเบฐเบซเบฑเบเบเบญเบเบเปเบฒเบ
git add .
git commit -m "Backing up my work"
เบเปเบฒเบชเบฑเปเบเปเบซเบผเบปเปเบฒเบเบตเป
- เบเปเบฝเบเบเบทเป
master
ะฒmaster-backup
; - เบเปเบฝเบเบเบทเป
solution
ะฒmaster
; - เบเปเบฒเบเปเบเบดเบเปเบซเปเบชเบฒเบเบฒเปเปเป
master
เปเบฅเบฐเบเบฝเบเบเบทเบเปเบเบทเปเบญเปเบเบเบญเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเปเบฎเบฑเบเบงเบฝเบ; - เบชเปเบฒเบเบชเบฒเบเบฒ "เบเบฒเบเปเบเปเปเบ" เบเบฒเบ "เบเบปเปเบเบชเบฐเบเบฑเบ" (เปเบเบดเปเบเปเบเบตเบเปเบเบฑเบ "เบเบฒเบเปเบเปเปเบ") เปเบเบเปเบฅเบฐเบเบตเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบเบชเบฒเบเบฒ "เบเบฒเบเปเบเปเปเบ" เปเบเบญเบฐเบเบฒเบเบปเบ.
git branch -m master master-backup
git branch -m solution master
git checkout master -f
git branch solution
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบญเบเปเบซเบผเบปเปเบฒเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเป git log master
เปเบเบทเปเบญเบเบดเบเบญเบญเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบ.
เบเปเบฒเบเบชเบฒเบกเบฒเบเบฃเบตเปเบเบฑเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเปเบฒเบเปเบเบฑเบ commit เบเบตเป:
git reset --hard <the SHA you need>
เบเปเบฒเบเปเบฒเบเบเปเปเบเบเบฑเบเบเบปเบเปเบเปเบฎเบฑเบ, เปเบเบเบฒเบเบเบธเบเบเปเบฒเบเบเบฐเบเปเบญเบเปเบเบตเบเปเบเปเบชเบฐเบเบฑเบเบเบญเบ repository เบเบญเบเบเปเบฒเบเบเบฑเบ repository เบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบ. เบขเปเบฒเบฅเบทเบกเบฅเบฐเบเบธเบชเบฒเบเบฒเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบเบขเปเบฒเบเบเบฐเปเบเปเบเปเบกเบทเปเบญเบเปเบฒเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเป.
git push --force origin master
เบเบฐเบฅเบธเบเบฒเบชเบฑเบเปเบเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบเป git push --force
. เบกเบฑเบเบเบปเบเบเบฐเบเปเปเปเบเบฑเบเบเบตเปเปเบเบปเปเบฒเบขเบฒเบเบเบฐเปเบฎเบฑเบเปเบเบเบเบตเปเปเบฅเบทเปเบญเบเป, เปเบเปเบเบงเบเปเบฎเบปเบฒเบกเบตเบชเบฐเบเบฒเบเบฐเบเบฒเบเบชเบฐเปเบเบฒเบฐเบขเบนเปเบเปเบญเบเบเบตเปเบเบฑเบเบเบนเปเปเบเปเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบเบนเปเปเบถเปเบเบเบตเปเปเบเบปเปเบฒเปเบเปเบเบชเบดเปเบเบเบตเปเบฅเบฒเบงเปเบฎเบฑเบ.
เบเบณเบฅเบฑเบเปเบฅเบตเปเบกเปเบฎเบฑเบเบงเบฝเบ
เปเบซเปเปเบฅเบตเปเบกเบเบปเปเบเบฅเบงเบเบฅเบงเบกเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบฑเปเบเบเบญเบ CI เบเบญเบเบเบงเบเปเบฎเบปเบฒ. เปเบเบเบเบปเบเบเบฐเบเบดเปเบเบปเปเบฒเบเบฐเปเบฅเบตเปเบกเบเบฑเปเบเบเบญเบเบเบตเปเปเบเบเบเบฒเบเบเบงเบเบชเบญเบเปเบงเบตเบเบฑเบเบซเบผเปเบฒเบชเบธเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบฒเบเบเปเบญเบเปเบเบฑเบเบเปเปเบกเบนเบเบเบฒเบเปเบ, เปเบเปเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเปเปเบกเบตเบเปเบญเบเปเบเบฑเบเบเปเปเบกเบนเบเบเปเบญเบเบเบดเปเบเปเบเบทเปเบญ, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเบถเปเบเปเบเบเบกเบฑเบเบเบฒเบเบเบฒเบเปเบเปเบเบ.
๏ธ เบงเบฝเบเบเบฒเบ: เบเบฑเบเบเบธเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบเปเบญเบเบเบดเปเบ, เบชเปเบฒเบเบชเบฒเบเบฒเบเบฒเบ master
, เปเบฅเบตเปเบกเปเบฎเบฑเบเบงเบฝเบ
- Clone the course repository from
<URL ัะตะฟะพะทะธัะพัะธั>
. - เปเบฅเปเบ
npm install
เปเบโเบเบฑเบโเบเบตโเบฅเบฒเบโเบเบฒเบ repositoryโ; เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบกเบฑเบเปเบเบทเปเบญเบเบดเบเบเบฑเปเบ Jest, เบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเปเบเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเบเบชเบญเบ. - เบชเปเบฒเบเบชเบฒเบเบฒเปเบฅเบฐเบเบฑเปเบเบเบทเปเบกเบฑเบ
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-เบฅเบงเบเบฅเบงเบก);
- เปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเบฐเบเบญเบ (เปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบฅเบงเบเบฅเบงเบกเปเบกเปเบเบเปเบฒเปเบเบฑเบ);
- เบชเบธเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒ;
- เปเบกเบทเปเบญเปเบเบตเบเปเบเปเปเบเบเบฑเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบเบตเปเปเบเปเบเบเบฑเบ.
- เปเบ build server เบซเบผเบท build environment:
- เปเบกเบทเปเบญเบฅเบฐเบซเบฑเบเบเบทเบเปเบเบตเบเปเบเปเปเบเบซเบฒเบชเบฒเบเบฒ/เบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบชเปเบงเบเบเบปเบง.
- เบฅเบฐเบซเบฑเบเปเบเบซเบปเบงเบเปเปเบเบตเปเบเปเบฒเบฅเบฑเบเบเบทเบเบเบปเบเบชเบญเบ.
- เบเบปเบโเปเบเปโเบฎเบฑเบโเบเบตเปโเปเบเบฑเบโเปเบโเปเบเปโเบเบญเบโเบเบฒเบโเบฅเบงเบกโเบเบปเบงโเปเบกเปเบโเบเบฒเบโเบเบปเบโเบชเบญเบ (เปเบเบโเบเบปเบโเบเบฐโเบเบดโเบเบฑเบโ
master
). - เปเบเบฑเบเบเบฑเปเบเบเบญเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ / เบเปเปเบชเบปเปเบเบเปเปเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ
เปเบเบเบเบปเบเบเบฐเบเบด, เบเบธเบเบเบปเบเบชเบญเบเปเบฅเปเบเปเบงเบเบถเปเบ, เปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบฅเปเบเบกเบฑเบเปเบเปเปเบฅเบทเปเบญเบเป. เบเบฒเบเปเบเบเบขเบฒเบเบเบฑเปเบเบเบญเบเบเบปเบเบเบฐเบเบดเบญเบฒเบเบเบฐเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบตเป.
- เบเบฒเบเบเบปเบเบชเบญเบเบซเบเปเบงเบเบเบฒเบเปเบง - เปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเปเปเบชเปเบฒเบ, เปเบเบเปเป CI
- เบเบฒเบเบเบปเบเบชเบญเบเบซเบเปเบงเบเบเบฒเบเบเปเบฒ, เบเบฒเบเบเบปเบเบชเบญเบเบญเบปเบเบเบฐเบเบญเบเปเบงเปเบฅเบฐเบเบฒเบเปเบเบทเปเบญเบกเปเบเบ - on commit, in the CI pipeline
- เบญเบปเบเบเบฐเบเบญเบเบเปเบฒเปเบฅเบฐเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบ - เปเบเบเปเป CI
- เบเบฒเบเบเบปเบเบชเบญเบเบเบงเบฒเบกเบเบญเบเปเบ, เบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเปเบซเบผเบเปเบฅเบฐเบเบฒเบเบเบปเบเบชเบญเบเบเบตเปเปเบเปเปเบงเบฅเบฒเบญเบทเปเบเปเบซเบผเบทเบฅเบฒเบเบฒเปเบเบ - เปเบเบเปเป CI / CD, เปเบเปเบงเปเบฒเบเบฝเบเปเบเปเปเบเบเบฒเบเปเบซเบกเบ / เบเบฑเปเบเบเบญเบ / เบเปเปเบเบญเบเบเบฒเบเบเปเปเบชเปเบฒเบ, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ, เปเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบเบฝเบกเบเบนเปเบชเบฐเบซเบกเบฑเบเบเปเบญเบเบซเบผเบทเปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบงเบเบเบปเบเปเบญเบ.
๏ธเปเปเบฒเบงเบฝเบ
เบเปเบญเบเบเปเปเบเบฐ เบเบณ เปเบซเปเปเบฅเปเบเบเบฒเบเบเบปเบเบชเบญเบเบเปเบงเบเบเบปเบเปเบญเบเปเบเบเปเบเป เบเบณ เบชเบฑเปเบ npm test
. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เปเบซเปเปเบเบตเปเบก git hook เปเบเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเบเบชเบญเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเปเบฝเบงเบเบฑเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒ. เบกเบตเบเบฒเบเบเบฑเบเบซเบเบถเปเบ: Git hooks เบเปเปเปเบเปเบเบทเบเบเบดเบเบฒเบฅเบฐเบเบฒเปเบเบฑเบเบชเปเบงเบเบซเบเบถเปเบเบเบญเบ repository เปเบฅเบฐเบเบฑเปเบเบเบฑเปเบเบเบถเปเบเบเปเปเบชเบฒเบกเบฒเบ cloned เบเบฒเบ GitHub เบเบฝเบเบเบนเปเบเบฑเบเบญเบธเบเบฐเบเบญเบเบเบฒเบเบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเบเบญเบเบซเบผเบฑเบเบชเบนเบ. เปเบเบทเปเบญเบเบดเบเบเบฑเปเบ hook, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเปเบฒเปเบเบตเบเบเบฒเบ install_hook.sh
เบซเบผเบทเบชเบณเปเบเบปเบฒเปเบเบฅเป repo/hooks/pre-commit
เปเบเบซเบฒเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบเบเบดเปเบ .git/hooks/
.
เปเบกเบทเปเบญเบเปเบฒเบเบซเบกเบฑเปเบเบชเบฑเบเบเบฒ, เบเปเบฒเบเบเบฐเปเบซเบฑเบเบงเปเบฒเบเบฒเบเบเบปเบเบชเบญเบเบเบทเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบฅเบฐเบเบงเบเปเบเบปเบฒเบเบงเบเปเบเบดเปเบเบงเปเบฒเบกเบตเบเปเบฒเบเบตเปเปเบเปเบเบญเบเบขเบนเปเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป.
- เบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเบเบชเบญเบเบเปเบงเบเบเบปเบเปเบญเบเปเบเบเบเบฒเบเปเบฅเปเบเบเปเบฒเบชเบฑเปเบ
npm test
เปเบเปเบเปเบเบต repository เบเบญเบเบซเบผเบฑเบเบชเบนเบเบเบญเบเบเปเบฒเบ. เบเบงเบโเบชเบญเบโเบงเปเบฒโเบเบฒเบโเบเบปเบโเบชเบญเบโเปเบเปโเบชเปเบฒโเปเบฅเบฑเบโ. - เบเบฑเปเบ hook commit (pre-commit hook) เปเบเบเบเบฒเบเปเบฅเปเบ
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, เปเบเบเบเบปเปเบงเปเบเปเบฅเปเบงเบเบตเปเปเบกเปเบเบเบฑเบเบฅเบธเปเบเปเปเบเบเบเบฒเบเปเบเบตเบเปเบเปเบงเบฝเบเบเบฒเบเปเบซเปเบเบฑเบเบชเปเบฒเปเบเบปเบฒเบชเปเบงเบเบเบธเบเบเบปเบเบเบญเบ repository (เบชเปเบญเบกเบชเปเบงเบเบเบธเบเบเบปเบ) เบซเบผเบทเบชเบฒเบเบฒเบชเปเบงเบเบเบธเบเบเบปเบ.
- เบเปเบงเบเบชเปเบญเบก, เบเบฑเบเบเบฑเบเบเบฐเบเบฒเปเบเปเปเบเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบเบตเปเปเบเปเบเบเบฑเบเบเบฒเบเปเบฅเบเบฐเปเบ, เบชเปเบฒเบเบชเบณเปเบเบปเบฒเบเบฒเบเปเบเบชเปเบงเบเบเบปเบงเบเบญเบเบกเบฑเบ, เปเบเบดเปเบเปเบญเบตเปเบเบเบฑเบเบงเปเบฒเบชเปเบญเบก. เบเบฒเบเบเบฑเปเบเบกเบฑเบ clones repository เบชเปเบงเบเบเบปเบงเบเบตเปเปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเปเบญเบเบเบดเปเบ. เปเบเปเบงเบฅเบฒเบเบตเปเบงเบฝเบเบเบฒเบเปเบกเปเบเบชเปเบฒเปเบฅเบฑเบเปเบฅเบฐเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒ, เปเบเบปเบฒ pushes เปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒเปเบเบปเปเบฒเปเบเปเบเบชเปเบญเบกเบเบญเบเบเบปเบ, เบเปเบญเบเบเบตเปเปเบเบปเบฒเปเบเบปเปเบฒเบกเบตเปเบซเปเบเบปเบเบญเบทเปเบเปเบฅเบฐเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเปเบเบปเปเบฒเปเบเปเบ repository เบเบปเปเบงเปเบ. เบงเบดเบเบตเบเบฒเบเบเบตเปเปเบกเปเบเบเบทเบเบเปเบฒเปเบเปเบเบปเปเบงเปเบเปเบเปเบเบเบเบฒเบเปเบซเบผเปเบเปเบเบตเบเปเบ GitHub. เบกเบฑเบเบเบฑเบเบเบทเบเบเปเบฒเปเบเปเปเบเบซเบผเบฑเบเบชเบนเบเบเบฑเปเบเบชเบนเบเบเบญเบเบเปเบญเบ [Team Work เปเบฅเบฐ CI เบเบฑเบ Git] (
http://devops.redpill.solutions/ ). - เบงเบดเบเบตเบเบฒเบเบญเบทเปเบเปเบกเปเบเปเบเปเบเบฝเบเปเบเปเบซเบเบถเปเบ repository เบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบเปเบฅเบฐเบเบฝเบเปเบเปเบเบฑเบเบชเบฒเบเบฒ
master
เบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบเบตเปเปเบเปเบเบเบฑเบ "เบเบทเบเบเบปเบเบเปเบญเบ". เปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเป, เบเบฑเบเบเบฑเบเบเบฐเบเบฒเบชเปเบงเบเบเบธเบเบเบปเบเปเบเบตเบเปเบเปเบฅเบฐเบซเบฑเบเบเบญเบเบเบงเบเปเบเบปเบฒเปเบเบซเบฒเบชเบฒเบเบฒเบเบญเบ repository เบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบเปเบเบทเปเบญเปเบซเปเบเบนเปเบญเบทเปเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบฅเบฐเบซเบฑเบเบเบตเป, เบเปเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบขเบนเปเปเบเบเปเบฒเบชเบฑเปเบ, เบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบเบฑเบเบกเบฑเบ.master
เบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบเบตเปเปเบเปเบเบเบฑเบ.
เปเบเบซเบผเบฑเบเบชเบนเบเบชเบฐเปเบเบฒเบฐเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบฒเปเบเปเบเบฐเบเบงเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบตเปเปเบเปเบชเบฒเบเบฒ.
เปเบซเปเปเบเบตเบเปเบเปเบฅเบฐเบซเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ.
๏ธเปเปเบฒเบงเบฝเบ
- เปเบเบตเบเปเบเปเบเบฒเบเบเปเบฝเบเปเบเบเบชเบฒเบเบฒเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบเบเบตเปเบกเบตเบเบทเปเบเบฝเบงเบเบฑเบเบเบฑเบเบชเบฒเบเบฒเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเปเบฒเบ
เบเปเบฒเบชเบฑเปเบ
git push --set-upstream origin feature
เบชเปเบฒเบเบเบฒเบเบฎเปเบญเบเบเปเบเบถเบ
เบชเปเบฒเบเบเปเบฒเบฎเปเบญเบเบเปเบเบถเบเบเปเบงเบเบซเบปเบงเบเปเป เบเบฑเปเบเบเบญเบเบเบฒเบเบเบปเบเบเบงเบเบเบทเบ... เบเบดเบเบเบฑเปเบ feature
เปเบเบฑเปเบ "เบชเบฒเบเบฒเบซเบปเบง" เปเบฅเบฐ master
เปเบเบฑเปเบ "เบชเบฒเบเบฒเบเบทเปเบเบเบฒเบ".
เปเบซเปเปเบเปเปเบเบงเปเบฒเบเปเบฒเบเปเบเปเบเบดเบเบเบฑเปเบ
master
เปเบเบฅเบฒเบง fork the repository เปเบเบเบฒเบเบฐเปเบเบฑเบ "เบชเบฒเบเบฒเบเบทเปเบเบเบฒเบ", เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเปเปเบเบญเบเบชเบฐเบซเบเบญเบเบเปเปเบเปเบฒเบฎเปเบญเบเบเปเบเบฒเบเบเปเบฝเบเปเบเบเบเบญเบเบญเบธเบเบฐเบเบญเบเบเบฒเบ repository.
เปเบ GitHub lingo, "เบชเบฒเบเบฒเบเบทเปเบเบเบฒเบ" เปเบกเปเบเบชเบฒเบเบฒเบเบตเปเบเปเบฒเบเบญเบตเบเปเบชเปเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเปเบเบปเปเบฒ, เปเบฅเบฐ "เบชเบฒเบเบฒเบซเบปเบง" เปเบกเปเบเบชเบฒเบเบฒเบเบตเปเบเบฐเบเบญเบเบเปเบงเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบตเปเบชเบฐเปเบซเบเบต.
เบเบถเบเบชเบฒเบซเบฒเบฅเบทเบเบฒเบเบเปเบฝเบเปเบเบ, เปเบเบตเปเบกเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเปเบซเบกเปเปเบเบเบฐเบเบฐเบเบตเปเบเบฒเบเบชเบปเบเบเบฐเบเบฒเบเบฑเบเบชเบทเบเบเปเป
เบเบฒเบเบฎเปเบญเบเบเปเบเบถเบ (PR)
เบเบฒเบเบฎเปเบญเบเบเปเบเบถเบ (PR) เปเบกเปเบเบงเบดเบเบตเบเบฒเบเบเบถเบเบชเบฒเบซเบฒเบฅเบทเปเบฅเบฐเบฅเบฐเบซเบฑเบเปเบญเบเบฐเบชเบฒเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเบเบเบงเบเบฅเบฐเบซเบฑเบ. เบเบฒเบเบฎเปเบญเบเบเปเบเบถเบเบกเบตเบเบทเปเบเบฒเบกเบงเบดเบเบตเบเบฒเบเบเบปเปเบงเปเบเบเบญเบเบเบฒเบเบฅเบงเบกเปเบญเบปเบฒเบเบฒเบเบเปเบฝเบเปเบเบเบเบญเบเบเบธเบเบเบปเบเปเบเบปเปเบฒเปเบเปเบเบฅเบฐเบซเบฑเบเบฅเบงเบก. เปเบเบเบเบปเบเบเบฐเบเบด, เบเบธเบเบเบปเบเบเบตเป clones เบชเบฐเบเบฒเบเบเบตเปเปเบเบฑเบเบกเปเบฝเบเบขเปเบฒเบเปเบเบฑเบเบเบฒเบเบเบฒเบเบเบฒเบเปเบเบเบญเบเปเบเบเบเบฒเบเปเบฅเบฐเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบฅเบฐเบซเบฑเบเบเปเบญเบเบเบดเปเบ. เบซเบผเบฑเบเบเบฒเบเบเบตเป, เบฅเบฒเบงเบงเบฒเบเบฅเบฐเบซเบฑเบเปเบงเปเปเบเบเบฑเบเปเบเบฑเบเบกเปเบฝเบเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบเบชเปเบงเบเบเบปเบงเบเบญเบเบฅเบฒเบงเปเบฅเบฐเบเปเปเบซเปเบเบนเปเบฎเบฑเบเบเบดเบเบเบญเบเบเบญเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบขเปเบฒเบเปเบเบฑเบเบเบฒเบเบเบฒเบเบกเบฒเปเบญเบปเบฒ (เบเบถเบ) เบฅเบฐโเบซเบฑเบโเบเบญเบโเบเบปเบโเปเบเบปเปเบฒโเปเบโเปเบ repositories เบเปเบญเบโเบเบดเปเบโเบเบญเบโเปเบเบปเบฒโเปเบเบปเปเบฒโ, เบเปเบญเบโเบเบตเปโเปเบเบปเบฒโเปเบเบปเปเบฒโเบเบปเบโเบเบงเบโเบเบทเบโเปเบฅเบฐโเบญเบฒเบโเบเบฐโเปเบเบทเปเบญเบกโเปเบเบ (เบฅเบงเบก) เบฅเบฒเบง. เปเบเบงเบเบงเบฒเบกเบเบดเบเบเบตเปเบเบฑเบเปเบเบฑเบเบเบตเปเบฎเบนเปเบเบฑเบเปเบเบเบเบทเปเบญเบทเปเบเป, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ, เบเบฒเบโเบฎเปเบญเบโเบเปโเบฅเบงเบกโ.
เบเปเบฒเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเบธเบเบชเบปเบกเบเบฑเบเบเบฒเบเบฎเปเบญเบเบเปเบเบถเบเบเบญเบ GitHub เบซเบผเบทเปเบงเบเบตเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบ. เบเบตเบกเบเบฒเบเบเบฑเบเบเบฐเบเบฒเบญเบฒเบเบเบฐเปเบเปเบงเบดเบเบตเบเบฒเบเบชเบทเปเบชเบฒเบเบญเบทเปเบเป, เบฅเบงเบกเบเบฑเบเบเบฒเบเบชเบทเปเบชเบฒเบเปเบเบเปเบเบซเบเปเบฒเบเปเปเบซเบเปเบฒ, เบเบฒเบเปเบเบชเบฝเบ, เบซเบผเบทเบญเบตเปเบกเบฅเป, เปเบเปเบเบฑเบเบกเบตเปเบซเบเบเบปเบเบเปเบฒเบเบงเบเบซเบเบถเปเบเบเบตเปเบเบฐเปเบเปเบเบฒเบเบฎเปเบญเบเบเปเบเบถเบเบฎเบนเบเปเบเบเปเบงเบเบตเบชเบปเบเบเบฐเบเบฒ. เบเบตเปเปเบกเปเบเบเบฒเบเบชเปเบงเบเบเบญเบเบเบงเบเปเบเบปเบฒ:
- เบเบฒเบเบชเบปเบเบเบฐเบเบฒเบเบตเปเบกเบตเบเบฒเบเบเบฑเบเบเบฑเปเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบเบฅเบฐเบซเบฑเบเบชเบฐเปเบเบฒเบฐ;
- เปเบเบฑเบเบชเบฐเบเบฒเบเบเบตเปเปเบเบทเปเบญเปเบเบดเปเบเบเปเบฒเบเบถเบเบเปเบฒเปเบซเบฑเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเบเบงเบฒเบกเบเบทเบเบซเบเปเบฒเบเบฒเบเบเบฑเบ autotesters เปเบฅเบฐเปเบเบทเปเบญเบเบฎเปเบงเบกเบเบฒเบ;
- เบขเปเบฒเบเปเบเบฑเบเบเบฒเบเบเบฒเบเบเบญเบเบเบฒเบเบเบงเบเบชเบญเบเบฅเบฐเบซเบฑเบ;
- เบเบฑเปเบเบเบฑเปเบเบเปเปเบกเบฒเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเปเบซเบเบเบปเบเปเบฅเบฐเบเบฒเบเบเบดเบเบฒเบฅเบฐเบเบฒเบเบตเปเบขเบนเปเปเบเบทเปเบญเบเบซเบฅเบฑเบเบฅเบฐเบซเบฑเบเบเบตเปเบซเบผเบทเบเบดเปเบเบเบฑเปเบ.
เปเบเบเบเบปเบเบเบฐเบเบดเบเปเบฒเบเบชเปเบฒเบเบเปเบฒเบฎเปเบญเบเบเปเบเบถเบเปเบเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเบปเบเบเบฐเบเบฒเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบซเบผเบทเปเบเปเบฎเบฑเบเบเปเบฒเบเบถเบเบเปเบฒเปเบซเบฑเบ. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเปเบฒเบเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบเบงเบฝเบเบเปเบฝเบงเบเบฑเบเบฅเบฑเบเบชเบฐเบเบฐเบเบตเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเปเบซเบผเบฒเบเบเบงเปเบฒเบซเบเบถเปเบเบงเบดเบเบต, เบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเบเปเบฒเบฎเปเบญเบเบเปเบเบถเบเบเปเบญเบเบเบตเปเบเบฐเบเบฝเบเบฅเบฐเบซเบฑเบเบเปเบฒเบญเบดเบเปเบเบทเปเบญเปเบเปเบเบเบฑเบเปเบเบงเบเบงเบฒเบกเบเบดเบเบเบญเบเบเปเบฒเบเปเบฅเบฐเบเบถเบเบชเบฒเบซเบฒเบฅเบทเบเปเบฝเบงเบเบฑเบเปเบเบเบเบฒเบเบเบญเบเบเปเบฒเบเบเบฑเบเบเบนเปเบฎเปเบงเบกเบกเบทเบเบญเบเบเปเบฒเบ. เบเปเบฒเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบกเปเบเบเปเบฒเบเบเบฒเบ, เบเบฒเบเบฎเปเบญเบเบเปเบเบถเบเปเบกเปเบเปเบเบตเบเปเบกเบทเปเบญเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเปเปเบฎเบฑเบเปเบฅเปเบง, เบกเบธเปเบเบซเบกเบฑเปเบ, เปเบฅเบฐเบชเบฒเบกเบฒเบเบชเบปเบเบเบฐเบเบฒเปเบเป. เปเบเบเบฒเบเบชเบฐเบเบฒเบเบฐเบเบฒเบ, เบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเบเบฒเบเปเบเบตเบ PR เบเบฝเบเปเบเปเบชเปเบฒเบฅเบฑเบเปเบซเบเบเบปเบเบเบฒเบเบเบงเบเบเบธเบกเบเบธเบเบเบฐเบเบฒเบ: เปเบเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเบเบชเบญเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบซเบผเบทเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเบงเบเบชเบญเบเบฅเบฐเบซเบฑเบ. เบเปเปเบงเปเบฒเปเบเบปเปเบฒเบเบฑเบเบชเบดเบเปเบเบซเบเบฑเบ, เบขเปเบฒเบฅเบทเบก @mention เบเบปเบเบเบตเปเปเบเบปเปเบฒเบเปเบญเบเบเบฒเบเบเบฒเบเบญเบฐเบเบธเบกเบฑเบเปเบเบเปเบฒเบฎเปเบญเบเบเปเบเบถเบเบเบญเบเปเบเบปเปเบฒ.
เปเบเบเบเบปเบเบเบฐเบเบด, เปเบกเบทเปเบญเบชเปเบฒเบ PR, เบเปเบฒเบเปเบฎเบฑเบเบเบฑเปเบเบเปเปเปเบเบเบตเป.
- เบเบตเปเบเบญเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเบชเบฐเปเปเบตเปเบซเปเบเปเบฝเบเปเบเบ เปเบฅเบฐเบขเบนเปเปเบช.
- เบเบฝเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบญเบฐเบเบดเบเบฒเบเบเบธเบเบเบฐเบชเบปเบเบเบญเบเบเบฒเบเบเปเบฝเบเปเบเบ. เบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเบเบฒเบ:
- เปเบเบตเปเบกเบชเบดเปเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบตเปเบเปเปเบเบฑเบเปเบเบเบเบฒเบเบฅเบฐเบซเบฑเบ, เบซเบผเบทเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบปเปเบฒเปเบเบชเบฐเบเบฒเบเบเบฒเบ, เปเบเบฑเปเบ: #bugs เบเบตเปเบเปเบฝเบงเบเปเบญเบเปเบฅเบฐเบเบปเบงเปเบฅเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒ;
- @mention เปเบโเบเบตเปโเบเปเบฒเบโเบเปเบญเบโเบเบฒเบโเบเบตเปโเบเบฐโเปเบฅเบตเปเบกโเบเบปเปเบโเบเบฒเบโเปเบฎเบฑเบโเบงเบฝเบโเบเบฑเบ, เบซเบผเบทโเบเปเบฒเบโเบชเบฒโเบกเบฒเบ @mention เปเบซเปโเปเบเบปเบฒโเปเบเบปเปเบฒโเปเบโเบเปเบฒโเบเบดเบโเปเบซเบฑเบโเบเบฒเบโเบซเบผเบฑเบ;
- เบเปเปเบซเปเปเบเบทเปเบญเบเบฎเปเบงเบกเบเบฒเบเบเปเบงเบเปเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบซเบผเบทเบเบงเบเปเบเบดเปเบเบเบฒเบเบขเปเบฒเบเบชเบฐเปเบเบฒเบฐ.
เปเบกเบทเปเบญเบเปเบฒเบเปเบเบตเบ PR, เบเบฒเบเบเบปเบเบชเบญเบเบเบตเปเบเบทเบเบเบฑเปเบเบเปเบฒเปเบซเปเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบเปเบฅเบฐเบเบตเบเบตเปเบเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบ. เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบตเปเบเบฐเปเบเบฑเบเบเบธเบเบเบฒเบเบเบปเบเบชเบญเบเบเบฝเบงเบเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบตเบเบเบฒเบเบขเบนเปเปเบเบเปเบญเบเบเบดเปเบ, เปเบเปเปเบเปเบเบเบเบฒเบเบเบตเปเปเบเปเบเบดเบเบญเบฒเบเบเบฐเบกเบตเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเบฐเบเบฒเบเบเบงเบเบชเบญเบเปเบเบตเปเบกเปเบเบตเบก.
เบเบฐเบฅเบธเบเบฒเบฅเปเบเปเบฒเปเบเบเบฐเบเบฐเบเบตเปเบเบฒเบเบเบปเบเบชเบญเบเบชเปเบฒเปเบฅเบฑเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบญเบเบเบฒเบเบเบปเบเบชเบญเบเบขเบนเปเบเปเบฒเบเบฅเบธเปเบกเบเบญเบเบเบฒเบเบชเบปเบเบเบฐเบเบฒ PR เปเบเบเบฒเบเปเบเปเบเบญเบ GitHub. เบชเบทเบเบเปเปเปเบกเบทเปเบญเบเบฒเบเบเบปเบเบชเบญเบเบชเปเบฒเปเบฅเบฑเบ.
๏ธ เปเบเบตเปเบกเบเบฑเบเบเบถเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบชเบธเปเบกเบเบญเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบฑเปเบเบเบญเบ CI
เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเปเบเปเปเบเบซเบผเบฑเบเบชเบนเบเบเบตเปเปเบกเปเบ arbitrary เปเบฅเบฐ subjective, เบเบงเบเปเบฎเบปเบฒเบเบงเบเบเบฐเปเบเบตเปเบกเบเบฑเบเบเบถเบเบเปเบฝเบงเบเบฑเบเปเบฅเบทเปเบญเบเบเบตเป.
๏ธ เบงเบฝเบเบเบฒเบ: เบชเปเบฒเบเบเบฒเบเบฎเปเบญเบเบเปเบเบถเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเปเบซเบฑเบเบเบตเป
- เบเปเบฝเบเปเบเบฑเบเบชเบฒเบเบฒ
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
เบเบฑเบ repository เบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบ. - เบชเปเบฒเบเบเปเบฒเบฎเปเบญเบเบเปเบเบถเบเบเบตเปเบกเบตเบเบทเป เปเบเบตเปเบกเบเปเปเบชเบฑเบเปเบเบ เบกเบตเบชเบฒเบเบฒเบซเบปเบง
bugfix
เปเบฅเบฐเบชเบฒเบเบฒเบเบทเปเบเบเบฒเบmaster
.
เปเบซเปเปเบเปเปเบเบงเปเบฒเบเปเบฒเบเปเบเปเบเบดเบเบเบฑเปเบ
master
เปเบเบฅเบฒเบง fork the repository เปเบเบเบฒเบเบฐเปเบเบฑเบ "เบชเบฒเบเบฒเบเบทเปเบเบเบฒเบ", เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเปเปเบเบญเบเบชเบฐเบซเบเบญเบเบเปเปเบเปเบฒเบฎเปเบญเบเบเปเบเบฒเบเบเปเบฝเบเปเบเบเบเบญเบเบญเบธเบเบฐเบเบญเบเบเบฒเบ repository.
เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเป repository เบเบญเบเบเปเบฒเบเบเบงเบเปเบเบดเปเบเบเบท.
เบเปเบฒเบชเบฑเปเบ
# ะะตัะตะบะปััะธัะตัั ะฝะฐ ะฒะตัะบั 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
hook เบเปเบญเบเบซเบเปเบฒเบเบตเป, เบเบฒเบเบเบปเบเบชเบญเบเบเบตเปเปเบเบตเปเบกเปเบซเบกเปเบเบฐเบเบทเบเบเปเบฒเปเบเบตเบ, เบเบฐเบฅเบปเปเบกเปเบซเบฅเบง, เปเบฅเบฐเบเปเปเบกเบตเบซเบเบฑเบเบเบฐเบซเบกเบฑเปเบเบชเบฑเบเบเบฒ. เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบตเปเบเบงเบเปเบฎเบปเบฒเบฎเบนเปเบงเปเบฒเบเบฒเบเบเบปเบเบชเบญเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบกเปเบเบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบ. เบซเบเปเบฒเบชเบปเบเปเบ, เบเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบฅเบฐเบซเบฑเบเบเปเบญเบเบเบฒเบเบเบปเบเบชเบญเบ, เบเบฒเบเบชเบญเบเปเบชเบฑเบเบเปเบฒเบเบญเบฒเบเบเบฐเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบฅเบฐเบซเบฑเบเปเบฎเบฑเบเบงเบฝเบเบเบฒเบกเบเบตเปเบเบฒเบเปเบงเป, เบซเบผเบทเบงเปเบฒเบเบฒเบเบเบปเบเบชเบญเบเบเปเปเปเบเปเบเบปเบเบชเบญเบเบซเบเบฑเบเปเบฅเบตเบ. เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเปเปเบเปเบเบฝเบเบเบฒเบเบเบปเบเบชเบญเบเปเบเบเบญเบเบเปเบฒเบญเบดเบ, เบเบงเบเปเบฎเบปเบฒเบญเบฒเบเบเบฐเบฅเบทเบกเบเปเบฝเบงเบเบฑเบเบเบงเบเบกเบฑเบเบเบฑเบเบซเบกเบปเบ, เปเบเบฒเบฐเบงเปเบฒเบเปเปเบกเบตเบซเบเบฑเบเบเบฐเปเบเบทเบญเบเบเบงเบเปเบฎเบปเบฒเบเปเบฝเบงเบเบฑเบเบกเบฑเบ.
เบเบฒเบเบเบปเบเบชเบญเบเบเบฒเบเบเบฑเบเบเบฐเบเบฒเปเบเบเบเบฑเบเปเบเบทเปเบญเบ (TDD)
TDD เปเบเบฐเบเปเบฒเปเบซเปเบเบฝเบเบเบฒเบเบเบปเบเบชเบญเบเบเปเบญเบเบฅเบฐเบซเบฑเบ. เบเบฐเบเบงเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบเบเบเบปเบเบเบฐเบเบดเปเบเบเปเบเป TDD เปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป.
- เปเบเบตเปเบกเบเบฒเบเบเบปเบเบชเบญเบ.
- เบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเบเบชเบญเบเบเบฑเบเบซเบกเบปเบเปเบฅเบฐเปเบซเปเปเบเปเปเบเบงเปเบฒเบเบฒเบเบเบปเบเบชเบญเบเปเบซเบกเปเบฅเบปเปเบกเปเบซเบฅเบง.
- เบเบฝเบเบฅเบฐเบซเบฑเบ.
- เบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเบเบชเบญเบ, เปเบซเปเปเบเปเปเบเบงเปเบฒเบเบฒเบเบเบปเบเบชเบญเบเบเบฑเบเบซเบกเบปเบเบเปเบฒเบ.
- เบเบฑเบเบเปเบฝเบเบฅเบฐเบซเบฑเบเบเบญเบเปเบเบปเปเบฒ.
- เปเบฎเบฑเบเบเปเบณ.
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบปเบเบเบญเบเบเบฒเบเบเบปเบเบชเบญเบเบเบตเปเบฅเบปเปเบกเปเบซเบฅเบงเบกเบฑเบเบเบฐเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเปเบเบฑเบเบชเบตเปเบเบ, เปเบฅเบฐเบชเบดเปเบเบเบตเปเบเปเบฒเบเบกเบฑเบเบเบฐเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเปเบเบฑเบเบชเบตเบเบฝเบง, เบงเบปเบเบเบญเบเบเบฑเบเปเบเบฑเบเบเบตเปเบฎเบนเปเบเบฑเบเปเบเบฑเบเบชเบตเปเบเบ - เบชเบตเบเบฝเบง - refactor.
๏ธเปเปเบฒเบงเบฝเบ
เบเปเบฒเบญเบดเบ, เบเบฐเบเบฒเบเบฒเบกเปเบฎเบฑเบเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเบฐเบเปเบญเบเปเบซเปเบเบงเบเปเบเบปเบฒเบฅเบปเปเบกเปเบซเบฅเบง, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบทเปเบกเปเบฅเบฐเบเบฐเบเบดเบเบฑเบเบเปเปเบเบงเบฒเบกเบเบญเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฑเปเบเบเบญเบ CI เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบ. เบเปเบฒเบเบเบฐเปเบซเบฑเบเบงเปเบฒเบเบฒเบเบเบปเบเบชเบญเบเปเบกเปเบเบเปเบฒเบ ("เบชเบตเบเบฝเบง").
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เปเบเบตเบเปเบเปเบฅเบฐเบซเบฑเบเปเบซเบกเปเบเบฑเบ repository เบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบเปเบฅเบฐเบชเบฑเบเปเบเบเปเบเบดเปเบเบเบฒเบเบเบปเบเบชเบญเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบเบฒเบเปเบเปเบเบญเบ GitHub เบขเบนเปเบเปเบฒเบเบฅเบธเปเบกเบเบญเบเบเบฒเบเบชเบปเบเบเบฐเบเบฒเบเบฒเบเบฎเปเบญเบเบเปเบเบถเบเปเบฅเบฐเบเบฒเบเบเบฑเบเบเบธเบเบชเบฐเบเบฒเบเบฐเบเบฒเบ PR.
- เบเปเบฝเบเปเบเบฑเบเบชเบฒเบเบฒ
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
hook เปเบเปเบเบทเบเบเบดเบเบเบฑเปเบ, เบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบเบญเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเบเบฐเบฅเบปเปเบกเปเบซเบฅเบง. - เบเบฒเบเบเบฑเปเบเบเบทเปเบกเบเปเปเบเบงเบฒเบกเบเบตเปเปเบชเป
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
. เบเปเบงเบเปเบซเบเบเบปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเปเปเบชเบฒเบกเบฒเบเบเบฝเบเปเบเป rewind HEAD master
เปเบเบเบญเบเบเปเบฒเบเบเบญเบเบเบฐเบเบนเป feature
. เปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบฅเบงเบกเบซเบผเบทเบเปเบฒเปเบเปเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒ feature
เบเบทเปเบเบเบน master
. GitHub เบเบปเบงเบเบดเบเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฐเบชเบปเบกเบเบฐเบชเบฒเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเปเบฒเบเปเปเบกเบตเบเปเปเบเบฑเบเปเบเปเบ. เบญเบฐเบเบดเบเบฒ, เปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบฑเบเบชเบญเบเบชเบฒเบเบฒเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบเบตเปเปเบเปเบเบเบฑเบเปเบเปเบญเบเบฐเบชเบฒเบ ci.md
. เบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒเบเบฒเบเบเบฑเบเบเบฑเบ, เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเปเบเปเปเบเบกเบฑเบเบเปเบงเบเบเบปเบเปเบญเบ.
เบฅเบงเบกเบซเบผเบท rebase
เบเปเบญเบเบเปเปเบกเบนเบ
- เบชเปเบฒเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเบฅเบงเบกเปเบเบตเปเบกเปเบเบตเบกเปเบฅเบฐเบเบฑเบเบเบถเบเบเบฐเบซเบงเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ.
- เบฎเบฑเบเบชเบฒเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเบเบปเปเบเบชเบฐเบเบฑเบเบเบญเบเบชเบฒเบเบฒเบเบตเปเบกเบตเปเบงเบฅเบฒเปเบเบตเบกเปเบฅเบฐเบเบนเปเบเบฝเบเบเบญเบเบเบงเบเปเบเบปเบฒ.
- เบเบฑเบเบเบถเบ SHA เบเบญเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเปเบฅเบฐเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบงเบเปเบเบปเบฒเปเบเบเบฒเบเบชเบปเบเบเบฐเบเบฒเบเบฒเบเบฎเปเบญเบเบเปเบเบฒเบเบเปเบฝเบเปเบเบ.
- เบเปเบญเบเบเบฒเบเบเบฒเบเปเบเปเปเบเบเปเปเบเบฑเบเปเบเปเบเบเบฑเปเบเบเบฝเบง.
- เปเบฎเบฑเบเปเบซเปเปเบฅเบทเปเบญเบเบเปเปเปเบเบฑเบเปเบชเบฑเปเบ.
- เปเบฅเบทเปเบญเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเปเบเปเบเบฒเบเปเบเบทเปเบญเบเบเบฒเบเบชเบฒเบเบฒเบเปเบฒเบเบงเบเบซเบฅเบฒเบ (reminiscent เบเบญเบเบชเบฒเบ IDE).
- เปเบฎเบฑเบเปเบซเปเบเบฒเบเบเบตเบเบฑเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบฒเบเบเบถเปเบ, e.g.
git bisect
เบซเบเปเบญเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบ - เบกเบฑเบเบเบฝเบเปเบเปเบเบฐเบเบญเบเบซเบฒเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒ merge.
เบเปเบฒเบเบญเบเปเบเบ
- Replays commits เบเบฒเบเบชเบฒเบเบฒเบเบฐเบเบธเบเบฑเบเบขเบนเปเปเบเบดเบเบชเบธเบเบเบญเบเบชเบฒเบเบฒเบเบทเปเบเบเบฒเบเบซเบเบถเปเบเบซเบผเบฑเบเบเบฒเบเบญเบทเปเบ.
- เบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเปเบซเบกเปเบเบฑเบ SHAs เปเบซเบกเปเปเบกเปเบเบเบทเบเบชเปเบฒเบเบเบถเปเบ, เปเบฎเบฑเบเปเบซเปเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเปเบ GitHub เบเบปเบเบเบฑเบเบเปเบฒเบฎเปเบญเบเบเปเบเบฒเบเบเบถเบเบเบปเปเบเบชเบฐเบเบฑเบ, เปเบเปเบเปเปเปเบกเปเบเบเปเบฒเบเบดเบเบเปเบฒเปเบซเบฑเบเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ.
- เบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเบชเบฒเบกเบฒเบเบเบทเบเบฅเบงเบกเปเบเบปเปเบฒเบเบฑเบเปเบซเบกเปเปเบฅเบฐเบเบฑเบเปเบเบเปเบเบเบฐเบเบงเบเบเบฒเบ, เบซเบผเบทเปเบกเปเบเบฐเบเบฑเปเบเบเบฒเบเบฅเบงเบกเปเบเบปเปเบฒเปเบเบฑเบเบญเบฑเบเบเบฝเบงเบเบฑเบ.
- เบเปเปเบเบฑเบเปเบเปเบเบซเบผเบฒเบเบญเบฑเบเบญเบฒเบเบเบฐเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเปเบเปเปเบ.
- เบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเปเบเบทเปเบญเบฎเบฑเบเบชเบฒเปเบฅเบทเปเบญเบเปเบชเบฑเปเบ.
- เปเบฅเบทเปเบญเบเบญเบฒเบเบเบฐเบญเปเบฒเบเบเปเบฒเบเบเบงเปเบฒเบเบฒเบเปเบเบเบตเปเบกเบฑเบเบเปเปเบเบฒเบงเปเบเบตเบเปเบเปเบเบเบเปเปเบกเบตเปเบซเบเบเบปเบเบญเบฑเบเบชเบปเบกเปเบซเบเบชเบปเบกเบเบปเบ.
- เบเบฒเบเบเบตเบเบฑเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบฅเบฐเบเบฒเบเปเบเปเปเบเบเบฑเบเบซเบฒเปเบกเปเบเบเปเบฒเบเบเบถเปเบเปเบฅเบฑเบเบเปเบญเบ: เปเบฎเบฑเบเปเบซเปเบกเบฑเบเปเบเบฑเบเปเบเปเบเป
git bisect
, เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบซเป rollbacks เบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบตเปเบเบฑเบเปเบเบเปเบฅเบฐเบเบฒเบเบเบฐเปเบเบซเบผเบฒเบเบเบถเปเบ.
- เบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบเบฒเบเปเบเบตเบเปเบเปเบชเบฒเบเบฒเบเบตเปเบกเบตเบเบฒเบเปเบเบทเปเบญเบเบเปเบฒเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเบเบตเปเบกเบตเบเบธเบ
--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
.
๏ธ เบงเบฝเบเบเบฒเบ: เบญเบฐเบเบธเบกเบฑเบเบเบฒเบเบฎเปเบญเบเบเปเบเบถเบ "เบเบฒเบเบเบปเบเบเบงเบเบเบทเบเบเบฑเปเบเบเบญเบ"
- เปเบเบตเบเบเบฒเบเบฎเปเบญเบเบเปเบเบถเบ.
- เบเบปเบ "เบเบฒเบโเบฎเปเบญเบโเบเปโเบเบฒเบโเบเบถเบโเบฅเบงเบกโ"โ.
- เบเบปเบ "เบขเบทเบเบขเบฑเบเบเบฒเบเบฅเบงเบก".
- เบเบปเบ "เบฅเบถเบเบชเบฒเบเบฒ" เปเบเบฒเบฐเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบญเบเบเบฒเบเบกเบฑเบเบญเบตเบเบเปเปเปเบ.
เบเบตเปเปเบกเปเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบเบญเบเปเบเบปเปเบฒเปเบเบเบฐเบเบฐเบเบตเป
เบเบฐเบฅเบดเบเบเบฐเบเบฑเบเบเบดเบเบเบฒเบ
เบกเบฑเบเปเบเปเบเบทเบเบเปเบฒเบงเบงเปเบฒ "เบเบฒเบเบเบปเบเบชเบญเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเปเบเบดเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ, เปเบเปเบเปเปเปเบเบตเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเปเบเบดเบเบเบฒเบเบเบฒเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ." เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบกเบตเบเบฒเบเบเบปเบเบชเบญเบเปเบฅเบฐเบเบงเบเปเบเบปเบฒเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเปเบกเบตเบเบงเบฒเบกเบเบดเบเบเบฒเบ, เปเบกเบเปเบกเป insidious เปเบเปเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเบเบฐเบฅเบดเบ.
เปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเปเบเบฑเปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเบนเปเบฅ:
- เบชเบดเปเบเบเบตเปเบเบทเบเบเปเบฒเปเบเปเปเบเบเบฒเบเบเบฐเบฅเบดเบ;
- เบฅเบฐเบซเบฑเบเปเบเบเบฐเบเบนเป
master
เบกเบตเบเบงเบฒเบกเบเบดเบเบเบฒเบ, เบเบฒเบเบเบตเปเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบชเบฒเบกเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเปเบซเบกเป.
เบเปเบญเบเบเบงเบเบกเปเบงเบเบเบทเบเบซเบผเบทเปเบเปเปเบเบกเบฑเบเปเบเบชเบฐเบเบฑเบเบเปเปเปเบเบเป?
เบเบฒเบเบกเปเบงเบเบเบทเบเปเบกเปเบเบเบฐเบเบงเบเบเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเปเบชเบฐเบเบฑเบเบเปเบญเบเบซเบเปเบฒเบเบตเปเบเบตเบเบตเปเบฎเบนเปเบเบฑเบเบเบฑเบเบเบฒเบเบเบฐเบฅเบดเบเปเบฅเบฐเบเบฒเบเบเบฑเบเบเบทเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเบเบตเปเบกเบตเบเบงเบฒเบกเบเบดเบเบเบฒเบ. "เบเบฒเบเปเบเปเปเบเปเบเบเปเบฒเบเบซเบเปเบฒ" เปเบกเปเบเบเบฒเบเปเบเบตเปเบกเปเบเบตเบกเบเบญเบเบเบฒเบเปเบเปเปเบ master
เปเบฅเบฐโเบเบฒเบโเบเปเบฒโเปเบเปโเบชเบฐโเบเบฑเบโเปเบซเบกเปโเปเบโเบเบฑเบโเบเบตโเบเบตเปโเปเบเบฑเบโเปเบโเปเบเปโ. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ APIs เปเบฅเบฐ schemas เบเบฒเบเบเปเปเบกเบนเบเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบเปเบญเบเบงเปเบฒเบฅเบฐเบซเบฑเบเบเบทเบเบเปเบฒเปเบเปเบเปเปเบเบเบฒเบเบเบฐเบฅเบดเบ, เบเปเบงเบเบเบฒเบเบเบฑเบเบชเบปเปเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเปเบฅเบฐเบเบฒเบเบเบธเปเบกเบเบญเบเบเบฒเบเบเบปเบเบชเบญเบเบเบตเปเบเบต, เปเบเบเบเบปเปเบงเปเบเปเบฅเปเบงเบเบฒเบเบกเปเบงเบเบเบทเบเปเบกเปเบเบกเบตเบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบเปเบฅเบฐเบกเบตเบเบงเบฒเบกเบชเปเบฝเบเบซเบผเบฒเบเบเปเบงเบฒเบเบฒเบเปเบเปเปเบเปเบเบชเบฐเบเบฑเบเบเปเปเปเบ.
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ rolling back เบเปเปเบกเบตเบเบงเบฒเบกเบชเปเบฝเบเปเบเปเปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบชเบฑเปเบเบเบฒเบเบเบตเป, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบฑเบเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบงเบเปเบฎเบปเบฒ
- เปเบเปเปเบเบเปเปเบเบดเบเบเบฒเบเบเปเบฝเบงเบเบฑเบเบเบฐเบฅเบดเบเบเบฐเบเบฑเบเปเบงเปเบเบปเปเบฒเบเบตเปเปเบเบฑเบเปเบเปเบเป;
- เปเบฎเบฑเบเปเบซเปเบฅเบฐเบซเบฑเบเปเบ
master
เบเบฑเบเบเบตเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบงเบฝเบเปเบฎเบฑเบเบเบฒเบเบเปเบฒเปเบซเบกเป.
๏ธเปเปเบฒเบงเบฝเบ
- เบเปเบฝเบเปเบเบฑเบเบชเบฒเบเบฒ
master
เปเบเบเปเบญเบเบเบดเปเบ. - เบเบฑเบเบเบธเบเบเปเบญเบเปเบเบฑเบเบกเปเบฝเบเบเปเบญเบเบเบดเปเบเบเบฒเบเบเปเบญเบเปเบเบฑเบเบเปเปเบกเบนเบเบเบฒเบเปเบ.
- เบเบฑเบเบเบทเบเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเบเบฒเบเบฅเบงเบก PR เบเบฑเปเบเบเบญเบเบเบฒเบเบเบปเบเบเบงเบเบเบทเบ ะฒ
master
. - เปเบเบตเบเปเบเปเบเบฒเบเบเปเบฝเบเปเบเบเปเบเบเบฑเบเบเปเบญเบเปเบเบฑเบเบเปเปเบกเบนเบเบเบฒเบเปเบ.
เบเบตเปโเปเบกเปเบโเบเบฐโเบซเบงเบฑเบโเบชเบฒเบโเบเบญเบ repository เบเบตเปโเบกเบตโเบเปเบฒโเบซเบกเบฑเปเบโเบชเบฑเบโเบเบฒโเบเบฒเบโเบฅเบงเบกโเปเบเบปเปเบฒโเบเบฑเบโเบเบทเบโเปเบโเบเปเบญเบโ
เบเปเบฒเบชเบฑเปเบ
# ะะตัะตะบะปััะธัะตัั ะฝะฐ ะฒะตัะบั master.
git checkout master
# ะะฑะฝะพะฒะธัะต ะปะพะบะฐะปัะฝัะน ัะตะฟะพะทะธัะพัะธะน ะธะท ัะดะฐะปัะฝะฝะพะณะพ ัะตะฟะพะทะธัะพัะธั.
git pull
# ะัะผะตะฝะธัะต ะบะพะผะผะธั ัะปะธัะฝะธั PR Steps review ะฒ master.
# ะั ะพัะผะตะฝัะตะผ ะบะพะผะผะธั ัะปะธัะฝะธั, ะฟะพััะพะผั ะฝะฐะผ ะฝัะถะฝะพ ะฒัะฑัะฐัั ะฒะตัะบั ะธััะพัะธะธ, ะบะพัะพััั ะผั ะทะฐั
ะพัะธะผ ะพััะฐะฒะธัั
git show HEAD
# ะฟัะตะดะฟะพะปะพะถะธะผ, ััะพ ะบะพะผะผะธั, ะบะพัะพััะน ะฑัะป ะฟะพัะปะตะดะฝะธะผ ะฒ ะฒะตัะบะต master ะดะพ ัะปะธัะฝะธั, ะฑัะป ะพัะพะฑัะฐะถัะฝ ะฟัะตะดัะดััะตะน ะบะพะผะฐะฝะดะพะน ะฟะตัะฒัะผ
git revert HEAD -m 1
# ะผะพะถะตัะต ะฝะต ะผะตะฝััั ัะพะพะฑัะตะฝะธั ะบะพะผะผะธัะพะฒ
# ะะฟัะฑะปะธะบัะนัะต ะธะทะผะตะฝะตะฝะธั ะฒ ัะดะฐะปัะฝะฝัะน ัะตะฟะพะทะธัะพัะธะน
git push
๏ธเบเบปเบเบชเบญเบเบเบปเบเปเบญเบ
เปเบซเปเปเบเปเปเบเบงเปเบฒเบงเปเบฒ ci.md
เบเปเปเบกเบตเบเปเปเบเบงเบฒเบก "sneaky bug" เบเปเปเปเบเบญเบตเบเปเบฅเปเบงเบซเบผเบฑเบเบเบฒเบ reverting commit.
เปเบเปเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบฑเปเบเบเบญเบ 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); });
- เบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเบเบชเบญเบเบขเบนเปเปเบเบเปเบญเบเบเบดเปเบเปเบเบทเปเบญเปเบซเปเปเบเปเปเบเบงเปเบฒเบเบงเบเปเบเบปเบฒเบเปเปเบฅเบปเปเบกเปเบซเบฅเบง.
- เปเบญเบปเบฒเบเปเปเบเบงเบฒเบก "เบเบฑเบเปเบกเบเปเบกเป sneaky" เปเบ
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
เปเบเบฅเบฒเบง fork the repository เปเบเบเบฒเบเบฐเปเบเบฑเบ "เบชเบฒเบเบฒเบเบทเปเบเบเบฒเบ", เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเปเปเบเบญเบเบชเบฐเบซเบเบญเบเบเปเปเบเปเบฒเบฎเปเบญเบเบเปเบเบฒเบเบเปเบฝเบเปเบเบเบเบญเบเบญเบธเบเบฐเบเบญเบเบเบฒเบ repository.
เบญเบฐเบเบธเบกเบฑเบเบเบฒเบเบฎเปเบญเบเบเปเบเบถเบ "เบเบฒเบเปเบเปเปเบเบเบธเบเบเบฐเบชเบปเบกเบเบฑเบ"
เบเบญเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเปเปเบ! เบเบฐเบฅเบธเบเบฒเบญเบฐเบเบธเบกเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบ master
เบเบฒเบเบเบฒเบเบฎเปเบญเบเบเปเบเบถเบ.
๏ธเปเปเบฒเบงเบฝเบ
- เบเบปเบ "เบเบฒเบโเบฎเปเบญเบโเบเปโเบเบฒเบโเบเบถเบโเบฅเบงเบกโ"โ.
- เบเบปเบ "เบขเบทเบเบขเบฑเบเบเบฒเบเบฅเบงเบก".
- เบเบปเบ "เบฅเบถเบเบชเบฒเบเบฒ" เปเบเบฒเบฐเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบญเบเบเบฒเบเบกเบฑเบเบญเบตเบเบเปเปเปเบ.
เบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเบเบงเบเบกเบตเปเบเปเบงเบฅเบฒเบเบตเป.
เบเบปเบกเปเบเบตเบ!
เบเปเบฒเบเปเบเปเบชเบณเปเบฅเบฑเบเบเบฑเปเบเบเบญเบเบเบฑเบเปเบปเบเบเบตเปเบเบปเบเบเบปเปเบงเปเบเปเบฎเบฑเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเปเบเบทเปเบญเบกเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบ.
เบเปเบฒเบเปเบฒเบเบชเบฑเบเปเบเบเปเบซเบฑเบเบเบฑเบเบซเบฒเปเบเปเบเบฑเบเบซเบผเบฑเบเบชเบนเบเบซเบผเบทเบฎเบนเปเบงเบดเบเบตเบเบฒเบเบเบฑเบเบเบธเบเบกเบฑเบ, เบเบฐเบฅเบธเบเบฒเบชเปเบฒเบเบเบฑเบเบซเบฒเปเบ
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com