рдХреЗ рддрдкрд╛рдИрдВрд▓реЗ Git рдХрдорд╛рдгреНрдбрд╣рд░реВ рд╕рд┐рдХреНрдиреБрднрдПрдХреЛ рдЫ рддрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рдирдорд╛ Continuous Integration (CI) рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреЗрд░ рдмреБрдЭреНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ? рд╡рд╛ рд╣реБрдирд╕рдХреНрдЫ рддрдкрд╛рдИрдВ рдЖрдлреНрдиреЛ рджреИрдирд┐рдХ рдХрд╛рд░реНрдпрд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ? рдпреЛ рдХреЛрд░реНрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ GitHub рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ CI рдорд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕реАрдкрд╣рд░реВ рджрд┐рдиреЗрдЫред рдпреЛ рдХреЛрд░реНрд╕ рдХреБрдиреИ рдкреНрд░рдХрд╛рд░рдХреЛ рд╡рд┐рдЬрд╛рд░реНрдбрдХреЛ рд░реВрдкрдорд╛ рд╣реЛрдЗрди рдЬрд╕рдорд╛ рддрдкрд╛рдИрдВ рдХреНрд▓рд┐рдХ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдмрд░реБ, рддрдкрд╛рдИрдВрд▓реЗ рдорд╛рдирд┐рд╕рд╣рд░реВрд▓реЗ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдХрд╛рдордорд╛ рдЧрд░реНрдиреЗ рдХрд╛рд░реНрдпрд╣рд░реВ, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛рд▓реЗ рдиреИ рдЧрд░реНрдиреБрд╣реБрдиреЗрдЫред рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ рдЪрд░рдгрд╣рд░реВ рдкрд╛рд░ рдЧрд░реНрджреИ рдЬрд╛рдБрджрд╛ рд╕рд┐рджреНрдзрд╛рдиреНрддрдХреЛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдиреЗрдЫреБред
рд╣рд╛рдореА рдХреЗ рдЧрд░реНрдиреЗ рдЫреМрдВ?
рд╣рд╛рдореА рдЕрдЧрд╛рдбрд┐ рдмрдвреНрджреИ рдЬрд╛рдБрджрд╛, рд╣рд╛рдореА рдмрд┐рд╕реНрддрд╛рд░реИ рд╡рд┐рд╢рд┐рд╖реНрдЯ CI рдЪрд░рдгрд╣рд░реВрдХреЛ рд╕реВрдЪреА рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреЗрдЫреМрдВ, рдЬреБрди рдпреЛ рд╕реВрдЪреА рд╕рдореНрдЭрдиреЗ рдПрдХ рд░рд╛рдореНрд░реЛ рддрд░рд┐рдХрд╛ рд╣реЛред рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, рд╣рд╛рдореА рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг рдЧрд░реНрджрд╛ рдЧрд░реНрдиреЗ рдХреБрд░рд╛рд╣рд░реВрдХреЛ рд╕реВрдЪреА рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреЗрдЫреМрдВ, рдЬрдм рддрд┐рдиреАрд╣рд░реВ рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг рдЧрд░реНрдЫрдиреНред рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ CI рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдЕрдЭ рдпрдерд╛рд░реНрдердкрд░рдХ рдмрдирд╛рдЙрди рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реЗрдЯ рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред
рдпреЛ GIF рд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ рдХреЛрд░реНрд╕ рдорд╛рд░реНрдлрдд рдЕрдЧрд╛рдбрд┐ рдмрдвреНрджреИ рдЬрд╛рдБрджрд╛ рддрдкрд╛рдИрдВрдХреЛ рднрдгреНрдбрд╛рд░рдорд╛ рднрдПрдХрд╛ рдХрдорд┐рдЯрд╣рд░реВрдХреЛ рдпреЛрдЬрдирд╛рдмрджреНрдзрддрд╛ рджреЗрдЦрд╛рдЙрдБрдЫред рддрдкрд╛рдИрдВрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рдкрдирд┐ рдЬрдЯрд┐рд▓ рдЫреИрди рд░ рдХреЗрд╡рд▓ рд╕рдмреИрднрдиреНрджрд╛ рдЖрд╡рд╢реНрдпрдХ рдЫред

рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди рдорд╛рдирдХ CI рдкрд░рд┐рджреГрд╢реНрдпрд╣рд░реВ рдорд╛рд░реНрдлрдд рдЬрд╛рдиреБрд╣реБрдиреЗрдЫ:
- рд╕реБрд╡рд┐рдзрд╛рдорд╛ рдХрд╛рдо рдЧрд░реНрджреИ;
- рдЧреБрдгрд╕реНрддрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ;
- рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрд╛рд░реНрдпрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди;
- рд╢рд╛рдЦрд╛рд╣рд░реВ рдорд░реНрдЬ рдЧрд░реНрджрд╛ рджреНрд╡рдиреНрджреНрд╡ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗ (рдорд░реНрдЬ рджреНрд╡рдиреНрджреНрд╡);
- рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рддреНрд░реБрдЯрд┐ рд╣реБрдиреНрдЫред
рдХреЗ рд╕рд┐рдХреНрдиреЗ рд╣реЛ ?
рддрдкрд╛рдИрдВ рдирд┐рдореНрди рдЬрд╕реНрддрд╛ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рджрд┐рди рд╕рдХреНрд╖рдо рд╣реБрдиреБрд╣реБрдиреЗрдЫ:
- рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг (CI) рднрдиреЗрдХреЛ рдХреЗ рд╣реЛ?
- CI рдорд╛ рдХрд╕реНрддрд╛ рдкреНрд░рдХрд╛рд░рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛ рддрд┐рдиреАрд╣рд░реВ рдХрд╕реНрддрд╛ рдХрд╛рд░реНрдпрд╣рд░реВ рдЯреНрд░рд┐рдЧрд░ рдЧрд░рд┐рдиреНрдЫрдиреН?
- рдкреБрд▓ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рднрдиреЗрдХреЛ рдХреЗ рд╣реЛ рд░ рдХрд╣рд┐рд▓реЗ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫ?
- рдЯреЗрд╕реНрдЯ рдбреНрд░рд╛рдЗрднрди рдбреЗрднрд▓рдкрдореЗрдиреНрдЯ (TDD) рднрдиреЗрдХреЛ рдХреЗ рд╣реЛ рд░ рдпреЛ CI рд╕рдБрдЧ рдХрд╕рд░реА рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ?
- рдорд░реНрдЬ рдЧрд░реНрдиреЗ рдХрд┐ рд░рд┐рдмреЗрд╕ рдЧрд░реНрдиреЗ?
- рдЕрд░реНрдХреЛ рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗ рд╡рд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреЗ?
рдореИрд▓реЗ рд╕реБрд░реБрдорд╛ "рдкреБрд▓ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ" рдЬрд╕реНрддрд╛ рдХреБрд░рд╛рд╣рд░реВ рд╕рдмреИрддрд┐рд░ рдЕрдиреБрд╡рд╛рдж рдЧрд░реЗрдВ, рддрд░ рдЕрдиреНрддрддрдГ рдкрд╛рдардорд╛ рд░рд╣реЗрдХреЛ рдкрд╛рдЧрд▓рдкрдирд▓рд╛рдИ рдХрдо рдЧрд░реНрди рдХреЗрд╣реА рдард╛рдЙрдБрд╣рд░реВрдорд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд╛рдХреНрдпрд╛рдВрд╢рд╣рд░реВ рдлрд░реНрдХрд╛рдЙрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВред рдо рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдВ "рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рдХреЛ рд╕рд░реНрдЭрд┐рдХ" рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреБ рдЬрд╕реНрддреИ рдЕрджреНрднреБрдд рдХреНрд░рд┐рдпрд╛ "╨╖╨░╨║╨╛╨╝╨╝╨╕╤В╤М" рдЬрд╣рд╛рдБ рдорд╛рдирд┐рд╕рд╣рд░реВрд▓реЗ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдпрд╕рд▓рд╛рдИ рдХрд╛рдордорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреНред
рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг рднрдиреЗрдХреЛ рдХреЗ рд╣реЛ?
рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг, рд╡рд╛ CI, рдПрдХ рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рдЕрднреНрдпрд╛рд╕ рд╣реЛ рдЬрд╕рдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдЯреЛрд▓реА рд╕рджрд╕реНрдпрд▓реЗ рджрд┐рдирдХреЛ рдХрдореНрддрд┐рдорд╛ рдПрдХ рдкрдЯрдХ рдЖрдлреНрдиреЛ рдХреЛрдб рд╕рд╛рдЭрд╛ рднрдгреНрдбрд╛рд░рдорд╛ рдПрдХреАрдХреГрдд рдЧрд░реНрджрдЫ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреЛрдб рдХрдореНрддрд┐рдорд╛ рддреНрд░реБрдЯрд┐ рдмрд┐рдирд╛ рдирд┐рд░реНрдорд╛рдг рд╣реБрдиреНрдЫред
рдпрд╕ рд╢рдмреНрджрдХреЛ рдмрд╛рд░реЗрдорд╛ рдорддрднреЗрджрд╣рд░реВ рдЫрдиреНред
рдПрдХреАрдХрд░рдгрдХреЛ рдЖрд╡реГрддреНрддрд┐ рд╡рд┐рд╡рд╛рджрдХреЛ рдмрд┐рдиреНрджреБ рд╣реЛред рдХрддрд┐рдкрдпрд▓реЗ рддрд░реНрдХ рдЧрд░реНрдЫрдиреН рдХрд┐ рджрд┐рдирдорд╛ рдПрдХ рдкрдЯрдХ рдорд╛рддреНрд░ рдХреЛрдб рдорд░реНрдЬ рдЧрд░реНрдиреБ рд╕рд╛рдБрдЪреНрдЪреИ рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХреГрдд рд╣реБрди рдкрд░реНрдпрд╛рдкреНрдд рдЫреИрдиред рджрд┐рдЗрдПрдХреЛ рдЙрджрд╛рд╣рд░рдг рдПрдЙрдЯрд╛ рдЯреЛрд▓реА рд╣реЛ рдЬрд╣рд╛рдБ рд╕рдмреИрд▓реЗ рдмрд┐рд╣рд╛рди рдирдпрд╛рдБ рдХреЛрдб рддрд╛рдиреНрдЫрдиреН рд░ рд╕рд╛рдБрдЭрдорд╛ рдПрдХ рдкрдЯрдХ рдПрдХреАрдХреГрдд рдЧрд░реНрдЫрдиреНред рдпреЛ рдПрдХ рдорд╛рдиреНрдп рдмрд┐рдиреНрджреБ рднрдП рдкрдирд┐, "рджрд┐рдирдорд╛ рдПрдХ рдкрдЯрдХ" рдкрд░рд┐рднрд╛рд╖рд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░ рд╕рдмреИ рдЖрдХрд╛рд░рдХрд╛ рдЯреЛрд▓реАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдорд╛рдирд┐рдиреНрдЫред
рдЕрд░реНрдХреЛ рдЖрдкрддреНрддрд┐ рдпреЛ рдЫ рдХрд┐ C++ рдЕрдм рд╡рд┐рдХрд╛рд╕рдорд╛ рдкреНрд░рдпреЛрдЧ рд╣реБрдиреЗ рдПрдХ рдорд╛рддреНрд░ рднрд╛рд╖рд╛ рд░рд╣реЗрди, рд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрдордЬреЛрд░ рднрдПрдХреЛрд▓реЗ рд╕рдлрд╛ рдирд┐рд░реНрдорд╛рдг рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреБ рдкрдирд┐ рдХрдордЬреЛрд░ рдЫред рдХреЗрд╣реА рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдХреЛ рд╕реЗрдЯ (рдЬрд╕реНрддреИ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдЪрд▓реНрдиреЗ рдПрдХрд╛рдЗ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ) рдкрдирд┐ рдкрд╛рд╕ рд╣реБрдиреБрдкрд░реНрдЫред рд╣рд╛рд▓рдХреЛ рд╕рдореБрджрд╛рдп рдпрд╕рд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдмрдирд╛рдЙрдиреЗ рддрд░реНрдл рдЭреБрдХрд╛рд╡ рд░рд╛рдЦреНрдЫ, рд░ рднрд╡рд┐рд╖реНрдпрдорд╛ "рдирд┐рд░реНрдорд╛рдг + рдПрдХрд╛рдЗ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ" рд╕рдореНрднрд╡рддрдГ рдЖрджрд░реНрд╢ рдмрдиреНрдиреЗрдЫ, рдпрджрд┐ рдпреЛ рдкрд╣рд┐рд▓реЗ рдиреИ рднрдПрдХреЛ рдЫреИрди рднрдиреЗред
рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг рднрдиреНрджрд╛ рдлрд░рдХ рдирд┐рд░рдиреНрддрд░ рдЖрдкреВрд░реНрддрд┐ (рдирд┐рд░рдиреНрддрд░ рдбреЗрд▓рд┐рднрд░реА, CD) рдЬрд╕рдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдПрдХреАрдХрд░рдг рдЪрдХреНрд░ рдкрдЫрд┐ рд░рд┐рд▓реАрдЬ рдЙрдореНрдореЗрджрд╡рд╛рд░рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░реНрджреИрдиред
рд╣рд╛рдореАрд▓реЗ рдкрд╛рдареНрдпрдХреНрд░рдорднрд░рд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдЪрд░рдгрд╣рд░реВрдХреЛ рд╕реВрдЪреА
- рдкрдЫрд┐рд▓реНрд▓реЛ рдХреЛрдб рддрд╛рдиреНрдиреБрд╣реЛрд╕реНред рдмрд╛рдЯ рдПрдЙрдЯрд╛ рд╢рд╛рдЦрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
masterрдХрд╛рдо рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реНред - рддрдкрд╛рдИрдВрдХреЛ рдирдпрд╛рдБ рд╢рд╛рдЦрд╛рдорд╛ рдХрдорд┐рдЯрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдирд┐рд░реНрдорд╛рдг рд░ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдкрд╛рд╕ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ? рдЕрд░реНрдХреЛ рдЪрд░рдгрдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реНред рдЕрд╕рдлрд▓ рд╣реБрдиреБрд╣реБрдиреНрдЫ? рддреНрд░реБрдЯрд┐рд╣рд░реВ рд╡рд╛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдлреЗрд░рд┐ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рддрдкрд╛рдИрдВрдХреЛ рд░рд┐рдореЛрдЯ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд╡рд╛ рд░рд┐рдореЛрдЯ рд╢рд╛рдЦрд╛рдорд╛ рдкреБрд╢ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЫрд▓рдлрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЫрд▓рдлрд▓ рдЬрд╛рд░реА рд░рд╣рдБрджрд╛ рдердк рдХрдорд┐рдЯрд╣рд░реВ рдердкреНрдиреБрд╣реЛрд╕реНред рдлрд┐рдЪрд░ рд╢рд╛рдЦрд╛рдорд╛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рдорд╛рд╕реНрдЯрд░рдмрд╛рдЯ рдорд░реНрдЬ/рд░рд┐рдмреЗрд╕ рдХрдорд┐рдЯрд╣рд░реВред рдорд░реНрдЬ рдкрд░рд┐рдгрд╛рдордорд╛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рд╕реБрд╡рд┐рдзрд╛ рд╢рд╛рдЦрд╛рдмрд╛рдЯ рдЙрддреНрдкрд╛рджрдирдорд╛ рддреИрдирд╛рде рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рдпрджрд┐ рдХреЗрд╣реА рд╕рдордпрдХреЛ рд▓рд╛рдЧрд┐ рдЙрддреНрдкрд╛рджрдирдорд╛ рд╕рдмреИ рдХреБрд░рд╛ рд░рд╛рдореНрд░реЛ рдЫ рднрдиреЗ, рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрд▓рд╛рдИ рдорд╛рд╕реНрдЯрд░рдорд╛ рдорд░реНрдЬ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рддрдпрд╛рд░реА
рддрдкрд╛рдИрдВрд╕рдБрдЧ рд╕рд╣реА рд╕рдлреНрдЯрд╡реЗрдпрд░ рдЫ рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдпреЛ рдХреЛрд░реНрд╕ рд▓рд┐рдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗрдЫ ╨╕ .
рддрдкрд╛рдИрдВ рдХреБрдиреИ рдкрдирд┐ Git рдХреНрд▓рд╛рдЗрдиреНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрд░ рдо рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрдирдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдХрдорд╛рдгреНрдбрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреЗрдЫреБред
рддрдкрд╛рдИрдВрд╕рдБрдЧ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рд╕рдорд░реНрдерд┐рдд Git рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╕реНрдерд╛рдкрдирд╛ рднрдПрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдпрджрд┐ рддрдкрд╛рдИрдВрд╕рдБрдЧ рдХрдорд╛рдгреНрдб-рд▓рд╛рдЗрди Git рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдерд╛рдкрдирд╛ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдпрд╣рд╛рдБ рдкрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред .
рднрдгреНрдбрд╛рд░ рддрдпрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рддрдкрд╛рдИрдВрд▓реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ (рдлреЛрд░реНрдХ) рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред GitHub рдорд╛ред рдпреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рддрд┐рд▓рд┐рдкрд┐рд▓рд╛рдИ рдХрд▓ рдЧрд░реНрди рд╕рд╣рдордд рд╣реЛрдФрдВ рдкрд╛рдареНрдпрдХреНрд░рдо рднрдгреНрдбрд╛рд░.
рднрдпреЛ? рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫреИрди рднрдиреЗ, рддрдкрд╛рдИрдВрдХреЛ рдкрд╛рдареНрдпрдХреНрд░рдо рднрдгреНрдбрд╛рд░ рд╕рдореНрднрд╡рддрдГ рднрдирд┐рдиреНрдЫ continuous-integration-team-scenarios-students, рдпреЛ рддрдкрд╛рдИрдВрдХреЛ GitHub рдЦрд╛рддрд╛рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫ рд░ URL рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ
https://github.com/<╨▓╨░╤И╨╡ ╨╕╨╝╤П ╨┐╨╛╨╗╨╖╨╛╨▓╨░╤В╨╡╨╗╤П ╨╜╨░ GitHub>/continuous-integration-team-scenarios-studentsрдо рдпреЛ рдареЗрдЧрд╛рдирд╛рдорд╛ рдлреЛрди рдЧрд░реНрдиреЗрдЫреБред <URL ╤А╨╡╨┐╨╛╨╖╨╕╤В╨╛╤А╨╕╤П>.
рдХреЛрдг рдХреЛрд╖реНрдардХрд╣рд░реВ рдпрд╕ рд░реВрдкрдорд╛
<╤В╤Г╤В>рдпрд╕рдХреЛ рдЕрд░реНрде рддрдкрд╛рдИрдВрд▓реЗ рддреНрдпрд╕реНрддреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд▓рд╛рдИ рд╕рдореНрдмрдиреНрдзрд┐рдд рдорд╛рдирд▓реЗ рдмрджрд▓реНрдиреБ рдкрд░реНрдЫред
рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ GitHub рдХрд╛рд░реНрдпрд╣рд░реВ рдпрд╕ рдХреЛрд░реНрд╕ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдХреНрд╖рдо рдкрд╛рд░рд┐рдПрдХрд╛ рдЫрдиреНред рдпрджрд┐ рддрд┐рдиреАрд╣рд░реВ рд╕рдХреНрд╖рдо рдкрд╛рд░рд┐рдПрдХрд╛ рдЫреИрдирдиреН рднрдиреЗ, рдХреГрдкрдпрд╛ рдкреГрд╖реНрдардХреЛ рдмреАрдЪрдорд╛ рд░рд╣реЗрдХреЛ рдареВрд▓реЛ рдмрдЯрдирдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реЗрд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рдХреНрд╖рдо рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН, рдЬреБрди рддрдкрд╛рдИрдВ GitHub рдЗрдиреНрдЯрд░рдлреЗрд╕рдорд╛ рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реЗрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
GitHub Actions рд╕рдХреНрд╖рдо рдирднрдПрд╕рдореНрдо рддрдкрд╛рдИрдВрд▓реЗ рдореЗрд░рд╛ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдкрд╛рд▓рдирд╛ рдЧрд░реЗрд░ рдкрд╛рдареНрдпрдХреНрд░рдо рдкреВрд░рд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдиред

рд╣рд╛рдореАрд▓реЗ рдпрд╣рд╛рдБ рд░рдЪрдирд╛ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рд╕реВрдЪреАрдХреЛ рд╣рд╛рд▓рдХреЛ рдЕрд╡рд╕реНрдерд╛ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд╕рдзреИрдВ GitHub рдХреЛ рдорд╛рд░реНрдХрдбрд╛рдЙрди рд░реЗрдиреНрдбрд░ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
https://github.com/<your GitHub user name>/continuous-integration-team-scenarios-students/blob/master/ci.mdрдЙрддреНрддрд░рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛
рдпреЛ рдХреЛрд░реНрд╕ рдкреВрд░рд╛ рдЧрд░реНрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рд░рд╛рдореНрд░реЛ рддрд░рд┐рдХрд╛ рднрдиреЗрдХреЛ рдЖрдлреИрдВ рдЧрд░реНрдиреБ рд╣реЛ, рддрд░ рддрдкрд╛рдИрдВрд▓реЗ рдХреЗрд╣реА рдХрдард┐рдирд╛рдЗрд╣рд░реВрдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреЗ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдмреБрдЭреНрдиреБрднрдПрдХреЛ рдЫреИрди рд░ рдЬрд╛рд░реА рд░рд╛рдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрди рдЬрд╕реНрддреЛ рд▓рд╛рдЧреНрдЫ рднрдиреЗ, рддрдкрд╛рдИрдВ рдереНрд░реЗрдб рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред solution, рдЬреБрди рддрдкрд╛рдИрдВрдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рднрдгреНрдбрд╛рд░рдорд╛ рдЫред
рдХреГрдкрдпрд╛ рдорд░реНрдЬ рдирдЧрд░реНрдиреБрд╣реЛрд╕реНред solution ╨▓ master рдХреЛрд░реНрд╕рдХреЛ рдХреНрд░рдордорд╛ред рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рд╢рд╛рдЦрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХреЗ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╡рд╛ Git рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рджрд┐рдиреЗ рд╕рдмреИ рд╕рдореНрднрд╛рд╡рдирд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓реЗрдЦрдХрдХреЛ рдХреЛрдбрд╕рдБрдЧ рдЖрдлреНрдиреЛ рдХреЛрдб рддреБрд▓рдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрджрд┐ рддрдкрд╛рдИрдВ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╣рд░рд╛рдЙрдиреБрднрдПрдХреЛ рдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рд╢рд╛рдЦрд╛рд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдмрджрд▓реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред master рд╣рд╛рдБрдЧрд╛рдорд╛ solution рд░ рддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдИрдВрдХреЛ рдХрд╛рд░реНрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рд▓рд╛рдИ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рдХреЛрд░реНрд╕рдХреЛ рдЪрд░рдгрдорд╛ рд░рд┐рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рд╛рдБрдЪреНрдЪреИ рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ рдорд╛рддреНрд░ рдпреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдЖрдлреНрдиреЛ рдХреЛрдб рдХрдорд┐рдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН
git add .
git commit -m "Backing up my work"рдпреА рдЖрджреЗрд╢рд╣рд░реВ
- рдкреБрди: рдирд╛рдордХрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН
master╨▓master-backup; - рдкреБрди: рдирд╛рдордХрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН
solution╨▓master; - рдирдпрд╛рдБ рд╢рд╛рдЦрд╛рдорд╛ рд╕реНрд╡рд┐рдЪ (рдЪреЗрдХрдЖрдЙрдЯ) рдЧрд░реНрдиреБрд╣реЛрд╕реН
masterрд░ рдХрд╛рдо рдЧрд░реНрдиреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдХреЛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдкреБрди: рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН; - рднрд╡рд┐рд╖реНрдпрдорд╛ "рд╕рдорд╛рдзрд╛рди" рд╢рд╛рдЦрд╛ рдЖрд╡рд╢реНрдпрдХ рдкрд░реЗрдорд╛ "рдорд╛рд╕реНрдЯрд░" (рдЬреБрди рдкрд╣рд┐рд▓реЗ "рд╕рдорд╛рдзрд╛рди" рд╣реБрдиреНрдереНрдпреЛ) рдмрд╛рдЯ "рд╕рдорд╛рдзрд╛рди" рд╢рд╛рдЦрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
git branch -m master master-backup
git branch -m solution master
git checkout master -f
git branch solutionрдпреА рдЪрд░рдгрд╣рд░реВ рдкрдЫрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ git log master рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреБрди рдХрдорд┐рдЯ рдЪрд╛рд╣рд┐рдиреНрдЫ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиред
рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдХрд╛рдо рдЧрд░реНрдиреЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рд▓рд╛рдИ рдпрд╕ рдХрдорд┐рдЯрдорд╛ рдпрд╕рд░реА рд░рд┐рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
git reset --hard <the SHA you need>рдпрджрд┐ рддрдкрд╛рдИрдВ рдирддрд┐рдЬрд╛рд╕рдБрдЧ рдЦреБрд╕реА рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдХреБрдиреИ рд╕рдордпрдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдХреЛ рд╕рдВрд╕реНрдХрд░рдг рд░рд┐рдореЛрдЯ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред рдпреЛ рдЧрд░реНрджрд╛ рд░рд┐рдореЛрдЯ рд╢рд╛рдЦрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
git push --force origin masterрдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рд╣рд╛рдореА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ git push --forceред рддрдкрд╛рдИрдВ рд╕рд╛рдпрдж рдпреЛ рдзреЗрд░реИ рдкрдЯрдХ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрди рд╣реЛрд▓рд╛, рддрд░ рд╣рд╛рдореАрд╕рдБрдЧ рдпрд╣рд╛рдБ рдПрдХ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд╕рд╛рде рдПрдХрджрдореИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рджреГрд╢реНрдп рдЫ рдЬрд╕рд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рдЙрд╕рд▓реЗ рдХреЗ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫред
рдХрд╛рдо рд╕реБрд░реБ рдЧрд░реНрджреИ

CI рдЪрд░рдгрд╣рд░реВрдХреЛ рд╣рд╛рдореНрд░реЛ рд╕реВрдЪреА рдмрдирд╛рдЙрди рд╕реБрд░реБ рдЧрд░реМрдВред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдЪрд░рдг рд░рд┐рдореЛрдЯ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдмрд╛рдЯ рдХреЛрдбрдХреЛ рдкрдЫрд┐рд▓реНрд▓реЛ рд╕рдВрд╕реНрдХрд░рдг рддрд╛рдиреНрджреИ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, рддрд░ рд╣рд╛рдореАрд╕рдБрдЧ рдЕрдЭреИ рд╕реНрдерд╛рдиреАрдп рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдЫреИрди, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рд░рд┐рдореЛрдЯрдмрд╛рдЯ рдХреНрд▓реЛрди рдЧрд░реНрдиреЗрдЫреМрдВред
я╕П рдХрд╛рд░реНрдп: рд╕реНрдерд╛рдиреАрдп рднрдгреНрдбрд╛рд░ рдЕрдкрдбреЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╢рд╛рдЦрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН master, рдХрд╛рдо рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН
- рдмрд╛рдЯ рдкрд╛рдареНрдпрдХреНрд░рдо рднрдгреНрдбрд╛рд░ рдХреНрд▓реЛрди рдЧрд░реНрдиреБрд╣реЛрд╕реН
<URL ╤А╨╡╨┐╨╛╨╖╨╕╤В╨╛╤А╨╕╤П>. - рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН
npm installрдХреЛрд░реНрд╕ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реАрдорд╛; рд╣рд╛рдореАрд▓рд╛рдИ 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); });- рдлрд╛рдЗрд▓рдорд╛ рдкрд╣рд┐рд▓реЛ рек рдЪрд░рдгрд╣рд░реВ рд╕рд╣рд┐рддрдХреЛ рдкрд╛рда рдердкреНрдиреБрд╣реЛрд╕реН
ci.md.1. Pull in the latest code. Create a branch from `master`. Start working. 2. Create commits on your new branch. Build and test locally. Pass? Go to the next step. Fail? Fix errors or tests and try again. 3. Push to your remote repository or remote branch. 4. Create a pull request. Discuss the changes, add more commits as discussion continues. Make tests pass on the feature branch.╨Ъ╨╛╨╝╨░╨╜╨┤╤Л
# ╨Ъ╨╗╨╛╨╜╨╕╤А╤Г╨╣╤В╨╡ ╤А╨╡╨┐╨╛╨╖╨╕╤В╨╛╤А╨╕╨╣ ╨║╤Г╤А╤Б╨░
git clone <repository URL>
cd <repository name>
# ╨Т╤Л╨┐╨╛╨╗╨╜╨╕╤В╨╡ npm install ╨▓ ╨║╨░╤В╨░╨╗╨╛╨│╨╡ ╤А╨╡╨┐╨╛╨╖╨╕╤В╨╛╤А╨╕╤П ╨║╤Г╤А╤Б╨░; ╨╛╨╜ ╤Г╤Б╤В╨░╨╜╨╛╨▓╨╕╤В Jest, ╨║╨╛╤В╨╛╤А╤Л╨╣ ╨╝╤Л ╨╕╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╡╨╝ ╨┤╨╗╤П ╨╖╨░╨┐╤Г╤Б╨║╨░ ╤В╨╡╤Б╤В╨╛╨▓.
npm install
# ╨б╨╛╨╖╨┤╨░╨╣╤В╨╡ ╨▓╨╡╤В╨║╤Г ╨╕ ╨╜╨░╨╖╨╛╨▓╨╕╤В╨╡ ╨╡╨╡ feature. ╨Я╨╡╤А╨╡╨║╨╗╤О╤З╨╕╤В╨╡╤Б╤М ╨╜╨░ ╤Н╤В╤Г ╨▓ ╨▓╨╡╤В╨║╤Г.
git checkout -b feature
# ╨Ю╤В╤А╨╡╨┤╨░╨║╤В╨╕╤А╤Г╨╣╤В╨╡ ci.test.js ╨║╨░╨║ ╨╛╨┐╨╕╤Б╨░╨╜╨╛ ╨▓╤Л╤И╨╡.
# ╨Ю╤В╤А╨╡╨┤╨░╨║╤В╨╕╤А╤Г╨╣╤В╨╡ ci.md ╨║╨░╨║ ╨╛╨┐╨╕╤Б╨░╨╜╨╛ ╨▓╤Л╤И╨╡рдирдпрд╛рдБ рд╢рд╛рдЦрд╛рдорд╛ рдХрдорд┐рдЯрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН
рд╣рд╛рдореА рдХрдорд┐рдЯ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреЗрдЫреМрдВ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдХреЛрдб рдХрдорд┐рдЯ рдЧрд░реНрдиреЗрдЫреМрдВред
рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕рдЮреНрдЪрд╛рд▓рди рд╣реБрдБрджрд╛ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рджреГрд╢реНрдпрд╣рд░реВ
- рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛:
- рдирд┐рд░рдиреНрддрд░ рд╡рд╛ рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛;
- рдмрдЪрддрдорд╛ (рдЕрдиреБрд╡рд╛рджрд┐рдд рд╡рд╛ JIT-рд╕рдВрдХрд▓рд┐рдд рднрд╛рд╖рд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐);
- рдПрд╕реЗрдореНрдмрд▓реАрдХреЛ рд╕рдордпрдорд╛ (рдЬрдм рд╕рдВрдХрд▓рди рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреНрдЫ);
- рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛рдорд╛;
- рд╕рд╛рдЭрд╛ рднрдгреНрдбрд╛рд░рдорд╛ рдкреНрд░рдХрд╛рд╢рди рдЧрд░реНрджрд╛ред
- рдмрд┐рд▓реНрдб рд╕рд░реНрднрд░рдорд╛ рд╡рд╛ рдмрд┐рд▓реНрдб рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛:
- рдЬрдм рдХреЛрдб рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╢рд╛рдЦрд╛/рднрдгреНрдбрд╛рд░рдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдиреНрдЫред
- рдпрд╕ рд╢рд╛рдЦрд╛рдорд╛ рдХреЛрдб рдкрд░реАрдХреНрд╖рдг рднрдЗрд░рд╣реЗрдХреЛ рдЫред
- рд╡рд┐рд▓рдпрдХреЛ рд╕рдореНрднрд╛рд╡рд┐рдд рдкрд░рд┐рдгрд╛рдо рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдиреНрдЫ (рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛
master). - рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг/рдирд┐рд░рдиреНрддрд░ рд╡рд┐рддрд░рдг рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдХреЛ рдЪрд░рдгрдХреЛ рд░реВрдкрдорд╛
рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдкрд░реАрдХреНрд╖рдг рд╕реБрдЗрдЯ рдЬрддрд┐ рдЫрд┐рдЯреЛ рдЪрд▓реНрдЫ, рддреНрдпрддрд┐ рдиреИ рдзреЗрд░реИ рдкрдЯрдХ рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╕рд╛рдорд╛рдиреНрдп рдЪрд░рдг рдмреНрд░реЗрдХрдбрд╛рдЙрди рдпрд╕реНрддреЛ рджреЗрдЦрд┐рди рд╕рдХреНрдЫред
- рджреНрд░реБрдд рдПрдХрд╛рдЗ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ - рдирд┐рд░реНрдорд╛рдгрдорд╛, CI рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдорд╛
- рдврд┐рд▓реЛ рдПрдХрд╛рдЗ рдкрд░реАрдХреНрд╖рдг, рджреНрд░реБрдд рдШрдЯрдХ рд░ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг - рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛рдорд╛, CI рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдорд╛
- CI рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдорд╛ рдврд┐рд▓реЛ рдШрдЯрдХ рд░ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ
- рд╕реБрд░рдХреНрд╖рд╛ рдкрд░реАрдХреНрд╖рдг, рд▓реЛрдб рдкрд░реАрдХреНрд╖рдг, рд░ рдЕрдиреНрдп рд▓рд╛рдореЛ рд╡рд╛ рдорд╣рдБрдЧреЛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ - CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВрдорд╛, рддрд░ рдХреЗрд╡рд▓ рдирд┐рд╢реНрдЪрд┐рдд рдирд┐рд░реНрдорд╛рдг рдореЛрдбрд╣рд░реВ/рдЪрд░рдгрд╣рд░реВ/рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВрдорд╛, рдЬрд╕реНрддреИ рд░рд┐рд▓реАрдЬ рдЙрдореНрдореЗрджрд╡рд╛рд░ рддрдпрд╛рд░ рдЧрд░реНрджрд╛ рд╡рд╛ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдЯреНрд░рд┐рдЧрд░ рдЧрд░реНрджрд╛ред
я╕П рдХрд╛рд░реНрдп
рдо рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрд╣рд┐рд▓реЗ рдореНрдпрд╛рдиреБрдЕрд▓реА рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрди рд╕реБрдЭрд╛рд╡ рджрд┐рдиреНрдЫреБ npm testред рдЕрдм рд╣рд╛рдореНрд░реЛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдХрдорд┐рдЯрдорд╛ рдЪрд▓рд╛рдЙрди рдЧрд┐рдЯ рд╣реБрдХ рдердкреМрдВред рдПрдЙрдЯрд╛ рд╕рдорд╕реНрдпрд╛ рдЫ: рдЧрд┐рдЯ рд╣реБрдХрд╣рд░реВрд▓рд╛рдИ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдХреЛ рднрд╛рдЧ рдорд╛рдирд┐рдиреЗ рдЫреИрди рд░ рддреНрдпрд╕реИрд▓реЗ рдмрд╛рдБрдХреА рдХреЛрд░реНрд╕ рд╕рд╛рдордЧреНрд░реАрд╕рдБрдЧреИ рдЧрд┐рдЯрд╣рдмрдмрд╛рдЯ рдХреНрд▓реЛрди рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред рд╣реБрдХ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рдЪрд▓рд╛рдЙрдиреБ рдкрд░реНрдиреЗрдЫ install_hook.sh рд╡рд╛ рдлрд╛рдЗрд▓ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН repo/hooks/pre-commit рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдорд╛ .git/hooks/.
рдЬрдм рддрдкрд╛рдИрдВ рдХрдорд┐рдЯ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, рддрдкрд╛рдИрдВрд▓реЗ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕рдЮреНрдЪрд╛рд▓рди рднрдПрдХреЛ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫ, рд░ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рд╕реВрдЪреАрдорд╛ рдХреЗрд╣реА рдХрд┐рд╡рд░реНрдбрд╣рд░реВ рдЫрдиреН рдХрд┐ рдЫреИрдирдиреН рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдЫрдиреНред
- рдЖрджреЗрд╢ рдЪрд▓рд╛рдПрд░ рдореНрдпрд╛рдиреБрдЕрд▓реА рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред
npm testрддрдкрд╛рдИрдВрдХреЛ рдХреЛрд░реНрд╕ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдлреЛрд▓реНрдбрд░рдорд╛ред рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕рдЮреНрдЪрд╛рд▓рди рднрдЗрд╕рдХреЗрдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред - рдЪрд▓рд╛рдПрд░ рдкреНрд░рд┐-рдХрдорд┐рдЯ рд╣реБрдХ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
install_hook.sh. - рддрдкрд╛рдИрдВрдХреЛ рд╕реНрдерд╛рдиреАрдп рднрдгреНрдбрд╛рд░рдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдкреНрд░рддрд┐рдмрджреНрдз рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рдкреНрд░рддрд┐рдмрджреНрдз рдЧрд░реНрдиреБ рдЕрдШрд┐ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░рд┐рдПрдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдпреА рдЪрд░рдгрд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реЗрдкрдЫрд┐ рддрдкрд╛рдИрдВрдХреЛ рднрдгреНрдбрд╛рд░ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреБ рдкрд░реНрдЫред

╨Ъ╨╛╨╝╨░╨╜╨┤╤Л
# ╨г╤Б╤В╨░╨╜╨╛╨▓╨╕╤В╨╡ pre-commit hook ╨▓╤Л╨┐╨╛╨╗╨╜╨╕╨▓ install_hook.sh.
# ╨Ч╨░╨║╨╛╨╝╨╝╨╕╤В╤М╤В╨╡ ╨╕╨╖╨╝╨╡╨╜╨╡╨╜╨╕╤П ╨▓ ╨╗╨╛╨║╨░╨╗╤М╨╜╤Л╨╣ ╤А╨╡╨┐╨╛╨╖╨╕╤В╨╛╤А╨╕╨╣. ╨Ш╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╣╤В╨╡ "Add first CI steps" ╨▓ ╨║╨░╤З╨╡╤Б╤В╨▓╨╡ ╤Б╨╛╨╛╨▒╤Й╨╡╨╜╨╕╤П ╨┐╤А╨╕ ╨║╨╛╨╝╨╝╨╕╤В╨╡.
git add ci.md ci.test.js
git commit -m "Add first CI steps"
# ╨г╨▒╨╡╨┤╨╕╤В╨╡╤Б╤М, ╤З╤В╨╛ ╤В╨╡╤Б╤В╤Л ╨╖╨░╨┐╤Г╤Б╨║╨░╤О╤В╤Б╤П ╨┐╨╡╤А╨╡╨┤ ╨║╨╛╨╝╨╝╨╕╤В╨╛╨╝. рд░рд┐рдореЛрдЯ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд╡рд╛ рд░рд┐рдореЛрдЯ рд╢рд╛рдЦрд╛рдорд╛ рдХреЛрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН
рдПрдХрдкрдЯрдХ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдЖрдлреНрдиреЛ рдХреЛрдб рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдкрдорд╛ рдЙрдкрд▓рдмреНрдз рдЧрд░рд╛рдЙрдБрдЫрдиреН рддрд╛рдХрд┐ рдпрд╕рд▓рд╛рдИ рдЕрдиреНрддрддрдГ рд╕рд╛рдЭрд╛ рднрдгреНрдбрд╛рд░рд╕рдБрдЧ рдПрдХреАрдХреГрдд рдЧрд░реНрди рд╕рдХрд┐рдпреЛрд╕реНред GitHub рдХреЛ рд╕рд╛рде, рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдХрд╛рдорд▓рд╛рдИ рднрдгреНрдбрд╛рд░рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдлреЛрд░реНрдХ рд╡рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╢рд╛рдЦрд╛рдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реЗрд░ рдкреВрд░рд╛ рдЧрд░рд┐рдиреНрдЫред
- рдлреЛрд░реНрдХрд┐рдЩрдХреЛ рд╕рд╛рде, рдПрдХ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓реЗ рд░рд┐рдореЛрдЯ рд╕реЗрдпрд░ рдЧрд░рд┐рдПрдХреЛ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдХреЛ рдХреНрд▓реЛрди рдмрдирд╛рдЙрдБрдЫ, рдпрд╕рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд┐рдореЛрдЯ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ, рдЬрд╕рд▓рд╛рдИ рдлреЛрд░реНрдХ рдкрдирд┐ рднрдирд┐рдиреНрдЫред рддреНрдпрд╕рдкрдЫрд┐ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдпреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдорд╛ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрди рдХреНрд▓реЛрди рдЧрд░реНрдЫрдиреНред рдЬрдм рдХрд╛рдо рд╕рдХрд┐рдпреЛ рд░ рдХрдорд┐рдЯрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдпреЛ, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЖрдлреНрдиреЛ рдлреЛрд░реНрдХрдорд╛ рдзрдХреЗрд▓реНрдЫрдиреН, рдЬрд╣рд╛рдБ рддрд┐рдиреАрд╣рд░реВ рдЕрд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рд╣реБрдиреНрдЫрдиреН рд░ рд╕рд╛рдЭрд╛ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдорд╛ рдПрдХреАрдХреГрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ GitHub рдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдпреЛ рдореЗрд░реЛ рдЙрдиреНрдирдд рдкрд╛рдареНрдпрдХреНрд░рдо [рдЯрд┐рдо рд╡рд░реНрдХ рд░ CI рд╡рд┐рде Git] рдорд╛ рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ ().
- рдЕрд░реНрдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рднрдиреЗрдХреЛ рдХреЗрд╡рд▓ рдПрдЙрдЯрд╛ рд░рд┐рдореЛрдЯ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд░ рд╢рд╛рдЦрд╛ рдорд╛рддреНрд░ рдЧрдгрдирд╛ рдЧрд░реНрдиреБ рд╣реЛред
masterрд╕рд╛рдЭрд╛ рднрдгреНрдбрд╛рд░ "рд╕реБрд░рдХреНрд╖рд┐рдд"ред рдпрд╕ рдкрд░рд┐рджреГрд╢реНрдпрдорд╛, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдЖрдлреНрдиреЛ рдХреЛрдб рд░рд┐рдореЛрдЯ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдХреЛ рд╢рд╛рдЦрд╛рдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдЫрдиреН рддрд╛рдХрд┐ рдЕрд░реВрд▓реЗ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдЧрд░реНрди рд╕рдХреВрдиреН, рд░ рдпрджрд┐ рд╕рдмреИ рдареАрдХ рдЫ рднрдиреЗ, рдпрд╕рд▓рд╛рдИ рдорд░реНрдЬ рдЧрд░реНрдиреБрд╣реЛрд╕реНредmasterрд╕рд╛рдЭрд╛ рднрдгреНрдбрд╛рд░ред
рдпрд╕ рд╡рд┐рд╢реЗрд╖ рдкрд╛рдареНрдпрдХреНрд░рдордорд╛, рд╣рд╛рдореА рд╢рд╛рдЦрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред
рд╣рд╛рдореНрд░реЛ рдХреЛрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реМрдВред
я╕П рдХрд╛рд░реНрдп
- рддрдкрд╛рдИрдВрдХреЛ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╢рд╛рдЦрд╛рдХреЛ рдирд╛рдо рднрдПрдХреЛ рдЯрд╛рдврд╛рдХреЛ рд╢рд╛рдЦрд╛рдорд╛ рдЖрдлреНрдирд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
╨Ъ╨╛╨╝╨░╨╜╨┤╤Л
git push --set-upstream origin featureрдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
рд╢реАрд░реНрд╖рдХ рд╕рд╣рд┐рддрдХреЛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЪрд░рдгрд╣рд░реВрдХреЛ рд╕рдореАрдХреНрд╖рд╛рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН feature "рдореБрдЦреНрдп рд╢рд╛рдЦрд╛" рдХреЛ рд░реВрдкрдорд╛ рд░ master "рдЖрдзрд╛рд░ рд╢рд╛рдЦрд╛" рдХреЛ рд░реВрдкрдорд╛ред
рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫ рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН
masterрдЖрдлреНрдиреЛ рдорд╛ рднрдгреНрдбрд╛рд░ рдлреЛрд░реНрдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН "рдЖрдзрд╛рд░ рд╢рд╛рдЦрд╛" рдХреЛ рд░реВрдкрдорд╛, рдо рдкрд╛рдареНрдпрдХреНрд░рдо рд╕рд╛рдордЧреНрд░реА рднрдгреНрдбрд╛рд░рдорд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рджрд┐рдиреЗ рдЫреИрдиред
GitHub рд╕реНрд▓реНрдпрд╛рдЩрдорд╛, "рдЖрдзрд╛рд░ рд╢рд╛рдЦрд╛" рднрдиреЗрдХреЛ рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдХрд╛рдорд▓рд╛рдИ рдЖрдзрд╛рд░ рдмрдирд╛рдЙрдиреЗ рд╢рд╛рдЦрд╛ рд╣реЛ, рд░ "рдореБрдЦреНрдп рд╢рд╛рдЦрд╛" рднрдиреЗрдХреЛ рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗ рд╢рд╛рдЦрд╛ рд╣реЛред
рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЫрд▓рдлрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЫрд▓рдлрд▓ рдЬрд╛рд░реА рд░рд╣рдБрджрд╛ рдирдпрд╛рдБ рдХрдорд┐рдЯрд╣рд░реВ рдердкреНрдиреБрд╣реЛрд╕реНред
рдкреБрд▓ рдЕрдиреБрд░реЛрдз (PR)
рдкреБрд▓ рдЕрдиреБрд░реЛрдз (PR) тАФ рдХреЛрдб рдЫрд▓рдлрд▓ рдЧрд░реНрдиреЗ рд░ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдЧрд░реНрдиреЗ, рд╕рд╛рдереИ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдЧрд░реНрдиреЗ рдПрдЙрдЯрд╛ рддрд░рд┐рдХрд╛ рд╣реЛред рдкреБрд▓ рдЕрдиреБрд░реЛрдзрд╣рд░реВрд▓рд╛рдИ рд╕рдордЧреНрд░ рдХреЛрдбрдорд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдПрдХреАрдХреГрдд рдЧрд░реНрдиреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░рд┐рдХрд╛рдмрд╛рдЯ рдирд╛рдо рджрд┐рдЗрдПрдХреЛ рдЫред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдПрдХ рд╡реНрдпрдХреНрддрд┐рд▓реЗ рд░рд┐рдореЛрдЯ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдХреНрд▓реЛрди рдЧрд░реНрдЫ рд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдХреЛрдбрдорд╛ рдХрд╛рдо рдЧрд░реНрдЫред рддреНрдпрд╕рдкрдЫрд┐, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХреЛрдбрд▓рд╛рдИ рдЖрдлреНрдиреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд┐рдореЛрдЯ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдорд╛ рдзрдХреЗрд▓реНрдЫрдиреН рд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдХреЛ рдорд░реНрдорддрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдпрд╕рд▓рд╛рдИ рддрд╛рдиреНрди рдЖрдЧреНрд░рд╣ рдЧрд░реНрдЫрдиреНредрдЦреАрдВрдЪреЛ) рдЙрд╕рдХреЛ рдХреЛрдбрд▓рд╛рдИ рдЙрдиреАрд╣рд░реВрдХреЛ рд╕реНрдерд╛рдиреАрдп рднрдгреНрдбрд╛рд░рд╣рд░реВрдорд╛, рдЬрд╣рд╛рдБ рдЙрдиреАрд╣рд░реВрд▓реЗ рд╕рдореАрдХреНрд╖рд╛ рдЧрд░реНрдЫрдиреН рд░ рд╕рдореНрднрд╡рддрдГ рдПрдХреАрдХреГрдд рдЧрд░реНрдЫрдиреН (рдорд░реНрдЬ) рдпреЛред рдпреЛ рдЕрд╡рдзрд╛рд░рдгрд╛ рдЕрдиреНрдп рдирд╛рдорд╣рд░реВрд▓реЗ рдкрдирд┐ рдЪрд┐рдирд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз.
рддрдкрд╛рдИрдВрд▓реЗ рд╡рд╛рд╕реНрддрд╡рдорд╛ GitHub рдХреЛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕реБрд╡рд┐рдзрд╛ рд╡рд╛ рдпрд╕реНрддреИ рдкреНрд▓реЗрдЯрдлрд░реНрдорд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрджреИрдиред рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдЯреЛрд▓реАрд▓реЗ рдЖрдордиреЗрд╕рд╛рдордиреЗ рдХреБрд░рд╛рдХрд╛рдиреА, рднреНрд╡рд╛рдЗрд╕ рдХрд▓, рд╡рд╛ рдЗрдореЗрд▓ рд╕рд╣рд┐рдд рд╕рдЮреНрдЪрд╛рд░рдХрд╛ рдЕрдиреНрдп рд╡рд┐рдзрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫрдиреН, рддрд░ рдпреА рдлреЛрд░рдо-рд╢реИрд▓реА рдкреБрд▓ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдХрд╛ рдзреЗрд░реИ рдХрд╛рд░рдгрд╣рд░реВ рдЕрдЭреИ рдкрдирд┐ рдЫрдиреНред рдпрд╣рд╛рдБ рдХреЗрд╣реА рдЫрдиреН:
- рд╕рдВрд╣рд┐рддрд╛рдорд╛ рднрдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫрд▓рдлрд▓рд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрдиреЗ;
- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рд░ рд╕рд╣рдХрд░реНрдореАрд╣рд░реВ рджреБрд╡реИрдмрд╛рдЯ рдкреНрд░рдЧрддрд┐рдорд╛ рд░рд╣реЗрдХреЛ рдХрд╛рдордХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрд░реНрдиреЗ рдард╛рдЙрдБрдХреЛ рд░реВрдкрдорд╛;
- рдХреЛрдб рдЬрд╛рдБрдЪрдХреЛ рдФрдкрдЪрд╛рд░рд┐рдХреАрдХрд░рдг;
- рддрд╛рдХрд┐ рдкрдЫрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдХреЛрдбрдХреЛ рдХреБрдиреИ рд╡рд┐рд╢реЗрд╖ рдЯреБрдХреНрд░рд╛ рдкрдЫрд╛рдбрд┐рдХреЛ рдХрд╛рд░рдг рд░ рд╡рд┐рдЪрд╛рд░рд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреЗрдЫред
рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдЬрдм рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХреБрдиреИ рдХреБрд░рд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЫрд▓рдлрд▓ рдЧрд░реНрди рд╡рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫ, рддрдкрд╛рдИрдВрд▓реЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рддрдкрд╛рдИрдВ рдзреЗрд░реИ рддрд░рд┐рдХрд╛рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рд╕рдХрд┐рдиреЗ рд╕реБрд╡рд┐рдзрд╛рдорд╛ рдХрд╛рдо рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдирд╛ рд╡рд┐рдЪрд╛рд░рд╣рд░реВ рд╕рд╛рдЭрд╛ рдЧрд░реНрди рд░ рд╕рд╣рдпреЛрдЧреАрд╣рд░реВрд╕рдБрдЧ рдЖрдлреНрдирд╛ рдпреЛрдЬрдирд╛рд╣рд░реВ рдЫрд▓рдлрд▓ рдЧрд░реНрди рдХреЛрдбрдХреЛ рдПрдХрд▓ рд▓рд╛рдЗрди рд▓реЗрдЦреНрдиреБ рдЕрдШрд┐ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрджрд┐ рдХрд╛рдо рд╕рд░рд▓ рдЫ рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдХреЗрд╣рд┐ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рдореНрдкрдиреНрди, рдкреНрд░рддрд┐рдмрджреНрдз рд░ рдЫрд▓рдлрд▓ рдЧрд░реНрди рд╕рдХрд┐рдиреЗ рдмреЗрд▓рд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЦреЛрд▓реНрдиреБрд╣реБрдиреНрдЫред рдХреЗрд╣реА рдкрд░рд┐рджреГрд╢реНрдпрд╣рд░реВрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдЧреБрдгрд╕реНрддрд░ рдирд┐рдпрдиреНрддреНрд░рдг рдХрд╛рд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ PR рдЦреЛрд▓реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрди рд╡рд╛ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рд╕реБрд░реБ рдЧрд░реНрдиред рддрдкрд╛рдИрдВрд▓реЗ рдЬреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдиреБрднрдпреЛ рдкрдирд┐, рддрдкрд╛рдИрдВрдХреЛ рдкреБрд▓ рдЕрдиреБрд░реЛрдзрдорд╛ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрд▓рд╛рдИ @mention рдЧрд░реНрди рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ PR рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрд╛ рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ:
- рддрдкрд╛рдИрдВрд▓реЗ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫ рд░ рдХрд╣рд╛рдБ рдЫ рднрдиреЗрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рдкрд░рд┐рд╡рд░реНрддрдирдХреЛ рдЙрджреНрджреЗрд╢реНрдп рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрджреИ рд╡рд┐рд╡рд░рдг рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред рддрдкрд╛рдИрдВ рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ:
- рдХреЛрдбрдмрд╛рдЯ рд╕реНрдкрд╖реНрдЯ рдирднрдПрдХреЛ рдХреБрдиреИ рдкрдирд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХреБрд░рд╛, рд╡рд╛ рд╕рдиреНрджрд░реНрдн рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреЛрдЧреА рдХреБрдиреИ рдкрдирд┐ рдХреБрд░рд╛, рдЬрд╕реНрддреИ рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ #bugs рд░ рдХрдорд┐рдЯ рдирдореНрдмрд░рд╣рд░реВ рдердкреНрдиреБрд╣реЛрд╕реН;
- рддрдкрд╛рдИрдВрд▓реЗ рдХрд╛рдо рд╕реБрд░реБ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрднрдПрдХреЛ рдЬреЛ рдХреЛрд╣реАрд▓рд╛рдИ рдкрдирд┐ @mention рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╡рд╛ рддрдкрд╛рдИрдВрд▓реЗ рдкрдЫрд┐ рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВрдорд╛ @mention рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ;
- рд╕рд╣рдХрд░реНрдореАрд╣рд░реВрд▓рд╛рдИ рдХреБрдиреИ рдХреБрд░рд╛рдорд╛ рдорджреНрджрдд рдЧрд░реНрди рд╡рд╛ рдХреБрдиреИ рдЦрд╛рд╕ рдХреБрд░рд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрди рднрдиреНрдиреБрд╣реЛрд╕реНред
рдПрдХрдЪреЛрдЯрд┐ рддрдкрд╛рдИрдВрд▓реЗ PR рдЦреЛрд▓реНрдиреБрднрдПрдкрдЫрд┐, рддреНрдпрд╕реНрддрд╛ рдХреЗрд╕рд╣рд░реВрдорд╛ рдЪрд▓рд╛рдЙрди рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХрд╛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреНрдЫрдиреНред рд╣рд╛рдореНрд░реЛ рдХреЗрд╕рдорд╛, рдпреЛ рд╣рд╛рдореАрд▓реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдЪрд▓рд╛рдПрдХреЛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдХреЛ рдЙрд╣реА рд╕реЗрдЯ рд╣реБрдиреЗрдЫ, рддрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ рдердк рдкрд░реАрдХреНрд╖рдг рд░ рдЬрд╛рдБрдЪрд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫрдиреНред
рдХреГрдкрдпрд╛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдкреВрд░рд╛ рдирднрдПрд╕рдореНрдо рдкрд░реНрдЦрдиреБрд╣реЛрд╕реНред рддрдкрд╛рдИрдВрд▓реЗ GitHub рдЗрдиреНрдЯрд░рдлреЗрд╕рдорд╛ PR рдЫрд▓рдлрд▓рдХреЛ рддрд▓ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдХреЛ рд╕реНрдерд┐рддрд┐ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдкреВрд░рд╛ рднрдПрдкрдЫрд┐ рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реНред
я╕П CI рдЪрд░рдгрд╣рд░реВрдХреЛ рд╕реВрдЪреАрдХреЛ рдордирдорд╛рдиреАрдкрдирдХреЛ рдмрд╛рд░реЗрдорд╛ рдПрдЙрдЯрд╛ рдиреЛрдЯ рдердкреНрдиреБрд╣реЛрд╕реН
рдпрд╕ рдХреЛрд░реНрд╕рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рд╕реВрдЪреА рдордирдорд╛рдиреА рд░ рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рдЫ, рд╣рд╛рдореАрд▓реЗ рдпрд╕ рдмрд╛рд░реЗ рдПрдЙрдЯрд╛ рдЯрд┐рдкреНрдкрдгреА рдердкреНрдиреБ рдкрд░реНрдЫред
я╕П рдХрд╛рд░реНрдп: рдпреЛ рдиреЛрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
- рд╢рд╛рдЦрд╛рдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН
master. - рдирд╛рдордХреЛ рд╢рд╛рдЦрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
bugfix. - рдлрд╛рдЗрд▓рдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рдиреЛрдЯ рдкрд╛рда рдердкреНрдиреБрд╣реЛрд╕реН
ci.md.> **GitHub flow** is sometimes used as a nickname to refer to a flavor of trunk-based development when code is deployed straight from feature branches. This list is just an interpretation that I use in my [DevOps courses](http://redpill.solutions). The official tutorial is [here](https://guides.github.com/introduction/flow/). - рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдкреНрд░рддрд┐рдмрджреНрдз рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рдереНрд░реЗрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН
bugfixрдЯрд╛рдврд╛рдХреЛ рднрдгреНрдбрд╛рд░рдорд╛ред - рдирд╛рдо рд╕рд╣рд┐рддрдХреЛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЯрд┐рдкреНрдкрдгреА рдердкреНрджреИ рдЯрд╛рдЙрдХреЛрдХреЛ рд╣рд╛рдБрдЧрд╛ рднрдПрдХреЛ
bugfixрд░ рдЖрдзрд╛рд░ рд╢рд╛рдЦрд╛master.
рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫ рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН
masterрдЖрдлреНрдиреЛ рдорд╛ рднрдгреНрдбрд╛рд░ рдлреЛрд░реНрдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН "рдЖрдзрд╛рд░ рд╢рд╛рдЦрд╛" рдХреЛ рд░реВрдкрдорд╛, рдо рдкрд╛рдареНрдпрдХреНрд░рдо рд╕рд╛рдордЧреНрд░реА рднрдгреНрдбрд╛рд░рдорд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рджрд┐рдиреЗ рдЫреИрдиред
рддрдкрд╛рдИрдВрдХреЛ рднрдгреНрдбрд╛рд░ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреБ рдкрд░реНрдЫред

╨Ъ╨╛╨╝╨░╨╜╨┤╤Л
# ╨Я╨╡╤А╨╡╨║╨╗╤О╤З╨╕╤В╨╡╤Б╤М ╨╜╨░ ╨▓╨╡╤В╨║╤Г master. ╨б╨╛╨╖╨┤╨░╨╣╤В╨╡ ╨▓╨╡╤В╨║╤Г bugfix.
git checkout master
# ╨б╨╛╨╖╨┤╨░╨╣╤В╨╡ ╨▓╨╡╤В╨║╤Г bugfix-remark.
git checkout -b bugfix
# ╨Ф╨╛╨▒╨░╨▓╤М╤В╨╡ ╤В╨╡╨║╤Б╤В ╨┐╤А╨╕╨╝╨╡╤З╨░╨╜╨╕╤П ╨▓╨╜╨╕╨╖╤Г ci.md.
# ╨Ч╨░╨║╨╛╨╝╨╝╨╕╤В╤М╤В╨╡ ╨╕╨╖╨╝╨╡╨╜╨╡╨╜╨╕╤П
git add ci.md
git commit -m "Add a remark about the list being opinionated"
# ╨Ю╨┐╤Г╨▒╨╗╨╕╨║╤Г╨╣╤В╨╡ ╨▓╨╡╤В╨║╤Г bugfix ╨▓ ╤Г╨┤╨░╨╗╤С╨╜╨╜╤Л╨╣ ╤А╨╡╨┐╨╛╨╖╨╕╤В╨╛╤А╨╕╨╣.
git push --set-upstream origin bugfix
# ╨б╨╛╨╖╨┤╨░╨╣╤В╨╡ pull request ╨┐╤А╨╕ ╨┐╨╛╨╝╨╛╤Й╨╕ ╨╕╨╜╤В╨╡╤А╤Д╨╡╨╣╤Б╨░ GitHub ╨║╨░╨║ ╨╛╨┐╨╕╤Б╨░╨╜╨╛ ╨▓╤Л╤И╨╡"рдЯрд┐рдкреНрдкрдгреА рдердкреНрджреИ" рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЕрдиреБрдореЛрджрди рдЧрд░реНрдиреБрд╣реЛрд╕реН
я╕П рдХрд╛рд░реНрдп
- рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- "рдорд░реНрдЬ рдкреБрд▓ рдЕрдиреБрд░реЛрдз" рдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- "рдорд░реНрдЬ рдкреБрд╖реНрдЯрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН" рдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- "рд╢рд╛рдЦрд╛ рдореЗрдЯрд╛рдЙрдиреБрд╣реЛрд╕реН" рдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╣рд╛рдореАрд▓рд╛рдИ рдЕрдм рдпрд╕рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЫреИрдиред
рдпреЛ рдорд░реНрдЬ рдкрдЫрд┐ рдХрдорд┐рдЯрд╣рд░реВрдХреЛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рд╣реЛред

я╕П рдХрд╛рдо рдЧрд░рд┐рд░рд╣рдиреБрд╣реЛрд╕реН рд░ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдердкреНрдиреБрд╣реЛрд╕реН
рдкреБрд▓ рдЕрдиреБрд░реЛрдзрдорд╛ рд╕рд╣рдХрд╛рд░реНрдп рдЧрд░реНрджрд╛ рдкреНрд░рд╛рдпрдГ рдердк рдХрд╛рдо рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫред рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рд╡рд╛ рдЫрд▓рдлрд▓рдХреЛ рдкрд░рд┐рдгрд╛рдо рд╣реЛ, рддрд░ рд╣рд╛рдореНрд░реЛ рдкрд╛рдареНрдпрдХреНрд░рдордорд╛ рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ CI рдЪрд░рдг рд╕реВрдЪреАрдорд╛ рдирдпрд╛рдБ рд╡рд╕реНрддреБрд╣рд░реВ рдердкреЗрд░ рдпрд╕рд▓рд╛рдИ рдореЛрдбреЗрд▓ рдЧрд░реНрдиреЗ рдЫреМрдВред
рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдгрдорд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдХреЗрд╣реА рдкрд░реАрдХреНрд╖рдг рдХрднрд░реЗрдЬ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреНрдЫред рдкрд░реАрдХреНрд╖рдг рдХрднрд░реЗрдЬ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдлрд░рдХ-рдлрд░рдХ рд╣реБрдиреНрдЫрдиреН рд░ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ "рдпреЛрдЧрджрд╛рди рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢рд╣рд░реВ" рднрдирд┐рдиреЗ рдХрд╛рдЧрдЬрд╛рддрдорд╛ рдкрд╛рдЗрдиреНрдЫред рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рд╕рд░рд▓ рд░рд╛рдЦреНрдиреЗрдЫреМрдВ рд░ рд╣рд╛рдореНрд░реЛ рдЪреЗрдХрд▓рд┐рд╕реНрдЯрдорд╛ рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдЗрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реАрдХреНрд╖рдг рдердкреНрдиреЗрдЫреМрдВред
рдХрд╛рд░реНрдпрд╣рд░реВ рдЪрд▓рд╛рдЙрдБрджрд╛, рдкрд╣рд┐рд▓реЗ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд╕рд╣реА рд░реВрдкрдорд╛ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫ рднрдиреЗ pre-commit рдкрд╣рд┐рд▓реЗ рдиреИ рдЬреЛрдбреНрджрд╛, рд╣рд╛рдореАрд▓реЗ рднрд░реНрдЦрд░реИ рдердкреЗрдХреЛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓реНрдиреЗрдЫ, рдЕрд╕рдлрд▓ рд╣реБрдиреЗрдЫ, рд░ рдХреЗрд╣рд┐ рдкрдирд┐ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реБрдиреЗрдЫреИрдиред рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдпрд╕рд░реА рд╣рд╛рдореАрд▓рд╛рдИ рдерд╛рд╣рд╛ рд╣реБрдиреНрдЫ рдХрд┐ рд╣рд╛рдореНрд░рд╛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрд▓реЗ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдХреЗрд╣рд┐ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрджрдЫрдиреНред рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдХреБрд░рд╛ рдХреЗ рдЫ рднрдиреЗ, рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЕрдШрд┐ рдХреЛрдбрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реЗрдХрд╛ рдерд┐рдпреМрдВ рднрдиреЗ, рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрдиреБрдХреЛ рдЕрд░реНрде рдХреЛрдбрд▓реЗ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░реЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдЧрд░реНрджрдЫ, рд╡рд╛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрд▓реЗ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдХреЗрд╣рд┐ рдкрдирд┐ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрджреИрдирдиреН рднрдиреНрдиреЗ рд╣реБрди рд╕рдХреНрдЫред рд╕рд╛рдереИ, рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рд╕реБрд░реБрдорд╛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд▓реЗрдЦреЗрдХрд╛ рдерд┐рдПрдиреМрдВ рднрдиреЗ, рд╣рд╛рдореАрд▓реЗ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдмрд┐рд░реНрд╕реЗрдХрд╛ рд╣реБрди рд╕рдХреНрдЫреМрдВ, рдХрд┐рдирдХрд┐ рд╣рд╛рдореАрд▓рд╛рдИ рд╕рдореНрдЭрд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╣рд┐ рдкрдирд┐ рд╣реБрдиреЗ рдерд┐рдПрдиред
рдкрд░реАрдХреНрд╖рдг рд╕рдВрдЪрд╛рд▓рд┐рдд рд╡рд┐рдХрд╛рд╕ (TDD)
TDD рд▓реЗ рдХреЛрдб рд▓реЗрдЦреНрдиреБ рдЕрдШрд┐ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд▓реЗрдЦреНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрдЫред TDD рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред
- рдПрдЙрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдердкреНрдиреБрд╣реЛрд╕реНред
- рд╕рдмреИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рдирдпрд╛рдБ рдкрд░реАрдХреНрд╖рдг рдЕрд╕рдлрд▓ рднрдПрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рдХреЛрдб рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред
- рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН, рд╕рдмреИ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдкрд╛рд╕ рднрдПрдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рдЖрдлреНрдиреЛ рдХреЛрдб рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдиреБрд╣реЛрд╕реНред
рдЕрд╕рдлрд▓ рд╣реБрдиреЗ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдХреЛ рдирддрд┐рдЬрд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд░рд╛рддреЛ рд░ рдЙрддреНрддреАрд░реНрдг рд╣реБрдиреЗрд╣рд░реВ рд╣рд░рд┐рдпреЛ рд░рдВрдЧрдорд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реБрдиреЗ рднрдПрдХрд╛рд▓реЗ, рдЪрдХреНрд░рд▓рд╛рдИ "рд░рд╛рддреЛ-рд╣рд░рд┐рдпреЛ-рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░" рдкрдирд┐ рднрдирд┐рдиреНрдЫред
я╕П рдХрд╛рд░реНрдп
рдкрд╣рд┐рд▓реЗ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЧрд░реНрдиреЗ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЕрд╕рдлрд▓ рд╣реБрди рджрд┐рдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рддреНрдпрд╕рдкрдЫрд┐ CI рдЪрд░рдг рд╕реВрдЪреА рдкрд╛рда рдЖрдлреИрдВ рдердкреНрдиреБрд╣реЛрд╕реН рд░ рдкреНрд░рддрд┐рдмрджреНрдз рдЧрд░реНрдиреБрд╣реЛрд╕реНред рддрдкрд╛рдИрдВрд▓реЗ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ ("рд╣рд░рд┐рдпреЛ") рдкрд╛рд╕ рднрдПрдХреЛ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫред
рддреНрдпрд╕рдкрдЫрд┐ рдирдпрд╛рдБ рдХреЛрдбрд▓рд╛рдИ рд░рд┐рдореЛрдЯ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдорд╛ рдкреБрд╢ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЫрд▓рдлрд▓ рд░ PR рд╕реНрдерд┐рддрд┐ рдЕрдкрдбреЗрдЯрдХреЛ рддрд▓ рд░рд╣реЗрдХреЛ GitHub рдЗрдиреНрдЯрд░рдлреЗрд╕рдорд╛ рдЪрд▓реНрдиреЗ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред
- рд╢рд╛рдЦрд╛рдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН
feature. рдпреА рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдердкреНрдиреБрд╣реЛрд╕реН
ci.test.jsрдЕрдиреНрддрд┐рдо рдХрд▓ рдкрдЫрд┐it (...);.it('5. Merge/rebase commits from master. Make tests pass on the merge result.', () => { expect(/.*merge.*commits.*testss+pass.*/ig.test(fileContents)).toBe(true); }); it('6. Deploy from the feature branch to production.', () => { expect(/.*Deploy.*tos+production.*/ig.test(fileContents)).toBe(true); }); it('7. If everything is good in production for some period of time, merge changes to master.', () => { expect(/.*merge.*tos+master.*/ig.test(fileContents)).toBe(true); });- рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрджрд┐
pre-commitрд╣реБрдХ рд╕реЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ, рдХрдорд┐рдЯ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЕрд╕рдлрд▓ рд╣реБрдиреЗрдЫред - рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдкрд╛рда рдердкреНрдиреБрд╣реЛрд╕реН
ci.md.5. Merge/rebase commits from master. Make tests pass on the merge result. 6. Deploy from the feature branch with a sneaky bug to production. 7. If everything is good in production for some period of time, merge changes to master. - рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдЖрдлреНрдирд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдкреНрд░рддрд┐рдмрджреНрдз рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рд╢рд╛рдЦрд╛рдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН
feature.
рдЕрдм рддрдкрд╛рдИрдВрд╕рдБрдЧ рдпрд╕реНрддреЛ рдХреЗрд╣рд┐ рд╣реБрдиреБрдкрд░реНрдЫ

╨Ъ╨╛╨╝╨░╨╜╨┤╤Л
# ╨Я╨╡╤А╨╡╨║╨╗╤О╤З╨╕╤В╨╡╨╗╤М╨╜╨░ ╨▓╨╡╤В╨║╤Г feature
git checkout feature
# ╨Ф╨╛╨▒╨░╨▓╨╕╤В╤М ╤В╨╡╤Б╤В╤Л ╨▓ ci.test.js ╨║╨░╨║ ╨╛╨┐╨╕╤Б╨░╨╜╨╛ ╨▓╤Л╤И╨╡
# ╨Ф╨╛╨▒╨░╨▓╤М╤В╨╡ ╨▓ ╨╕╨╜╨┤╨╡╨║╤Б ci.test.js ╤З╤В╨╛╨▒╤Л ╨┐╨╛╨╖╨╢╨╡ ╨╖╨░╨║╨╛╨╝╨╝╨╕╤В╨╕╤В╤М
git add ci.test.js
# ╨Я╨╛╨┐╤Л╤В╨░╨╣╤В╨╡╤Б╤М ╨╖╨░╨║╨╛╨╝╨╝╨╕╤В╨╕╤В╤М ╤В╨╡╤Б╤В╤Л. ╨Х╤Б╨╗╨╕ pre-commit hook ╤Г╤Б╤В╨░╨╜╨╛╨▓╨╗╨╡╨╜╤Л, ╨║╨╛╨╝╨╝╨╕╤В ╨╜╨╡ ╨┐╤А╨╛╨╕╨╖╨╛╨╣╨┤╤С╤В.
git commit
# ╨в╨╡╨┐╨╡╤А╤М ╨┤╨╛╨▒╨░╨▓╤М╤В╨╡ ╤В╨╡╨║╤Б╤В ╨▓ ci.md ╨║╨░╨║ ╨╛╨┐╨╕╤Б╨░╨╜╨╛ ╨▓╤Л╤И╨╡
# ╨Т╨╜╨╡╤Б╨╕╤В╨╡ ╨╕╨╖╨╝╨╡╨╜╨╡╨╜╨╕╤П ╨╕ ╨╖╨░╨║╨╛╨╝╨╝╨╕╤В╤М╤В╨╡ ╨╕╤Е
git add ci.md
git commit -m "Add the remaining CI steps"
# ╨Ю╨┐╤Г╨▒╨╗╨╕╨║╤Г╨╣╤В╨╡ ╨╕╨╖╨╝╨╡╨╜╨╡╨╜╨╕╤П ╨▓ ╨▓╨╡╤В╨║╤Г feature
git pushрд╡рд┐рд▓рдпрдХреЛ рджреНрд╡рдиреНрджреНрд╡
рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдзрдорд╛ рдЕрдЧрд╛рдбрд┐ рдмрдвреНрдиреБрд╣реЛрд╕реН рдЪрд░рдгрд╣рд░реВрдХреЛ рд╕рдореАрдХреНрд╖рд╛.
рд╣рд╛рдореАрд▓реЗ рдХреЗрд╣реА рдЧрд▓реНрддреА рдирдЧрд░реЗ рдкрдирд┐ рд░ рд╣рд╛рдореНрд░реЛ рдХреЛрдбрдХреЛ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рднрдП рдкрдирд┐, рд╣рд╛рдореА рдЕрдЭреИ рдкрдирд┐ рд╢рд╛рдЦрд╛рд▓рд╛рдИ рдорд░реНрдЬ рдЧрд░реНрди рд╕рдХреНрджреИрдиреМрдВред feature ╨╕ masterред рдпреЛ рдХрд┐рдирднрдиреЗ рдЕрд░реНрдХреЛ рд╢рд╛рдЦрд╛ bugfix рд╕рдБрдЧ рдЧрд╛рднрд┐рдПрдХреЛ рдерд┐рдпреЛ master рдЬрдм рд╣рд╛рдореА рдпреЛ рдЬрдирд╕рдВрдкрд░реНрдХрдорд╛ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдерд┐рдпреМрдВред
рдпрд╕рд▓реЗ рдпрд╕реНрддреЛ рдЕрд╡рд╕реНрдерд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫ рдЬрд╣рд╛рдБ рдЯрд╛рдврд╛рдХреЛ рд╢рд╛рдЦрд╛ 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.
я╕П рдХрд╛рд░реНрдп: "рдЪрд░рдг рд╕рдореАрдХреНрд╖рд╛" рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЕрдиреБрдореЛрджрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реНред
- "рдорд░реНрдЬ рдкреБрд▓ рдЕрдиреБрд░реЛрдз" рдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- "рдорд░реНрдЬ рдкреБрд╖реНрдЯрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН" рдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- "рд╢рд╛рдЦрд╛ рдореЗрдЯрд╛рдЙрдиреБрд╣реЛрд╕реН" рдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐рдирдХрд┐ рд╣рд╛рдореАрд▓рд╛рдИ рдЕрдм рдпрд╕рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЫреИрдиред
рдпреЛ рдЕрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВрдХреЛ рднрдгреНрдбрд╛рд░ рд╣реЛред

рдЙрддреНрдкрд╛рджрдирдорд╛ рддреНрд░реБрдЯрд┐
рднрдирд┐рдиреНрдЫ, "рдкрд░реАрдХреНрд╖рдг рдмрдЧрд╣рд░реВрдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐ рджреЗрдЦрд╛рдЙрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рддрд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХрд╣рд┐рд▓реНрдпреИ рджреЗрдЦрд╛рдЙрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред" рд╣рд╛рдореАрд▓реЗ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЧрд░реНрдпреМрдВ рд░ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдХреБрдиреИ рдмрдЧрд╣рд░реВ рджреЗрдЦрд╛рдПрдирдиреН, рддрд░ рдПрдЙрдЯрд╛ рдбрд░рд▓рд╛рдЧреНрджреЛ рдмрдЧ рдЙрддреНрдкрд╛рджрдирдорд╛ рдкреНрд░рд╡реЗрд╢ рдЧрд░реНрдпреЛред
рдпрд╕реНрддреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣рд╛рдореАрд▓реЗ рдирд┐рдореНрди рдХреБрд░рд╛рд╣рд░реВрдХреЛ рдЦреНрдпрд╛рд▓ рд░рд╛рдЦреНрдиреБ рдкрд░реНрдЫ:
- рдЙрддреНрдкрд╛рджрдирдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдХреБрд░рд╛;
- рд╢рд╛рдЦрд╛рдорд╛ рдХреЛрдб
masterрд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдирдпрд╛рдБ рдХрд╛рдо рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдиреЗ рддреНрд░реБрдЯрд┐рдХреЛ рд╕рд╛рдеред
рдЕрд░реНрдХреЛ рд╕рдВрд╕реНрдХрд░рдгрдорд╛ рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗ рд╡рд╛ рд╕рдЪреНрдпрд╛рдЙрдиреЗ?
"рд░реЛрд▓рд┐рдЩ рдмреНрдпрд╛рдХ" рднрдиреЗрдХреЛ рдкрд╣рд┐рд▓реЗрдХреЛ рдЬреНрдЮрд╛рдд рд╕рдВрд╕реНрдХрд░рдгрд▓рд╛рдИ рдЙрддреНрдкрд╛рджрдирдорд╛ рддреИрдирд╛рде рдЧрд░реНрдиреЗ рд░ рдмрдЧ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреЗ рдХрдорд┐рдЯрд╣рд░реВрд▓рд╛рдИ рдЙрд▓реНрдЯрд╛рдЙрдиреЗ рдХрд╛рд░реНрдп рд╣реЛред "рдлрд┐рдХреНрд╕рд┐рдЩ рдлрд░реНрд╡рд╛рд░реНрдб" рднрдиреЗрдХреЛ рдлрд┐рдХреНрд╕ рдердкреНрдиреЗ рдХрд╛рд░реНрдп рд╣реЛред 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 рдорд░реНрдЬ рдХрдорд┐рдЯ рдЙрд▓реНрдЯрд╛рдПрдкрдЫрд┐ рдЕрдм "рд╕реНрдиреАрдХреА рдмрдЧ" рдкрд╛рда рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдБрджреИрдиред
CI рдЪрд░рдг рд╕реВрдЪреА рдареАрдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдпрд╕рд▓рд╛рдИ рдорд╛рд╕реНрдЯрд░рдорд╛ рдлрд┐рд░реНрддрд╛ рдзрдХреЗрд▓реНрдиреБрд╣реЛрд╕реН
рд╣рд╛рдореАрд▓реЗ рд╢рд╛рдЦрд╛ рдорд░реНрдЬ рдХрдорд┐рдЯрд▓рд╛рдИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЙрд▓реНрдЯрд╛рдпреМрдВред featureрдЦреБрд╢реАрдХреЛ рдЦрдмрд░ рдпреЛ рд╣реЛ рдХрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рдЕрдм рдХреБрдиреИ рдмрдЧ рдЫреИрди masterред рдирд░рд╛рдореНрд░реЛ рдЦрдмрд░ рдпреЛ рд╣реЛ рдХрд┐ рд╣рд╛рдореНрд░реЛ рдмрд╣реБрдореВрд▓реНрдп CI рдЪрд░рдг рд╕реВрдЪреА рдкрдирд┐ рд╣рд░рд╛рдПрдХреЛ рдЫред рддреНрдпрд╕реИрд▓реЗ, рдЖрджрд░реНрд╢ рд░реВрдкрдорд╛, рд╣рд╛рдореА рдХрдорд┐рдЯрд╣рд░реВрдорд╛ рдлрд┐рдХреНрд╕ рд▓рд╛рдЧреВ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ 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); });- рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЕрд╕рдлрд▓ рд╣реБрдиреНрдЫрдиреН рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рд╕реНрдерд╛рдиреАрдп рд░реВрдкрдорд╛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред
- "with a sneaky bug" рднрдиреНрдиреЗ рдкрд╛рда рд╣рдЯрд╛рдЙрдиреБрд╣реЛрд╕реН
ci.md. - рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдорд╛ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд░ рдЪрд░рдг рд╕реВрдЪреА рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдердкреНрдиреБрд╣реЛрд╕реН рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рддрд┐рдмрджреНрдз рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рд╢рд╛рдЦрд╛рд▓рд╛рдИ рд░рд┐рдореЛрдЯ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реАрдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕реНрддреИ рдХреЗрд╣рд┐ рдкрд╛рдЙрдиреБ рдкрд░реНрдЫред

╨Ъ╨╛╨╝╨░╨╜╨┤╤Л
# ╨б╨╛╨╖╨┤╨░╨╣╤В╨╡ ╨▓╨╡╤В╨║╤Г ╨┐╨╛╨┤ ╨╜╨░╨╖╨▓╨░╨╜╨╕╨╡╨╝ feature-fix ╨╕ ╨┐╨╡╤А╨╡╨║╨╗╤О╤З╨╕╤В╨╡╤Б╤М ╨╜╨░ ╨╜╨╡╨╡.
git checkout -b feature-fix
# ╨Я╨╡╤А╨╡╨╜╨╡╤Б╨╕╤В╨╡ ╨▓╤Б╨╡ ╨║╨╛╨╝╨╝╨╕╤В╤Л ╨╕╨╖ ╨▒╤Л╨▓╤И╨╡╨╣ ╨▓╨╡╤В╨║╨╕ feature ╨▓ ╨╜╨╛╨▓╤Г╤О ╨▓╨╡╤В╨║╤Г. ╨а╨░╨╖╤А╨╡╤И╨╕╤В╨╡ ╨║╨╛╨╜╤Д╨╗╨╕╨║╤В╤Л ╤Б╨╗╨╕╤П╨╜╨╕╤П, ╨║╨╛╤В╨╛╤А╤Л╨╡ ╨▓╨╛╨╖╨╜╨╕╨║╨╗╨╕ ╨┐╤А╨╕ ╨┐╨╡╤А╨╡╨╜╨╛╤Б╨╡.
# ╨╕╤Б╨┐╨╛╨╗╤М╨╖╤Г╨╣╤В╨╡ ╨╕╤Б╤В╨╛╤А╨╕╤О ╤З╤В╨╛╨▒╤Л ╤Г╨╖╨╜╨░╤В╤М ╤Е╤Н╤И╨╕ ╨║╨╛╨╝╨╝╨╕╤В╨╛╨▓:
# - ╨┐╤А╨╡╨┤╤И╨╡╤Б╤В╨▓╤Г╤О╤Й╨╡╨│╨╛ ╨║╨╛╨╝╨╝╨╕╤В╤Г ╤Б ╨┐╨╡╤А╨▓╨╛╨╣ ╤З╨░╤Б╤В╤М╤О ╤Б╨┐╨╕╤Б╨║╨░: C0
# - ╨┤╨╛╨▒╨░╨▓╨╗╤П╤О╤Й╨╡╨│╨╛ ╨┐╨╛╤Б╨╗╨╡╨┤╨╜╨╕╨╡ ╤Н╨╗╨╡╨╝╨╡╨╜╤В╤Л ╤Б╨┐╨╕╤Б╨║╨░: C2
git log --oneline --graph
git cherry-pick C0..C2
# ╤А╨░╨╖╤А╨╡╤И╨╕╤В╨╡ ╨║╨╛╨╜╤Д╨╗╨╕╨║╤В╤Л ╤Б╨╗╨╕╤П╨╜╨╕╤П
# - ╨╛╤В╤А╨╡╨┤╨░╨║╤В╨╕╤А╤Г╨╣╤В╨╡ ci.md ╨╕/╨╕╨╗╨╕ ci.test.js
# - ╨┤╨╛╨▒╨░╨▓╤М╤В╨╡ ╤Д╨░╨╣╨╗╤Л ╨▓ ╨╕╨╜╨┤╨╡╨║╤Б
# - ╨▓╤Л╨┐╨╛╨╗╨╜╨╕╤В╨╡ "git cherry-pick --continue", ╨╝╨╛╨╢╨╡╤В╨╡ ╨╜╨╡ ╨╝╨╡╨╜╤П╤В╤М ╤Б╨╛╨╛╨▒╤Й╨╡╨╜╨╕╨╡ ╨║╨╛╨╝╨╝╨╕╤В╨░
# ╨Ф╨╛╨▒╨░╨▓╤М╤В╨╡ ╤А╨╡╨│╤А╨╡╤Б╤Б╨╕╨╛╨╜╨╜╤Л╨╣ ╤В╨╡╤Б╤В ╨▓ ci.test.js
# ╨Ч╨░╨┐╤Г╤Б╤В╨╕╤В╨╡ ╤В╨╡╤Б╤В╤Л ╨╗╨╛╨║╨░╨╗╤М╨╜╨╛, ╤З╤В╨╛╨▒╤Л ╤Г╨▒╨╡╨┤╨╕╤В╤М╤Б╤П, ╤З╤В╨╛ ╨╛╨╜╨╕ ╨╜╨╡ ╨╖╨░╨▓╨╡╤А╤И╨░╤О╤В╤Б╤П ╤Г╤Б╨┐╨╡╤И╨╜╨╛.
# ╨г╨┤╨░╨╗╨╕╤В╨╡ ╤В╨╡╨║╤Б╤В " with a sneaky bug" ╨▓ ci.md.
# ╨Ф╨╛╨▒╨░╨▓╤М╤В╨╡ ╨▓ ╨╕╨╜╨┤╨╡╨║╤Б ╨╕╨╖╨╝╨╡╨╜╨╡╨╜╨╕╤П ╤В╨╡╤Б╤В╨╛╨▓ ╨╕ ╨▓ ╤Б╨┐╨╕╤Б╨║╨╡ ╤И╨░╨│╨╛╨▓ ╨╕ ╨╖╨░╨║╨╛╨╝╨╝╨╕╤В╤М╤В╨╡ ╨╕╤Е.
git add ci.md ci.test.js
git commit -m "Fix the bug in steps list"
# ╨Ю╨┐╤Г╨▒╨╗╨╕╨║╤Г╨╣╤В╨╡ ╨▓╨╡╤В╨║╤Г ╨▓ ╤Г╨┤╨░╨╗╤С╨╜╨╜╤Л╨╣ ╤А╨╡╨┐╨╛╨╖╨╕╤В╨╛╤А╨╕╨╣.
git push --set-upstream origin feature-fix
рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рд╢реАрд░реНрд╖рдХ рд╕рд╣рд┐рддрдХреЛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╕реБрд╡рд┐рдзрд╛ рдорд┐рд▓рд╛рдЙрдБрджреИрд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН feature-fix "рдореБрдЦреНрдп рд╢рд╛рдЦрд╛" рдХреЛ рд░реВрдкрдорд╛, рд░ master "рдЖрдзрд╛рд░ рд╢рд╛рдЦрд╛" рдХреЛ рд░реВрдкрдорд╛ред
рдХреГрдкрдпрд╛ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВ рдкреВрд░рд╛ рдирднрдПрд╕рдореНрдо рдкрд░реНрдЦрдиреБрд╣реЛрд╕реНред рддрдкрд╛рдИрдВрд▓реЗ PR рдЫрд▓рдлрд▓рдХреЛ рддрд▓ рдкрд░реАрдХреНрд╖рдгрд╣рд░реВрдХреЛ рд╕реНрдерд┐рддрд┐ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫ рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН
masterрдЖрдлреНрдиреЛ рдорд╛ рднрдгреНрдбрд╛рд░ рдлреЛрд░реНрдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН "рдЖрдзрд╛рд░ рд╢рд╛рдЦрд╛" рдХреЛ рд░реВрдкрдорд╛, рдо рдкрд╛рдареНрдпрдХреНрд░рдо рд╕рд╛рдордЧреНрд░реА рднрдгреНрдбрд╛рд░рдорд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рджрд┐рдиреЗ рдЫреИрдиред
"рд╕реБрд╡рд┐рдзрд╛ рдорд┐рд▓рд╛рдЙрдБрджреИ" рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЕрдиреБрдореЛрджрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рд╕реБрдзрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рдж! рдХреГрдкрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрдореЛрджрди рдЧрд░реНрдиреБрд╣реЛрд╕реН master рдкреБрд▓ рдЕрдиреБрд░реЛрдзрдмрд╛рдЯред
я╕П рдХрд╛рд░реНрдп
- "рдорд░реНрдЬ рдкреБрд▓ рдЕрдиреБрд░реЛрдз" рдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- "рдорд░реНрдЬ рдкреБрд╖реНрдЯрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реН" рдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- "рд╢рд╛рдЦрд╛ рдореЗрдЯрд╛рдЙрдиреБрд╣реЛрд╕реН" рдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐рдирдХрд┐ рд╣рд╛рдореАрд▓рд╛рдИ рдЕрдм рдпрд╕рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЫреИрдиред
рдпреЛ рдЕрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВрд╕рдБрдЧ рд╣реБрдиреБрдкрд░реНрдЫред

рдмрдзрд╛рдИ рдЫ!
рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдорд╛рдирд┐рд╕рд╣рд░реВрд▓реЗ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдЧрд░реНрдиреЗ рд╕рдмреИ рдХрд╛рдорд╣рд░реВ рдЧрд░реНрдиреБрднрдПрдХреЛ рдЫред
рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдкрд╛рдареНрдпрдХреНрд░рдордорд╛ рдХреБрдиреИ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреНрдиреБрднрдпреЛ рд╡рд╛ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рд╕реБрдзрд╛рд░ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдерд╛рд╣рд╛ рдЫ рднрдиреЗ, рдорд╛ рдПрдЙрдЯрд╛ рд╕рдорд╕реНрдпрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдпреЛ рдХреЛрд░реНрд╕рдорд╛ рдкрдирд┐ рдЫ рдкреНрд▓реЗрдЯрдлрд░реНрдордХреЛ рд░реВрдкрдорд╛ GitHub рд▓рд░реНрдирд┐рдЩ рд▓реНрдпрд╛рдм рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИред
рд╕реНрд░реЛрдд: www.habr.com

