แแกแฌแแแแแ Git แแ แซแแแแแแแ, แแแแ แแ แแกแฃแ แ แฌแแ แแแแแแแแแ, แ แแแแ แแฃแจแแแแก แฃแฌแงแแแขแ แแแขแแแ แแชแแ (CI) แกแแแแแแแแแแจแ? แแ แแฅแแแ แแกแฃแ แ แแฅแแแแ แงแแแแแแฆแแฃแ แ แกแแฅแแแแแแแแก แแแขแแแแแแชแแ? แแก แแฃแ แกแ แแแแชแแแ แแ แแฅแขแแแฃแ แฃแแแ แแแก GitHub แกแแชแแแแแแก แแแแแงแแแแแแ แฃแฌแงแแแขแ แแแขแแแ แแชแแแกแแแแก. แแก แแฃแ แกแ แแ แแ แแก แแแแแแแฃแแ แแงแแก แแกแขแแขแ, แ แแแแแแแช แจแแแแซแแแแ แฃแแ แแแแ แแแแฌแแแแฃแแแ; แแแ แแฅแแ, แแฅแแแ แจแแแกแ แฃแแแแ แแแแแ แแแฅแแแแแแแแก, แ แแกแแช แแแแแแแแแแ แ แแแแฃแ แแ แแแแแแแแ แกแแแฃแจแแแแ, แแกแแแ แ แแแแ แช แแแแแแแแ แแแแก. แแ แแแแฎแกแแแ แแแแ แแแก, แ แแแแกแแช แแฅแแแ แแแแแแแ แฉแแ แแฃแ แแแแแฏแแแก.
แฒ แแก แแแแแแแแ?
แแ แแแ แแกแแแ แแ แแแ, แฉแแแ แแแแแแแแ แจแแแฅแแแแ แขแแแแฃแ แ CI แแแแแฏแแแแก แฉแแแแแแแแแแก, แ แแช แแ แกแแแก แแแแแฎแกแแแ แแแแก แจแแกแแแแจแแแแ แแแแ. แกแฎแแ แกแแขแงแแแแแ แ แแ แแแฅแแแ, แฉแแแ แจแแแฅแแแแ แแ แฅแแแแแแแแแก แฉแแแแแแแแแแก, แ แแแแแแกแแช แแแแแแแแแ แแแ แแฎแแ แชแแแแแแแ แฃแฌแงแแแขแ แแแขแแแ แแชแแแก, แฃแฌแงแแแขแ แแแขแแแ แแชแแแก แแ แแก. แฉแแแ แแกแแแ แแแแแแแงแแแแแ แขแแกแขแแแแก แแแ แขแแ แแแแแแแฅแขแก แฉแแแแ CI แแ แแชแแกแแก แ แแแแฃแ แแแ แแแแฎแแแแแแกแแแแก.
แแก GIF แกแฅแแแแขแฃแ แแ แแฉแแแแแแก แแแแแแแฃแแแแแแก แแฅแแแแก แกแแชแแแจแ, แแฃแ แกแแก แแแแแแกแแก. แ แแแแ แช แฎแแแแแ, แแฅ แแ แแคแแ แแ แ แแฃแแ แแ แแฎแแแแ แงแแแแแแ แกแแญแแ แ.
แแฅแแแ แแแแแแแ แจแแแแแ แกแขแแแแแ แขแฃแ CI แกแชแแแแ แแแก:
- แแฃแจแแแแ แคแฃแแฅแชแแแแ;
- แฎแแ แแกแฎแแก แฃแแ แฃแแแแแกแแงแแคแแ แแแขแแแแขแฃแ แ แขแแกแขแแแแก แแแแแงแแแแแ;
- แแ แแแ แแขแแขแฃแแ แแแแชแแแแก แจแแกแ แฃแแแแ;
- แแแแจแขแแแแแแแก แจแแ แฌแงแแแกแแก แแแแคแแแฅแขแแก แแแแแแ แแแ (แจแแ แฌแงแแแก แแแแคแแแฅแขแ);
- แฌแแ แแแแแแก แแแ แแแแจแ แฌแแ แแแแฅแแแแแ แจแแชแแแแ.
แ แแก แแกแฌแแแแ?
แแฅแแแ แจแแซแแแแ แฃแแแกแฃแฎแแ แจแแแแแ แแแแฎแแแแก:
- แ แ แแ แแก แฃแฌแงแแแขแ แแแขแแแ แแชแแ (CI)?
- แ แ แขแแแแก แแแขแแแแขแแแแ แแแฃแแ แขแแกแขแแแ แแแแแแงแแแแแ CI-แจแ แแ แ แ แแแฅแแแแแแแแแก แกแแแแกแฃแฎแแ แฎแแแแ แแกแแแ?
- แ แ แแ แแก แแแแแแแแก แแแแฎแแแแแแ แแ แ แแแแก แแ แแก แแกแแแ แกแแญแแ แ?
- แ แ แแ แแก แขแแกแขแแ แแ แแแแขแแ แแแฃแแ แแแแแแแแ แแแ (TDD) แแ แ แแแแ แฃแแแแจแแ แแแแ แแก CI-แก?
- แฃแแแ แแแแแแ แแแแแ แแฃ แจแแแชแแแแ แชแแแแแแแแแ?
- แแแแแ แฃแแแก แแฃ แแแแกแฌแแ แแก แจแแแแแ แแแ แกแแแจแ?
แแแแแแแ แงแแแแแแ แแแแ แแแแแแ แ แแฆแแชแแแแก, แ แแแแ แแชแแ "แแแแแแแแก แแแแฎแแแแแแ", แแแแ แแ แจแแแแแแ แแแแแแฌแงแแแขแ แคแ แแแแแแก แแแแ แฃแแแแ แแแแแแกแฃแ แแ แแแแแแ แ แแแแแแแก, แ แแแ แจแแแแแชแแ แแแแแ แขแแฅแกแขแแก แกแแแแแแก แฎแแ แแกแฎแ. แแ แฎแแแแแฎแแ แแแแแแแงแแแแ โแแ แแแ แแแแกแข แกแฃแ แแแแกโ, แ แแแแ แช แแจแแแแแแ แ แแแแ โแแกแ แฃแแแแแโ, แกแแแแช แแแแแแแแแแ แ แแแแฃแ แแ แแงแแแแแแ แแแก แกแแแกแแฎแฃแ แจแ.
แ แ แแ แแก แฃแฌแงแแแขแ แแแขแแแ แแชแแ?
แฃแฌแงแแแขแ แแแขแแแ แแชแแ, แแ CI, แแ แแก แขแแฅแแแแฃแ แ แแ แแฅแขแแแ, แ แแแแแก แแ แแกแแช แแฃแแแแก แแแแแแฃแแ แฌแแแ แ แแแ แแแแแแแก แแแแแก แแแแก แกแแแ แแ แกแแชแแแจแ แแฆแแจแ แแ แแฎแแ แแแแแช แแ แแแฆแแแฃแแ แแแแ แแแแแช แฃแแแ แแงแแก แแแแแฃแแ แจแแชแแแแแแแก แแแ แแจแ.
แแ แขแแ แแแแแแ แแแแแแจแแ แแแแ แฃแแแแฎแแแแแแ
แแแแแแแก แฌแแ แขแแแ แแ แแก แแแขแแแ แแชแแแก แกแแฎแจแแ แ. แแแแแแ แแ แแแขแแแชแแแก, แ แแ แแแแแก แจแแ แฌแงแแ แแฎแแแแ แแฆแแจแ แแ แแฎแแ แแ แแ แแก แกแแแแแ แแกแ แแแแกแแแแแก, แ แแ แ แแแแฃแ แแ แแแฎแแแก แฃแฌแงแแแขแ แแแขแแแ แแชแแ. แแแแแแแแ แแ แแก แแฃแแแ, แกแแแแช แงแแแแ แแฆแแแก แแฎแแ แแแแก แแแแแ แแ แแแ แแแแแแแก แแแก แแ แแฎแแ แกแแฆแแแแก. แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแก แแ แแก แแแแแแ แฃแแ แฌแแแแแฆแแแแแแแ, แแแแแแแ แแแฆแแแฃแแแ, แ แแ แแฆแแจแ แแ แแฎแแ แแแแแแ แขแแแ แกแแแแแแ แแ แแฅแขแแแฃแแ, แกแแแชแแคแแแฃแ แ แแ แจแแกแแคแแ แแกแแ แกแฎแแแแแกแฎแแ แแแแแก แแฃแแแแแแกแแแแก.
แแแแแ แแ แแ แฌแแแแแฆแแแแแแแ แแ แแก แแก, แ แแ C++ แแฆแแ แแ แแก แแ แแแแแ แแ แแแ, แ แแแแแแช แแแแแแงแแแแแ แแแแแแแแ แแแแจแ แแ แฃแแ แแแแ, แฃแจแแชแแแแแ แจแแแ แแแแก แแแแฎแแแแ, แ แแแแ แช แแแแแกแขแฃแ แแแแก แกแแจแฃแแแแแ, แกแฃแกแขแแ. แขแแกแขแแแแก แแแแแแ แแ แแแแ แแแ (แแแแแแแแแ, แแ แแแฃแแ แขแแกแขแแแ แจแแกแ แฃแแแแฃแแ แแแแแแแแ แแแแ) แแกแแแ แฌแแ แแแขแแแแ แฃแแแ แแแกแ แฃแแแแก. แแ แแแแแแขแจแ, แกแแแแแแแแแแ แแแแแก แแแแกแแแ, แ แแ แแก แแแแฎแแแแ แแแฎแแแก แแ แแแแแแแแจแ "build + unit tests" แแแแแ แฉแแแฃแแแแ แแแ แแ แแฅแขแแแ แแแฎแแแแ, แแฃ แแก แฃแแแ แแ แแ แแก.
แฃแฌแงแแแขแ แแแขแแแ แแชแแ แแแแกแฎแแแแแแแ แฃแฌแงแแแขแ แแแฌแแแแแ (แฃแฌแงแแแขแ แแแฌแแแแแ, CD) แแแแ, แ แแ แแ แกแแญแแ แแแแก แแแแแจแแแแแก แแแแแแแแขแก แงแแแแแ แแแขแแแ แแชแแแก แชแแแแแก แจแแแแแ.
แกแแคแแฎแฃแ แแแแก แกแแ, แ แแแแแแกแแช แแแแแแแงแแแแแ แแฃแ แกแแก แแแแแแแแแแแจแ
- แจแแแงแแแแแ แฃแแฎแแแกแ แแแแ. แจแแฅแแแแแ แคแแแแแแ
master
. แฒแฃแจแแแแแก แแแฌแงแแแ. - แจแแฅแแแแแ แแแแแแแฃแแแแแแ แแฅแแแแก แแฎแแ แคแแแแแแแ. แแแจแแแแ แแ แแแแแกแชแแแแ แแแแแแแแ แแแแ. แกแแจแแ? แแแแแแแ แจแแแแแ แแขแแแแ. แแแ แชแฎแ? แจแแแกแฌแแ แแ แจแแชแแแแแแ แแ แขแแกแขแแแ แแ แกแชแแแแ แฎแแแแฎแแ.
- แแแแแแแ แแฅแแแแก แแแกแขแแแชแแฃแ แกแแชแแแจแ แแ แแแกแขแแแชแแฃแ แคแแแแแแจแ.
- แจแแฅแแแแแ แแแงแแแแแก แแแแฎแแแแ. แแแแแฎแแแแ แชแแแแแแแแแ, แแแแแแขแแ แแแขแ แแแแแแแฃแแแแแแ แแแกแแฃแกแแแก แแแแ แซแแแแแแกแแก. แแแแแ แแ แขแแกแขแแแ แคแฃแแฅแชแแแแแก แคแแแแแแจแ.
- แจแแ แฌแงแแ/แแแแแแแ แแแ แแกแขแแขแแกแแแ. แแแแแ แแ แขแแกแขแแแ แจแแ แฌแงแแแก แจแแแแแแ.
- แแแแแแแแแ แคแฃแแฅแชแแฃแ แ แคแแแแแแแแแ แฌแแ แแแแแแแแ.
- แแฃ แงแแแแแคแแ แ แแแ แแแ แฌแแ แแแแแแจแ แแแ แแแแฃแแ แแแ แแแแแก แแแแแแแแแแแจแ, แจแแแแ แแแ แชแแแแแแแแแ แแแกแขแแ แจแ.
๏ธ แแแแแแแแแ
แแแ แฌแแฃแแแแ, แ แแ แแแฅแแ แกแฌแแ แ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแ
แแ แแฃแ แกแแก แแแกแแแแแแแ แแแแญแแ แแแแแ
แแฅแแแ แจแแแแซแแแแ แแแแแแงแแแแ แแแแแกแแแแ แ Git แแแแแแขแ, แแแแ แแ แแ แแแแชแแ แแฎแแแแ แแ แซแแแแแแแก แแ แซแแแแแแก แฎแแแแกแแแแก.
แแแ แฌแแฃแแแแ, แ แแ แแแแแกแขแแแแ แแแฃแแ แแแฅแแ Git แแแแแแขแ, แ แแแแแแช แแฎแแ แก แฃแญแแ แก แแ แซแแแแแแก แฎแแแก
แแฃ แฏแแ แแ แแแฅแแ Git แแแแแแขแ, แ แแแแแแช แแฎแแ แก แฃแญแแ แก แแ แซแแแแแแก แฎแแแก, แจแแแแซแแแแ แแแแแแ แแแกแขแแแแชแแแก แแแกแขแ แฃแฅแชแแแแ
แแแแแแแแแ แกแแชแแแ
แแฅแแแ แฃแแแ แจแแฅแแแแ แแแ แแแ แแกแแ (แฉแแแแแแ)
แฒจแแกแ แฃแแแแฃแแแ? แแฃ แแฅแแแ แแ แจแแแแชแแแแแ แแแแฃแแแกแฎแแแแ แแแ แแแแขแ แแแ, แแฅแแแแ แแฃแ แกแแก แกแแชแแแ แกแแแแ แแฃแแแ แแแแแแซแแฎแแแ continuous-integration-team-scenarios-students
, แแก แแแแแแ แแแแก แแฅแแแแก GitHub แแแแแ แแจแจแ แแ URL แแกแ แแแแแแงแฃแ แแแ
https://github.com/<ะฒะฐัะต ะธะผั ะฟะพะปะทะพะฒะฐัะตะปั ะฝะฐ GitHub>/continuous-integration-team-scenarios-students
แฃแแ แแแแ แแ แแแกแแแแ แแก แแแแฃแ แแแแ <URL ัะตะฟะพะทะธัะพัะธั>
.
แแฃแแฎแแก แคแ แฉแฎแแแแแ แแแกแฌแแแก
<ััั>
แแก แแแจแแแแก, แ แแ แแฅแแแ แฃแแแ แจแแชแแแแแ แแกแแแ แแแแแแแแฅแแแแ แจแแกแแแแแแกแ แแแแจแแแแแแแแ.
แฒแแ แฌแแฃแแแ, แ แแ GitHub แแแฅแแแแแแแแ แจแแแแก แแ แแฃแ แกแแก แกแแชแแแแกแแแแก. แแฃ แแกแแแ แแ แแ แแก แฉแแ แแฃแแ, แแแฎแแแ, แฉแแ แแแ แแกแแแ แแแแ แแแก แจแฃแแจแ แแ แกแแแฃแ แแแ แฆแแแแแแ แแแฌแแแแฃแแแแแ, แ แแแแแแแช แจแแแแซแแแแ แแแฎแแแแ แแแฅแแแแแแแแแก แแแฌแแแแฃแแแแแ GitHub แแแขแแ แคแแแกแจแ.
แแฅแแแ แแแ แจแแซแแแแ แแฃแ แกแแก แแแกแ แฃแแแแแก แฉแแแ แแแกแขแ แฃแฅแชแแแก แจแแกแแแแแแกแแ, แแฃ GitHub Actions แแ แแ แแก แฉแแ แแฃแแ.
แแฅแแแ แงแแแแแแแแก แจแแแแซแแแแ แแแแแแงแแแแ GitHub-แแก แฃแแแ แ, แแแแแแฅแแแงแแแก Markdown, แ แแแ แแแฎแแ แกแแแก แแแแแแแแ แ แแแแแแแ แแแแ, แ แแแแแกแแช แแฅ แแฅแแแแ.
https://github.com/<your GitHub user name>/continuous-integration-team-scenarios-students/blob/master/ci.md
แแแกแฃแฎแแแแก แจแแกแแฎแแ
แแแฃแฎแแแแแแ แแแแกแ, แ แแ แแ แแฃแ แกแแก แแแกแ แฃแแแแแก แกแแฃแแแแแกแ แแแแ แแแแก แแแแแแแแ แกแแแฃแแแ แแแแก, แจแแกแแซแแแ แแแ แแแแฃแแ แกแแ แแฃแแแแแ แจแแแแฅแแแแ.
แแฃ แแ แซแแแแ, แ แแ แแ แแแกแแแ แ แ แฃแแแ แแแแแแแแ แแ แแ แจแแแแซแแแแ แแแแแ แซแแแแ, แจแแแแซแแแแ แแแแแฎแแแแ แแแแแก solution
, แ แแแแแแช แแฅแแแแก แกแแฌแงแแก แกแแชแแแจแแ.
แแแฎแแแ, แแ แแแแ แแแแแแแ solution
ะฒ master
แแฃแ แกแแก แแแแแแแแแแแจแ. แแฅแแแ แจแแแแซแแแแ แแแแแแงแแแแ แแก แคแแแแแแ แแแแก แแแกแแ แแแแแแ, แแฃ แ แ แฃแแแ แแแแแแแแ, แแ แจแแแแแ แแ แแฅแแแแ แแแแ แแแขแแ แแก, แงแแแแ แแ แจแแกแแซแแแแแแแแก แแแแแงแแแแแแ, แ แแแแแกแแช Git แแแแซแแแแก. แแฃ แแแแแแแแ แแแแแแ แแแ, แจแแแแซแแแแ แแแแแแแแ แจแแชแแแแแ แแฅแแแแ แคแแแแแแ master
แขแแขแแ solution
แแ แจแแแแแ แแแแแแงแแแแ แแฅแแแแ แกแแแฃแจแแ แแแ แแฅแขแแ แแ แแฅแแแแแแแก แกแแญแแ แ แแฃแ แกแแก แกแแคแแฎแฃแ แแ.
แแแแแแงแแแแ แแก แแฎแแแแ แแ แจแแแแฎแแแแแจแ, แแฃ แแแแแแแแแ แแญแแ แแแแแ
แฉแแแแแ แแ แแฅแแแแ แแแแ
git add .
git commit -m "Backing up my work"
แแก แแ แซแแแแแแแ
- แแแแแ แฅแแแแ
master
ะฒmaster-backup
; - แแแแแ แฅแแแแ
solution
ะฒmaster
; - แแแแแฎแแ แแฎแแ แคแแแแแแจแ
master
แแ แแแแแฌแแ แแ แกแแแฃแจแแ แแแ แแฅแขแแ แแแก แจแแแแแ แกแ; - แจแแฅแแแแแ "แแแแแฌแงแแแขแแก" แคแแแแแแ "แแแกแขแแ แแกแแแ" (แ แแแแแแช แแแ แ แแงแ "แแแแแฌแงแแแขแ") แแ แจแแแแฎแแแแแจแ, แแฃ แแแแแแแแจแ แแแแญแแ แแแแแ "แแแแแฌแงแแแขแแก" แคแแแแแแ.
git branch -m master master-backup
git branch -m solution master
git checkout master -f
git branch solution
แแ แแแแแฏแแแแก แจแแแแแ แจแแแแซแแแแ แแแแแแงแแแแ git log master
แแแแก แแแกแแ แแแแแแ, แ แแแแแ แแแแแแแฃแแแแ แแญแแ แแแแแ.
แแฅแแแ แจแแแแซแแแแ แแแแแแงแแแแ แแฅแแแแ แกแแแฃแจแแ แแแ แแฅแขแแ แแ แแ commit-แแ แจแแแแแแแแแ แแ:
git reset --hard <the SHA you need>
แแฃ แจแแแแแแ แแแแงแแคแแแ แฎแแ แ, แ แแฆแแช แแแแแแขแจแ แแแแแฌแแแ แกแแชแแแแก แแฅแแแแ แแแ แกแแแก แแแแแฅแแแงแแแแ แแแกแขแแแชแแฃแ แกแแชแแแจแ. แแ แแแแแแแฌแงแแแ แชแแแกแแฎแแ แแแฃแแแแแ แแแกแขแแแชแแฃแ แ แคแแแแแแ, แ แแแแกแแช แแแแก แแแแแแแ.
git push --force origin master
แแแฎแแแ แแแแแแแแแกแฌแแแแ, แ แแ แฉแแแ แแแงแแแแแ git push --force
. แแแแแแแแ แกแแแแ แแฃแแแ, แ แแ แแแแก แแแแแแแแ แซแแแแแ แฎแจแแ แแ แแแแแแแแ, แแแแ แแ แฉแแแ แแแแฅแแก แซแแแแแ แแแแแ แแขแฃแแ แกแชแแแแ แ แแฅ แแ แแ แกแแชแแแแก แแแแฎแแแ แแแแแ, แ แแแแแกแแช, แแแ แแ แแแแกแ, แแกแแแก แ แแก แแแแแแแก.
แแฃแจแแแแแก แแแฌแงแแแ
แแแแแฌแงแแ แฉแแแแ CI แแแแแฏแแแแก แกแแแก แจแแแแแแ. แฉแแแฃแแแแ แแ, แแฅแแแ แแฌแงแแแแแ แแ แแแแแฏแก แแแกแขแแแชแแฃแ แ แกแแชแแแแแแ แแแแแก แฃแแฎแแแกแ แแแ แกแแแก แจแแแแฌแแแแแ, แแแแ แแ แฉแแแ แฏแแ แแ แแแแฅแแก แแแแแแฃแ แ แกแแชแแแ, แแแแขแแ แฉแแแ แแแก แแแแแแ แแแ แแแกแขแแแชแแฃแ แแแแ.
๏ธ แแแแชแแแ: แแแแแแฎแแแ แแแแแแฃแ แ แกแแชแแแ, แจแแฅแแแแแ แคแแแแแแ master
, แแฃแจแแแแแก แแแฌแงแแแ
- แแฃแ แกแแก แกแแชแแแแแแ แแแแแแ แแแ
<URL ัะตะฟะพะทะธัะพัะธั>
. - แแแ แแแแ
npm install
แแฃแ แกแแก แกแแชแแแแก แแแ แแฅแขแแ แแแจแ; แฉแแแ แแแญแแ แแแแ 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 แกแแ แแแ แแ แแ build แแแ แแแแแ:
- แ แแแแกแแช แแแแ แแแแแฅแแแงแแแแฃแแแ แแแ แแ แคแแแแแแจแ/แกแแชแแแจแ.
- แแ แแแแแจแ แแแแแก แขแแกแขแแ แแแ แแแแแแแแ แแแแก.
- แจแแ แฌแงแแแก แแแขแแแชแแฃแ แ แจแแแแแ แจแแแแฌแแแแฃแแแ (แฉแแแฃแแแแ แแ
master
). - แ แแแแ แช แฃแฌแงแแแขแ แแแขแแแ แแชแแแก แแขแแแ/แฃแฌแงแแแขแ แแแฌแแแแแแก แแแแกแแแแแ
แ แแแแ แช แฌแแกแ, แ แแช แฃแคแ แ แกแฌแ แแคแแ แแฃแจแแแแก แกแแขแแกแขแ แแแแแแแฅแขแ, แแแ แฃแคแ แ แฎแจแแ แแ แจแแซแแแแ แแแก แแแจแแแแแก. แขแแแแฃแ แ แแขแแแแก แแแแแฌแแแแแ แจแแแซแแแแ แแกแ แแแแแแงแฃแ แแแแแแก.
- แแ แแแฃแแแก แกแฌแ แแคแ แขแแกแขแแแ - แแจแแแแแแก แแ แแก, CI แแแแกแแแแแจแ
- แแแแ แแ แแแฃแแแก แขแแกแขแแแ, แกแฌแ แแคแ แแแแแแแแแขแแก แแ แแแขแแแ แแชแแแก แขแแกแขแแแ - commit-แแ, CI แแแแกแแแแแจแ
- แแแแ แแแแแแแแแขแแกแ แแ แแแขแแแ แแชแแแก แขแแกแขแแแ - CI แแแแกแแแแแจแ
- แฃแกแแคแ แแฎแแแแแก แขแแกแขแแ แแแ, แแแขแแแ แแแแก แขแแกแขแแ แแแ แแ แกแฎแแ แจแ แแแแขแแแแแ แแ แซแแแ แแแฆแแ แแแฃแแ แขแแกแขแแแ - CI/CD แแแแกแแแแแแแจแ, แแแแ แแ แแฎแแแแ แแจแแแแแแแแแก แแแ แแแแฃแ แ แแแแแแแจแ/แแขแแแแแแ/แแแแกแแแแแแแจแ, แแแแแแแแแ, แแแแแแแกแฃแคแแแแแก แแแแแแแแขแแก แแแแแแแแแแกแแก แแ แฎแแแแ แแฃแจแแแแแกแแก.
๏ธ แแแแแแแแ
แแ แแแแแแแแแ แขแแกแขแแแแก แฎแแแแ แแแจแแแแแก แฏแแ แแ แซแแแแแแก แแแแแงแแแแแแ npm test
. แแแแก แจแแแแแ, แแแแแ แแแแแแแขแแ git hook แฉแแแแ แขแแกแขแแแแก แฉแแกแแขแแ แแแแแ. แแ แแก แแ แแ แแแญแแ แ: Git hook แแ แแแแแฎแแแแแ แกแแชแแแแก แแแฌแแแแ แแ, แจแแกแแแแแแกแแ, แจแแฃแซแแแแแแแ GitHub-แแก แแแแแแ แแแ แแแแแ แฉแแแ แแฃแ แกแแก แแแกแแแแแแแ แแ แแแ. Hook-แแก แแแกแแงแแแแแแแ แกแแญแแ แแ แแแจแแแแ install_hook.sh
แแ แแแแแแแแ แแ แคแแแแ repo/hooks/pre-commit
แแแแแแแแ แแ แแแ แแฅแขแแ แแแจแ .git/hooks/
.
แ แแแแกแแช แแฅแแแ แฉแแแแแแ แแแแแแแฃแแแแแก, แแแฎแแแ, แ แแ แขแแกแขแแแ แแแจแแแแฃแแแ แแ แแกแแแ แแแแฌแแแแแ, แแ แแก แแฃ แแ แ แแแ แแแแฃแแ แกแแแแแแซแ แกแแขแงแแแแ แกแแแจแ.
- แจแแแกแ แฃแแแ แขแแกแขแแแ แฎแแแแ แแ แซแแแแแแก แแแจแแแแแ
npm test
แแฅแแแแ แแฃแ แกแแก แกแแชแแแแก แกแแฅแแฆแแแแแจแ. แจแแแแแฌแแแ, แ แแ แขแแกแขแแแ แแแกแ แฃแแแแฃแแแ. - แแแแงแแแแ commit hook (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-แแ, แแก แฉแแแฃแแแแ แแ แแแแฆแฌแแแ แแแแฃแจแแแ แแก แแแแแฅแแแงแแแแแ แแ แกแแชแแแแก แแแ แแ แแกแแแ (แแแ แกแแแแแฃแ แ แฉแแแแแแ) แแ แแแ แแ แคแแแแแแจแ.
- แฉแแแแแแแแ, แแแแแแแแแ แ แแแแแแ แแแก แแแกแขแแแชแแฃแ แกแแแแแ แ แกแแชแแแก, แฅแแแแก แแแก แแแ แแ แแแกแขแแแชแแฃแ แแกแแก, แ แแแแแแช แแกแแแ แชแแแแแแแ แ แแแแ แช แฉแแแแแแ. แจแแแแแ แแก แแแแแแ แแแก แแ แแแ แกแแแแแฃแ แกแแชแแแก แแแแแแฃแ แแ แกแแแฃแจแแแ. แ แแแแกแแช แกแแแฃแจแแ แแแกแ แฃแแแแฃแแแ แแ แแแแแแแฃแแแแแแ แจแแกแ แฃแแแแฃแแแ, แแก แฃแแแซแแแแก แแแ แแแแแก แฉแแแแแแจแ, แกแแแแช แแกแแแ แฎแแแแแกแแฌแแแแแแ แกแฎแแแแแกแแแแก แแ แจแแแซแแแแ แแแขแแแ แแ แแแฃแแ แแงแแก แกแแแ แแ แกแแชแแแจแ. แแก แแแแแแแ แฉแแแฃแแแแ แแ แแแแแแงแแแแแ แฆแแ แแแแแก แแ แแแฅแขแแแจแ GitHub-แแ. แแก แแกแแแ แแแแแแงแแแแแ แฉแแแก แแแฌแแแแแ แแฃแ แกแจแ [Team Work and CI with Git] (
http://devops.redpill.solutions/ ). - แแแแแ แแ แแ แแแแแแแแ แแแแแแงแแแแ แแฎแแแแ แแ แแ แแแกแขแแแชแแฃแ แ แกแแชแแแ แแ แแฎแแแแ แคแแแแแแแก แแแแแแ
master
แแแแแแ แแแฃแแ แกแแชแแแ "แแแชแฃแแแ". แแ แกแชแแแแ แจแ, แแแแแแแแฃแแแฃแ แ แแแแแแแแแ แแแ แแฅแแแงแแแแแ แแแแแแแ แแแแก แแแกแขแแแชแแฃแ แ แกแแชแแแแก แคแแแแแแแแจแ, แ แแแ แกแฎแแแแแ แจแแฎแแแแ แแ แแแแก, แแฃ แงแแแแแคแแ แ แ แแแแแ, แจแแแแ แแแ แแแmaster
แกแแแ แแ แกแแชแแแ.
แแ แแแแแ แแขแฃแ แแฃแ แกแจแ แฉแแแ แแแแแแแงแแแแแ แกแแแฃแจแแ แแ แแชแแกแก, แ แแแแแแช แแงแแแแแก แคแแแแแแแแก.
แแแแแแแฅแแแงแแแ แฉแแแแ แแแแ.
๏ธ แแแแแแแแ
- แแแแแแฅแแแงแแแ แชแแแแแแแแแ แแแกแขแแแชแแฃแ แคแแแแแแจแ, แแแแแ แกแแฎแแแแ, แ แแแแ แช แแฅแแแแ แกแแแฃแจแแ แคแแแแแแ
แแ แซแแแแแแแ
git push --set-upstream origin feature
แจแแฅแแแแแ แแแงแแแแแก แแแแฎแแแแ
แจแแฅแแแแแ pull แแแแฎแแแแ แกแแแแฃแ แแ แแแแแฏแแแแก แแแแแฎแแแแ. แฒแแแแกแขแแแแ แแแ feature
แ แแแแ แช โแแแแแก แขแแขแโ แแ master
โแแแแแก แขแแขแแกโ แแกแแแแกแแ.
แแแ แฌแแฃแแแแ, แ แแ แแแแแแกแขแแแแ แแ
master
แแแก แฉแแแแแแ แกแแชแแแ แ แแแแ แช "แกแแแแแแกแ แคแแแแแแ", แแ แแ แแฃแแแกแฃแฎแแ แแฎแแแแแแก แแฃแ แกแแก แแแกแแแแแแก แกแแชแแแจแ แชแแแแแแแแแแก แจแแกแแฎแแ.
GitHub แแแแแแจแ โแแแแ แคแแแแแแโ แแ แแก แแก แคแแแแแแ, แ แแแแแแแแแช แแฅแแแ แแคแฃแซแแแแ แแฅแแแแก แกแแแฃแจแแแก, แฎแแแ โแฎแแแแซแฆแแแแแแ แคแแแแแแโ แแ แแก แแก แคแแแแแแ, แ แแแแแแช แจแแแชแแแก แจแแแแแแแแแแแฃแ แชแแแแแแแแแก.
แแแแแฎแแแแ แชแแแแแแแแแ, แแแแแแขแแ แแฎแแแ แแแแแแแฃแแแแแแ แแแกแแฃแกแแแก แแแแ แซแแแแแแกแแก
แแแงแแแแแก แแแแฎแแแแ (PR)
แแแงแแแแแก แแแแฎแแแแ (PR) แแ แแก แแแแแก แแแแฎแแแแแกแ แแ แแแแฃแแแแขแแชแแแก, แแกแแแ แแแแแก แแแแฎแแแแแก แฉแแขแแ แแแแก แกแแจแฃแแแแแ. Pull แแแแฎแแแแแแ แแแกแแฎแแแแแฃแแแ แแแแแแแแฃแแแฃแ แ แชแแแแแแแแแแก แแแแแแ แแแแจแ แแแขแแแ แแ แแแแก แแแแแแ แแแแ. แ แแแแ แช แฌแแกแ, แแแแแแแแ แแแแแแ แแแก แแ แแแฅแขแแก แแแกแขแแแชแแฃแ แแคแแชแแแแฃแ แกแแชแแแก แแ แแฃแจแแแแก แแแแแ แแแแแแแแ แแแแ. แแแแก แจแแแแแ แแก แแแแก แแแแก แแแแแก แแแ แแ แแแกแขแแแชแแฃแ แกแแชแแแจแ แแ แกแแฎแแแก แแคแแชแแแแฃแ แกแแชแแแแ แแแกแฃแฎแแกแแแแแแ แแแ แแแก แแแฆแแ (แแแแงแแแแแก) แแแกแ แแแแ แแแแแแแแ แแ แกแแชแแแแแจแ, แกแแแแช แแกแแแ แแแแแฎแแแแแแ แแ แจแแกแแซแแแ แแแขแแแ แแ แแแฃแแแ (แจแแ แฌแงแแ) แแแกแ. แแก แแแแชแแคแชแแ แแกแแแ แชแแแแแแแ แกแฎแแ แกแแฎแแแแแแ, แแแแแแแแแ, แจแแ แฌแงแแแก แแแแฎแแแแ.
แแฅแแแ แแแแแแแแแ แแ แแญแแ แแแแแ แแแแแแงแแแแ GitHub-แแก แแ แแกแแแแกแ แแแแขแคแแ แแแแแก pull แแแแฎแแแแแก แคแฃแแฅแชแแ. แแแแแแแแ แแแแก แแฃแแแแแแ แจแแแซแแแแ แแแแแแงแแแแ แแแแฃแแแแแชแแแก แกแฎแแ แแแแแแแแ, แแแ แจแแ แแก แแแ แแกแแแ แแแแฃแแแแแชแแ, แฎแแแแแแ แแแ แแแ แแ แแ. แแฅ แแ แแก แ แแแแแแแแ แแแแแแแ:
- แแ แแแแแแแแฃแแ แแแกแแฃแกแแแแ แแแแแ แแขแฃแ แแแแแฅแกแแก แชแแแแแแแแแแแ แแแแแแจแแ แแแแ;
- แ แแแแ แช แแแขแแขแแกแขแแ แแก แแ แแแแแแแแแก แแแแ แแแแแแแแ แ แกแแแฃแจแแแก แจแแกแแฎแแ แฃแแฃแแแแจแแ แแก แกแแแแฎแแแแ;
- แแแแแฅแกแแก แแแแฎแแแแแก แคแแ แแแแแแแแ;
- แ แแแ แแแแแแแแแแแ แแแแแแ แแแ แแฃ แแ แแแแแก แฃแแแ แแ แกแแแฃแแ แแแแแแแแ แแ แแแกแแแ แแแแแ.
แ แแแแ แช แฌแแกแ, แแฅแแแ แฅแแแแ แแแงแแแแแก แแแแฎแแแแแก, แ แแแแกแแช แแญแแ แแแแแ แ แแแแแก แแแแฎแแแแ แแ แแแแแฎแแแฃแ แแแแก แแแฆแแแ. แแแแแแแแแ, แแฃ แแฅแแแ แแฃแจแแแแ แคแฃแแฅแชแแแแ, แ แแแแแแช แจแแแซแแแแ แแแแฎแแ แชแแแแแแก แแ แแแ แแแขแ แแแแ, แจแแแแซแแแแ แจแแฅแแแแ pull-แแแแฎแแแแ แแแแแก แแแ แแแ แกแขแ แแฅแแแแแแ, แ แแแ แแแฃแแแแ แแ แแฅแแแแ แแแแแแ แแ แแแแแฎแแแแ แแฅแแแแ แแแแแแแ แแฅแแแแก แแแแแแแ แแขแแ แแแแแ. แแฃ แกแแแฃแจแแ แฃแคแ แ แแแ แขแแแแ, แแแแแแแแก แแแแฎแแแแ แแฎแกแแแแ, แ แแแแกแแช แ แแฆแแช แฃแแแ แจแแกแ แฃแแแแฃแแแ, แฉแแแแแแแแ แแ แจแแแซแแแแ แแแแแฎแแแแก. แแแแแแ แ แกแชแแแแ แจแ, แจแแแซแแแแ แแแแญแแ แแแ PR-แแก แแแฎแกแแ แแฎแแแแ แฎแแ แแกแฎแแก แแแแขแ แแแแก แแแแแแแแแก แแแแ: แแแขแแแแขแฃแ แ แขแแกแขแแแแก แแแกแแจแแแแแ แแ แแแแแก แแแแแฎแแแแแก แแแฌแงแแแ. แ แแช แแ แฃแแแ แแแแแฌแงแแแขแแ, แแ แแแแแแแฌแงแแแ @แแแฎแกแแแแ แแก แแแแแแแแแแ, แแแกแ แแแแฎแแแแแช แแกแฃแ แ แแฅแแแแ แแแแแแแแก แแแแฎแแแแแจแ.
แ แแแแ แช แฌแแกแ, แแแแ แแก แจแแฅแแแแกแแก แแแแแแแ แจแแแแแแก.
- แแแฃแแแแแ แ แแก แจแแชแแแแก แกแแแแแแแแ แแ แกแแ.
- แแแฌแแ แแ แแฆแฌแแ แ, แ แแแแแจแแช แแฎแกแแแแแ แชแแแแแแแแแแก แแแแแแ. แจแแแซแแแแ แแแแแแแแก:
- แแแแแแขแแ แ แแแแ แแแแจแแแแแแแแแ, แ แแช แแ แแ แแก แแจแแแ แ แแแแแแแ, แแ แ แแแแ แกแแกแแ แแแแแ แแแแขแแฅแกแขแแก แแแกแแแแแแ, แ แแแแ แแชแแ แจแแกแแแแแแกแ #แจแแชแแแแแแ แแ แฉแแแแแแแ แแแแ แแแ;
- @แแแแแจแแแ แแแแแกแแแแ แ, แแแกแแแแแช แแกแฃแ แ แแแแฌแงแแ แแฃแจแแแแ, แแ แจแแแแซแแแแ @แแฆแแแจแแแ แแกแแแ แแแแแแขแแ แแแจแ แแแแแแแแแแแ;
- แกแแฎแแแแ แแแแแแแแก แแแแฎแแแ แแ แ แแแแแจแ แแ แจแแแแแฌแแแ แ แแแแ แแแแแ แแขแฃแแ.
แ แแแแ แช แแ PR-แก แแแฎแกแแแ, แแกแแ แจแแแแฎแแแแแแจแ แแแแคแแแฃแ แแ แแแฃแแ แขแแกแขแแแ แจแแกแ แฃแแแแแ. แฉแแแแก แจแแแแฎแแแแแจแ, แแก แแฅแแแแ แขแแกแขแแแแก แแแแแ แแแแ แแแ, แ แแแแแแช แฉแแแ แฉแแแแขแแ แแ แแแแแแแแ แแแแ, แแแแ แแ แ แแแแฃแ แแ แแแฅแขแจแ แจแแแซแแแแ แแงแแก แแแแแขแแแแแ แขแแกแขแแแ แแ แจแแแแฌแแแแแแ.
แแแฎแแแ แแแแแแแแ แขแแกแขแแแแก แแแกแ แฃแแแแแก. แแฅแแแ แจแแแแซแแแแ แแฎแแแแ แขแแกแขแแแแก แกแขแแขแฃแกแ PR แแแกแแฃแกแแแก แแแแแจแ GitHub แแแขแแ แคแแแกแจแ. แแแแแ แซแแแแ แขแแกแขแแแแก แแแกแ แฃแแแแแก แจแแแแแ.
๏ธ แแแแแแขแแ แจแแแแจแแแ CI แแแแแฏแแแแก แกแแแก แจแแแแฎแแแแแแแแแก แจแแกแแฎแแ
แแ แแฃแ แกแจแ แแแแแงแแแแแฃแแ แกแแ แแ แแก แแแแแแแแฃแ แ แแ แกแฃแแแแฅแขแฃแ แ, แแแแก แจแแกแแฎแแ แฃแแแ แแแแแแแขแแ แจแแแแจแแแ.
๏ธ แแแแชแแแ: แจแแฅแแแแแ pull แแแแฎแแแแ แแ แแแแแแขแแ แแกแแแแก
- แคแแแแแแแ แแแแแ แแแ
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 แแแแแฏแแแแก แกแแแก แขแแฅแกแขแ. แแแฎแแแ, แ แแ แขแแกแขแแแ แแแแแก (โแแฌแแแแโ).
แจแแแแแ แแแแแแฅแแแงแแแ แแฎแแแ แแแแ แแแกแขแแแชแแฃแ แกแแชแแแจแ แแ แฃแงแฃแ แแ แขแแกแขแแแแก แแแจแแแแแก 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
แกแแแแ แแ แแแแ แแ แแแฃแจแแแแแแ.
แแก แฅแแแแก แกแแขแฃแแชแแแก, แ แแแแกแแช แแแกแขแแแชแแฃแ แ แคแแแแแแ master
แแฅแแก แฃแคแ แ แแฎแแแ แแแ แกแแ, แแแแ แ แแก, แ แแแแแแแแแช แฉแแแ แคแแแแแแก แแแคแฃแซแแแแแแ feature
. แแแแก แแแแ แฉแแแ แแ แจแแแแแซแแแ แฃแแ แแแแ HEAD-แแก แแแแแฎแแแแ 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
.
๏ธ แแแแชแแแ: แแแแแแกแขแฃแ แแ pull-แแแแฎแแแแ โแแแแแฏแแแแก แแแแฎแแแแโ
- แแแฎแกแแแแ แแแงแแแแแก แแแแฎแแแแ.
- แแแแฌแแแแฃแแแ "แแแแ แแแแแแแแก แแแแฎแแแแ".
- แแแแญแแ แแ "แแแแแแกแขแฃแ แแ แจแแ แฌแงแแ".
- แแแแญแแ แแ "แฌแแจแแ แคแแแแแแก", แ แแแแแ แแก แแฆแแ แแแญแแ แแแแ.
แแก แแ แแก แแฅแแแแ แกแแชแแแ แแ แแแแแแขแจแ
แแ แแแฃแฅแขแแก แจแแชแแแแ
แแแแฅแแแแแ, แ แแ โแขแแกแขแแ แแแ แจแแแซแแแแ แแแแแแแงแแแแ แจแแชแแแแแแแก แแ แกแแแแแแก แกแแฉแแแแแแแแ, แแแแ แแ แแ แแกแแแแก แแแแ แแ แแ แกแแแแแแก แกแแฉแแแแแแแแโ. แแแฃแฎแแแแแแ แแแแกแ, แ แแ แฉแแแ แแแฅแแแแ แขแแกแขแแแ แแ แแแ แแ แแแแฉแแแแแก แจแแชแแแแแแ, แแแแแแ แฃแแ แฎแแ แแแแ แจแแแแแแแ แฌแแ แแแแแแจแ.
แแกแแ แกแชแแแแ แจแ แฉแแแ แฃแแแ แแแแ แฃแแแ:
- แ แ แแ แแก แแแแแแแแแฃแแ แฌแแ แแแแแแจแ;
- แแแแ แแแแแจแ
master
แจแแชแแแแแ, แกแแแแแแแช แแแแแแแแแ แแแก แจแแฃแซแแแแ แแฎแแแ แกแแแฃแจแแแก แแแฌแงแแแ.
แฃแแแ แแแแแแ แฃแแ แแฃ แแแแแกแฌแแ แ แจแแแแแ แแแ แกแแแจแ?
แฃแแแ แแแแ แฃแแแแ แแ แแก แชแแแแแแ, แแแ แแฃแแ แแแ แกแแแก แแแแแแแแแแก แแ แแชแแกแ แฌแแ แแแแแแจแ แแ แจแแชแแแแแก แจแแแชแแแแ แแแแแแแฃแแแแแแแก แแแแ แฃแแแแ. "Fixing Forward" แแ แแก แแแแแขแแแแ แคแแฅแกแแชแแ master
แแ แ แแช แจแแแซแแแแ แแแแ แแแแแแแแกแแ แแฎแแแ แแแ แกแแ. แแแแก แแแแ, แ แแ API-แแแ แแ แแแแแชแแแแ แแแแแก แกแฅแแแแแ แแชแแแแแ, แ แแแแกแแช แแแแ แแแแแแแแแฃแแแ แฌแแ แแแแแแจแ, แฃแฌแงแแแขแ แแแฌแแแแแแ แแ แแแ แแ แขแแกแขแแก แแแคแแ แแแ, แฃแแแ แแแแ แฃแแแแ, แ แแแแ แช แฌแแกแ, แแแแ แแ แฃแคแ แ แ แแฃแแ แแ แกแแ แแกแแแ, แแแแ แ แแแกแ แแแคแแฅแกแแ แแแ แจแแแแแ แแแ แกแแแจแ.
แแแแแแแแ แฃแแแ แแแแ แฃแแแแ แฉแแแแก แจแแแแฎแแแแแจแ แแ แแแแแ แ แแกแแก แแ แจแแแชแแแก, แแ แแแแก แแแแแแ, แ แแแแแ แแก แแแแซแแแแก แกแแจแฃแแแแแแก
- แแแแคแแฅแกแแ แแ แจแแชแแแแ แแ แแแฃแฅแขแแ แ แแช แจแแแซแแแแ แแแแ;
- แแแแแก แแแแแแแแ
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
แจแแ แฌแงแแแก แแแแ แฃแแแแแก แจแแแแแ แแฆแแ แจแแแชแแแก แขแแฅแกแขแก "sneaky bug".
แแแแคแแฅแกแแ แแ CI แแแแแฏแแแแก แกแแ แแ แแแแแ แฃแแแ แกแแแแแแกแขแ แ
แฉแแแ แแแแแแแแ แแแแแแ แฃแแแ แคแแแแแแแก แจแแ แฌแงแแแก แแแแแแแฃแแแแ. feature
. แแแ แแ แแแแแแ แแก แแ แแก, แ แแ แฉแแแ แแฎแแ แแ แแแแแ แ แจแแชแแแแ แแ แแแแฅแแก master
. แชแฃแแ แแแแแแ แแก แแ แแก, แ แแ แฉแแแแ แฃแฌแงแแแขแ แแแขแแแ แแชแแแก แแแแแฏแแแแก แซแแแ แคแแกแ แกแแแช แแแฅแ แ. แแกแ แ แแ, แแแแแแฃแ แจแแแแฎแแแแแจแ, แฉแแแ แฃแแแ แแแแแแแงแแแแ แจแแกแฌแแ แแแ แแ แแแแแแแฃแแแแแแแ feature
แแ แแแแแ แฃแแแ แแกแแแ master
แแแแแกแฌแแ แแแแกแแแ แแ แแแ.
แฉแแแ แจแแแแแซแแแ แแแแฃแแแแ แแ แแแแแแแก แกแฎแแแแแกแฎแแ แแแแ:
- แแแแแ แฃแแแ แแแแแแแฃแแแแ, แ แแแแแแช แแแแฃแฅแแแแก แจแแ แฌแงแแแก
feature
ัmaster
; - แแแแแฏแ แแแแแแแแฃแแแแก แงแแคแแแ
feature
.
แแแแแแแแ แแแแก แกแฎแแแแแกแฎแแ แแฃแแแ แแงแแแแแก แแแแกแฎแแแแแแฃแ แแแแแแแแแก แแ แจแแแแฎแแแแแจแ, แแแแ แแ แฉแแแ แแแแแแแขแแแ แกแแกแแ แแแแแ แแแแแแแฃแแแแแแก แชแแแแ แคแแแแแแจแ แแ แจแแแฅแแแแ แชแแแแ pull แแแแฎแแแแแก แแ แแฎแแแ แคแแแแแแแกแแแแก.
๏ธ แแแแแแแแ
- แจแแฅแแแแแ แแแแ แ.แฌ
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
แจแแฅแแแแแ แแแงแแแแแก แแแแฎแแแแ.
แจแแฅแแแแแ pull แแแแฎแแแแ แกแแแแฃแ แแ แคแฃแแฅแชแแแก แแแคแแฅแกแแ แแแ. แฒแแแแกแขแแแแ แแแ feature-fix
แ แแแแ แช โแแแแแก แขแแขแโ แแ master
โแแแแแก แขแแขแแกโ แแกแแแแกแแ.
แแแฎแแแ แแแแแแแแ แขแแกแขแแแแก แแแกแ แฃแแแแแก. แขแแกแขแแแแก แกแขแแขแฃแกแแก แแแฎแแ แจแแแแซแแแแ แแแแ แแก แแแกแแฃแกแแแก แแแแแจแ.
แแแ แฌแแฃแแแแ, แ แแ แแแแแแกแขแแแแ แแ
master
แแแก แฉแแแแแแ แกแแชแแแ แ แแแแ แช "แกแแแแแแกแ แคแแแแแแ", แแ แแ แแฃแแแกแฃแฎแแ แแฎแแแแแแก แแฃแ แกแแก แแแกแแแแแแก แกแแชแแแจแ แชแแแแแแแแแแก แจแแกแแฎแแ.
แแแแฎแแแแแก แแแแขแแแชแแแ "แคแฃแแฅแชแแแก แจแแกแฌแแ แแแ"
แแแแแแแ แจแแกแฌแแ แแแแกแแแแก! แแแฎแแแ, แแแแแแกแขแฃแ แแ แชแแแแแแแแแ master
แแแงแแแแแก แแแแฎแแแแแแแ.
๏ธ แแแแแแแแ
- แแแแฌแแแแฃแแแ "แแแแ แแแแแแแแก แแแแฎแแแแ".
- แแแแญแแ แแ "แแแแแแกแขแฃแ แแ แจแแ แฌแงแแ".
- แแแแญแแ แแ "แฌแแจแแ แคแแแแแแก", แ แแแแแ แแก แแฆแแ แแแญแแ แแแแ.
แแก แแ แแก แแก, แ แแช แแ แแแแแแขแจแ แฃแแแ แแฅแแแแแ.
แแแแแชแแแ!
แแฅแแแ แแแแกแ แฃแแแ แงแแแแ แแก แแแแแฏแ, แ แแแแแกแแช แฎแแแฎแ แฉแแแฃแแแแ แแ แแแแแก แฃแฌแงแแแขแ แแแขแแแ แแชแแแก แแ แแก.
แแฃ แจแแแแฉแแแแ แ แแแแ แแ แแแแแแแก แแฃแ แกแแแ แแแแแแจแแ แแแแ แแ แแชแแ, แ แแแแ แแแแฃแแฏแแแแกแแ แแก, แแแฎแแแ, แจแแฅแแแแแ แแ แแแแแแ
แฌแงแแ แ: www.habr.com