Git рдХреЗ рд╕рд╛рде рджреИрдирд┐рдХ рдХрд╛рд░реНрдп

рдореИрдВ рд▓рдЧрднрдЧ рдХрд╣реАрдВ рднреА рдФрд░ рдЬрд┐рддрдиреЗ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рджреМрд░рд╛рди рдореИрдВ рдмрд╣реБрдд рдХреБрдЫ рд╕реАрдЦрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рдФрд░ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдореИрдВ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдпрд╣ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд╡реАрд╕реАрдПрд╕ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддреЗ рд╣реИрдВ:


рдмреЗрд╢рдХ, рдореИрдВ рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреНрд░рдо рдореЗрдВ рд╕рдм рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рдЕрднреА рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдЧрд┐рдЯ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡реА рдкрд╛рдардХ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдирдпрд╛ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╕рд▓рд╛рд╣ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдПрдХ рдпреЛрдЬрдирд╛ рдХреЗ рдмрдЬрд╛рдп


рдмрд╣реБрдд рдмрд╛рд░, рдХреБрдЫ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЧреБрдЪреНрдЫрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдпреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдЧ рд╣реИрдВ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдВрдкрдирд┐рдпрд╛рдВ рд╣реИрдВ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВред рдпрд╣ рд╕рдм рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреБрдХреНрдд рд╣реИ? рдмрд╛рдж рдореЗрдВ, рдЬрдм рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдореБрдЦреНрдп рдЪрд░рдгреЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓реВрдВрдЧрд╛:


рдкрд░реНрдпрд╛рд╡рд░рдг



рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:
  1. Git
  2. рдХрдВрд╕реЛрд▓
  3. рдореЙрдирд┐рдЯрд░ рдХреЗ рджреВрд╕рд░реА рддрд░рдл рдХрд╛ рдЖрджрдореА рдЬреЛ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдЙрд╕рдХреА рдкрд╕рдВрджреАрджрд╛ рдзреБрд░реА рдХреЗ рдиреАрдЪреЗ рдХреИрд╕реЗ рд░рдЦрд╛ рдЬрд╛рдП

рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╡рд╛рддрд╛рд╡рд░рдг рдбреЗрдмрд┐рдпрди + KDE + Git + рдмреИрд╢ + GitK + KDiff3 рд╣реИред
рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд┐рдВрдбреЛрдЬ + рдПрдордПрд╕рдЖрдИрдЬрд┐рдЯ (рдЬреАрдЖрдИрдЯреА-рдмреИрд╢) + рдЯреЛрд░реНрдЯреЛрдЗрд╕реЗрдЧрд┐рдЯ, рдЖрджрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрдЧреАред

рдпрджрд┐ рдЖрдк рдХрдВрд╕реЛрд▓ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ git рд▓рд┐рдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
рдорджрдж
 usage: git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p|--paginate|--no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] [-c name=value] [--help] <command> [<args>] The most commonly used git commands are: add Add file contents to the index bisect Find by binary search the change that introduced a bug branch List, create, or delete branches checkout Checkout a branch or paths to the working tree clone Clone a repository into a new directory commit Record changes to the repository diff Show changes between commits, commit and working tree, etc fetch Download objects and refs from another repository grep Print lines matching a pattern init Create an empty git repository or reinitialize an existing one log Show commit logs merge Join two or more development histories together mv Move or rename a file, a directory, or a symlink pull Fetch from and merge with another repository or a local branch push Update remote refs along with associated objects rebase Forward-port local commits to the updated upstream head reset Reset current HEAD to the specified state rm Remove files from the working tree and from the index show Show various types of objects status Show the working tree status tag Create, list, delete or verify a tag object signed with GPG See 'git help <command>' for more information on a specific command. 


рддреЛ рдЖрдк рддреИрдпрд╛рд░ рд╣реИрдВред

рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдбрд░рдирд╛ рдмрдВрдж рдХрд░реЗрдВ



рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреАрдореЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╕реНрдкреЙрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреБрдЫ рд▓реЗрдЦ рдкрдврд╝реЗ рдЧрдП рд╣реИрдВ, рдЖрдк рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЧрд▓рдд рдЯреАрдо рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдпрд╛ рдХреБрдЫ рдХреЛ рддреЛрдбрд╝рдиреЗ рд╕реЗ рдбрд░рддреЗ рд╣реИрдВред рдпрд╛ рд╢рд╛рдпрдж рдХреБрдЫ рднреА рдЕрдзреНрдпрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рддреЛ рдмрд╕ рдпрд╣ рдпрд╛рдж рд░рдЦреЗрдВ:
рдЖрдк рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд┐рд╕реА рднреА рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рдпреЛрдЧ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд git push рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реИред
рдХреЗрд╡рд▓ рдпрд╣ рдЖрджреЗрд╢ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреВрд╕рд░реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреБрдЫ рдЯреВрдЯ рд╕рдХрддрд╛ рд╣реИред

рд╕рдЦреНрддреА рд╕реЗ рдмреЛрд▓рдирд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрд╕рдлрд▓ рдзрдХреНрдХрд╛ рдзрдХреНрдХрд╛ рднреА рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдЖрдк рдХрд┐рд╕реА рднреА рднрдВрдбрд╛рд░ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХреНрд▓реЛрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдмрд┐рд▓реНрдбрд┐рдВрдЧ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЧрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреНрдпрд╛ рд╣реИ? рдЙрддреНрддрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рдпрд╣ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИред `.It` рдлреЛрд▓реНрдбрд░ред рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рд▓рдЧрднрдЧ 20 рдмрд╛рд░ рдореИрдВрдиреЗ рдЧреАрдереВрдм / рдЧреАрддрд╛рд▓рд╛рдм рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреАред рдпрд╣ рд╕реЛрдЪрдХрд░ рдХрд┐ рдпрд╣ рдЧрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдерд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЧрд┐рдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХреБрдЫ рдЧрд┐рдЯ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдФрд░ рдЕрдЧрд░ рдпреЗ рд╕рд┐рд░реНрдл рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд╣рд╛рдВ рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рд╡рд╣рд╛рдВ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ? рд╣рд╛рдБ! рдореИрдВ рдЗрд╕реЗ "рдкрд░рд┐рд╡рд╣рди" рдХрд╣рддрд╛ рд╣реВрдВред рдпрд╣ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдпрд╛рдж рд░рдЦрдирд╛ рдЗрддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛ред рдПрдХ рдФрд░ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк: "рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ред" рд╕рдмрд╕реЗ рдЖрдо рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
  1. рдлрд╝рд╛рдЗрд▓ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рд╣реИред
  2. SSH - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред
  3. HTTP (S) - http рдХреЛ рд╕реЗрдВрдб / рд░рд┐рд╕реАрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдФрд░ рднреА рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреМрди рд╕реЗ рдкрд░рд┐рд╡рд╣рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдпрд╛ рдкрдврд╝рдирд╛ / рд▓рд┐рдЦрдирд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬреАрдердм рдХреЗ рд╕рд╛рде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд▓реЙрдЧ рдореЗрдВ рдХреЛрдИ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкрд░рд┐рд╡рд╣рди рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЬрдм рдЗрд╕ рддрд░рд╣ рдХреНрд▓реЛрдирд┐рдВрдЧ:
 git clone git@github.com:user/repo.git 

url "рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ"
 git clone ssh://git@github.com:user/repo.git 

рдпрд╛рдиреА рдПрд╕рдПрд╕рдПрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рддрд▓рд╛рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ ssh рдХреБрдВрдЬреА рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рдЖрдкрдХреЛ "рдПрд╕рдПрд╕рдПрдЪ рдСрде рдХреАрдЬрд┐рдЯ" рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЧреВрдЧрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛, рдпрджрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рдпрд╕реНрдХ рд╣реИрдВ, рддреЛ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:
 ssh -vvv git@github.com 


рдХреНрдпрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рд╣рд╛рдпрддрд╛ (GIT URLS рдЕрдиреБрднрд╛рдЧ) рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ:
 git clone --help 


рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рддреЗ рд╣реИрдВ:
  1. рд╣рдо рдЖрдкрдХреЗ рдЕрдкрдиреЗ рджреВрд░рд╕реНрде рднрдВрдбрд╛рд░ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░реЗрдВрдЧреЗ
  2. рдбреЗрд╡рд▓рдкрд░реНрд╕ (dev1 рдФрд░ dev2) рдХреА рдУрд░ рд╕реЗ рдЗрд╕рдХреЗ рджреЛ рдХреНрд▓реЛрди рдмрдирд╛рддреЗ рд╣реИрдВ



рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рднреА рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╛рдо рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдпрд╣ рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИ рдХрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реНрд╡рдпрдВ (.рдЧрд┐рдд рдлрд╝реЛрд▓реНрдбрд░) рдирд┐рд╣рд┐рдд рд╣реИред рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рд╕реА рднреА рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдирдВрдЧреЗ repos рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЪрд▓реЛ рдПрдХ рдмрдирд╛рддреЗ рд╣реИрдВ (рдпрд╣ рд╣рдорд╛рд░рд╛ рдореБрдЦреНрдп рдкрд░реАрдХреНрд╖рдг рднрдВрдбрд╛рд░ рд╣реЛрдЧрд╛):
 $ mkdir git-habr # ,    $ cd git-habr $ git init --bare origin Initialized empty Git repository in /home/sirex/proj/git-habr/origin/ 


рдЕрдм рдЗрд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдУрд░ рд╕реЗ рдХреНрд▓реЛрди рдХрд░реЗрдВред рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЪреЗрддрд╛рд╡рдиреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдЧреА: git, рдпрд╣ рдПрд╣рд╕рд╛рд╕ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реНрдерд╛рдиреАрдп рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рдкрд╛рд░реНрдЯреАрд╢рди рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ, рд▓рд┐рдВрдХ рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдкреВрд░реА рдХреЙрдкреА рдирд╣реАрдВ рдмрдирд╛рдПрдВрдЧреЗред рдФрд░ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк --no-hardlinks рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 $ git clone --no-hardlinks origin dev1 Cloning into 'dev1'... warning: You appear to have cloned an empty repository. done. $ git clone --no-hardlinks origin dev2 Cloning into 'dev2'... warning: You appear to have cloned an empty repository. done. 


рдиреАрдЪреЗ рдкрдВрдХреНрддрд┐: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 3 рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реИрдВред рд╡рд╣рд╛рдБ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред

рдЬреАрдЖрдИрдЯреА рд╕реНрдЯрд╛рд░реНрдЯ




рд╕реНрдХреИрдВрдбрд▓реНрд╕! рд╕рд╛рдЬрд╝рд┐рд╢! рдЬрд╛рдВрдЪ!


рдЖрдк рд╕реВрдЪреА рдХреЛ рдЖрдЧреЗ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдкреНрд░рд╢реНрди рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╕рдордЭрд╛ рдФрд░ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?


рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рджреЗрдЦреЗрдВред рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

Gitред рд▓рдЧрднрдЧ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ

Git рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рд╣реЗрдЬрддрд╛ рд╣реИ (рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рд╕рд╣реЗрдЬрддрд╛ рд╣реИ)ред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдмрджрд▓реА рдЧрдИ рд╣реИ, рддреЛ рдкреБрд░рд╛рдиреА рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЗрд╡рд▓ рд╕рдВрд╢реЛрдзрд┐рдд рдлрд╛рдЗрд▓реЗрдВ рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛ рдЬрд╛рдПрдВрдЧреА, рдЬреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЛ рдмрдЪрд╛рдПрдЧреА рдФрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдмрджреНрдз рдкрд░ рдЬрд▓реНрджреА рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧреАред

рдпрд╣ рдЖрдкрдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдордЬрд╝реЗрджрд╛рд░ рдЪреАрдЬрд╝реЗрдВ рдпрд╣рд╛рдБ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ:
 $ git init /tmp/test Initialized empty Git repository in /tmp/test/.git/ $ cd /tmp/test $ cp ~/debian.iso . # iso  168  $ du -sh .git #   .git 92K .git $ git add debian.iso $ git commit -m "Added iso" [master (root-commit) 0fcc821] added iso 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 debian.iso $ du -sh .git #  163M .git # .      (   ) $ cp debian.iso debian2.iso $ cp debian.iso debian3.iso $ git add debian2.iso debian3.iso $ git commit -m "Copied iso" [master f700ab5] copied iso 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 debian2.iso create mode 100644 debian3.iso $ du -sh .git #  163M .git #   .     ,     . 


рд╣рд╛рдВ, рдЖрдкрдХреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ "рднрд╛рд░реА" рдлрд╛рдЗрд▓реЗрдВ, рдмрд╛рдпрдиреЗрд░реА рдЖрджрд┐ рдХреЛ рд╕реНрдЯреЛрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реЗ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдБ рд░рд╣реЗрдВрдЧреЗ рдФрд░ рднрдВрдбрд╛рд░ рдХреЗ рд╣рд░ рдХреНрд▓реЛрди рдореЗрдВ рд░рд╣реЗрдВрдЧреЗред

рдкреНрд░рддреНрдпреЗрдХ рдХрдорд┐рдЯ рдореЗрдВ рдХрдИ рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЗ рдХрдорд┐рдЯ рдФрд░ рдХрдИ рдмрдЪреНрдЪреЗ рдХрдорд┐рдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:


рд╣рдо рдЗрд╕ рдкреЗрдбрд╝ рдХреЗ рдХрд┐рд╕реА рднреА рдмрд┐рдВрджреБ рдкрд░ (рдпрд╛ рдХрд┐рд╕реА рднреА рд░рд╛рдЬреНрдп рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд) рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдмрд▓реНрдХрд┐, рдПрдХ рдЧреНрд░рд╛рдлред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЧрд┐рдЯ рдЪреЗрдХрдЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
 git checkout <commit> 

рдПрдХ рдореЗрдВ рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдорд░реНрдЬ рдХрд╛ рдПрдХ рдорд░реНрдЬ рд╣реИ (рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рд╕реЗрдЯреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди)ред
рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рдЦрд╛ рдореЗрдВ рдХрдИ рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХрд╛ рдЖрднрд╛рд╕ рд╣реЛрддрд╛ рд╣реИред

рд╡реИрд╕реЗ, рдореИрдВ рдпрд╣рд╛рдВ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ / рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдПрдХ рднрд╛рдЧ рдкрд░ рдПрдХ рдЯреИрдЧ рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЖрджрд┐ред рд╣рд╛рд▓рдд рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╣рд╛рд▓ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рднрдВрдбрд╛рд░ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ 1, рдкреНрд░реЛрдЬреЗрдХреНрдЯ 2 рдЖрджрд┐ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╕ рдЬрдбрд╝ рддрдХред


рдЕрдм рд╢рд╛рдЦрд╛рдУрдВ рдХреЛред рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ:
Git * рдореЗрдВ рдХреЛрдИ рд╢рд╛рдЦрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ (рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдХреИрд╡рд┐рдПрдЯ рдХреЗ рд╕рд╛рде)

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реИ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рдХрдорд┐рдЯ рд╣реИрдВ рдЬреЛ рдЧреНрд░рд╛рдл рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рдо рдкреЗрд░реЗрдВрдЯ-рдХрдорд┐рдЯ рд╕реЗ рдХрд┐рд╕реА рднреА рдЪрд╛рдЗрд▓реНрдб-рдХрдореЗрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рд░рд╛рд╕реНрддрд╛ рдЪреБрдирддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдХрдорд┐рдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ "рдпрд╛рдж" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ рдПрдХ рдирд╛рдорд┐рдд рд╕реВрдЪрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдирд╛рдорд┐рдд рд╕реВрдЪрдХ рдПрдХ рд╢рд╛рдЦрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣ рдЯреИрдЧ рдХреЗ рд╕рд╛рдеред `рд╣реАрдб` рдПрдХ рд╣реА рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрднреА рдХрд╣рд╛рдБ рд╣реИрдВред рдирдП рдЖрд╡рд╛рдЧрдорди рд╡рд░реНрддрдорд╛рди рд╢рд╛рдЦрд╛ рдХреА рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реИрдВ (рд╡рд╣реА рдЬрд╣рд╛рдВ HEAD рджрд┐рдЦрддрд╛ рд╣реИ)ред

рдпрджрд┐ рдпрд╣ рдЯреИрдЧ рдирд╣реАрдВ рд╣реИ рддреЛ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдХрд┐рд╕реА рднреА рдХрдорд┐рдЯ рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЯреИрдЧ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдпрд╛рдж рд░рдЦреЗрдВ рдФрд░ рдХрд╣реАрдВ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рди рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдпрд╣ рд╕рдм рдЖрдкрдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрдм рдЧрд┐рдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред рдмрд╛рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдм рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╢рдмреНрджрд╛рд╡рд▓реА

рд╕реВрдЪрдХрд╛рдВрдХ - рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдХреНрд╖реЗрддреНрд░, рдЕрд░реНрдерд╛рддреНред рд╕рдм рдХреБрдЫ рдЬреЛ рдЖрдкрдиреЗ рднрдВрдбрд╛рд░ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдерд╛ред
рдкреНрд░рддрд┐рдмрджреНрдз - рднрдВрдбрд╛рд░ рдореЗрдВ рднреЗрдЬреЗ рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиред
HEAD рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдорд╛рд╕реНрдЯрд░ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢рд╛рдЦрд╛ рдХрд╛ рдирд╛рдо, рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рднреА рд╣реИ
рдореВрд▓ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рджреВрд░рд╕реНрде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдирд╛рдо (рдЖрдк рджреВрд╕рд░рд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ)
рдЪреЗрдХрдЖрдЙрдЯ - рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХреБрдЫ рд░рд╛рдЬреНрдп рд▓реЗрддреЗ рд╣реИрдВред

рд╕рд░рд▓ рд╕рдВрдкрд╛рджрди

рджреЛ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
  1. рдЧрд┐рдЯ рдХреА рд╕реНрдерд┐рддрд┐
  2. gitk


рдпрджрд┐ рдЖрдкрдиреЗ рдХреБрдЫ рдЧрд▓рдд рдХрд┐рдпрд╛, рддреЛ рднреНрд░рдорд┐рдд рд╣реЛ рдЧрдП, рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ - рдпреЗ рджреЛрдиреЛрдВ рдЯреАрдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдВрдЧреАред

git status - рдЖрдкрдХреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (рд╡рд░реНрдХрд┐рдВрдЧ рдХреЙрдкреА) рдФрд░ рдЖрдк рдХрд╣рд╛рдБ рд╣реИрдВ, рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
gitk рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдпреВрдЯрд┐рд▓рд┐рдЯреА рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рдл рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИред рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рд╕рдм рдХреБрдЫ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдЦрд╛рдУрдВ --all рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

рдЖрдЗрдП рдЕрдкрдиреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдПрдХ рдбреЗрд╡рд▓рдкрд░ dev1 $ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ dev2 $ рдореЗрдВред

README.md рдЬреЛрдбрд╝реЗрдВ:
 dev1$ vim README.md dev1$ git add README.md dev1$ git commit -m "Init Project" [master (root-commit) e30cde5] Init Project 1 file changed, 4 insertions(+) create mode 100644 README.md dev1$ git status # On branch master nothing to commit (working directory clean) 


рд╕рднреА рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдПрдХ рдЦрд╛рд▓реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдХрдорд┐рдЯ рдХрд╣рд╛рдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИред
рд╡рд╣ рд╣рдореЗрдВ рдпрд╣ рдмрддрд╛рдПрдЧрд╛:
 dev1$ git push origin No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'master'. fatal: The remote end hung up unexpectedly error: failed to push some refs to '/home/sirex/proj/git-habr/origin' dev1$ git push origin master Counting objects: 3, done. Writing objects: 100% (3/3), 239 bytes, done. Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin * [new branch] master -> master 


рджреВрд╕рд░рд╛ рдбреЗрд╡рд▓рдкрд░ рдкреБрд▓ рдХрд░рдХреЗ рдЗрди рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
 dev2$ git pull remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. From /home/sirex/proj/git-habr/origin * [new branch] master -> origin/master 


рдХреБрдЫ рдФрд░ рдмрджрд▓рд╛рд╡ рдЬреЛрдбрд╝реЗрдВ:
 dev1(master)$ vim README.md dev1(master)$ git commit -m "Change 1" -a dev1(master)$ vim README.md dev1(master)$ git commit -m "Change 2" -a dev1(master)$ vim README.md dev1(master)$ git commit -m "Change 3" -a 


рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ (рд░рди рдЧрд┐рдЯрдХ):
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда

рдкрд╣рд▓реА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛рдУрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ред рдХреНрд░рдо рдореЗрдВ рдЪрд▓рддреЗ рд╣реБрдП, рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рддрдХ, рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреИрд╕реЗ рдмрджрд▓ рдЧрдИ:
 @@ -2,3 +2,4 @@ My New Project -------------- Let's start +Some changes 

 @@ -3,3 +3,5 @@ My New Project Let's start Some changes +Some change 2 + 

 @@ -2,6 +2,5 @@ My New Project -------------- Let's start -Some changes -Some change 2 +Some change 3 



рдЕрдм рддрдХ, рд╣рдордиреЗ рдЕрдВрдд рдореЗрдВ (рдЬрд╣рд╛рдВ рдорд╛рд╕реНрдЯрд░ рд╣реИ ) рдХрдорд┐рдЯреНрд╕ рдХреЛ рдЬреЛрдбрд╝рд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо README.md рдХрд╛ рдПрдХ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рд╣рдо рдЗрд╕реЗ рдХрд╣реАрдВ рд╕реЗ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдВрддрд┐рдо рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рд╣рдо рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдкрд┐рдЫрд▓реЗ рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рд╢рд╛рдЦрд╛ рд╕реВрдЪрдХ рдмрдирд╛рдПрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, git log рдпрд╛ gitk рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рдХрдорд┐рдЯ рдЖрдИрдбреА рд╕реАрдЦрддреЗ рд╣реИрдВред рдлрд┐рд░, рдПрдХ рд╢рд╛рдЦрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ:
 dev1(master)$ git branch <branch_name> <commit_id> #    git branch <branch_name> HEAD~1 #     dev1(master)$ git checkout <branch_name> 


GUI рдкрд╕рдВрдж рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рдХрд▓реНрдк рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реИ: рд╕рд╣реА рдорд╛рдЙрд╕ рдмрдЯрди рдХреЗ рд╕рд╛рде рд╕рд╣реА рдХрдорд┐рдЯ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ -> "рдирдИ рд╢рд╛рдЦрд╛ рдмрдирд╛рдПрдВ"ред
рдпрджрд┐ рдЖрдк рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╢рд╛рдЦрд╛ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рд╢рд╛рдЦрд╛ рдЖрдЗрдЯрдо рдХреА рдЬрд╛рдВрдЪ рд╣реЛрдЧреАред рдореИрдВрдиреЗ рд╢рд╛рдЦрд╛ рдХрд╛ рдирд╛рдо "v2" рд░рдЦрд╛ред
рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддреЗ рд╣реИрдВ:
 dev1(v2)$ vim README.md dev1(v2)$ git commit -m "Ugly changes" -a [v2 75607a1] Ugly changes 1 file changed, 1 insertion(+), 1 deletion(-) 

рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


рдЕрдм рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдХрд╣реАрдВ рд╕реЗ рд╢рд╛рдЦрд╛рдПрдБ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдХреИрд╕реЗ рдмрджрд▓рддрд╛ рд╣реИред

рддреЗрдЬреА рд╕реЗ рдЙрд▓реНрдЯрд╛

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд╛рд╕реНрдЯ-рдлреЙрд░рд╡рд░реНрдб , рд░рд┐рдмреЗрд╕ , рдорд░реНрдЬ рдПрдХ рд╕рд╛рде рдорд┐рд▓ рдЪреБрдХреЗ рд╣реИрдВред рдЗрди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдореИрдВ рд░рд┐рдмрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдХреЛрдИ рдХреЗрд╡рд▓ рдорд░реНрдЬ рдХрд░рддрд╛ рд╣реИред рдмрд╣реБрдд рд╕рд╛рд░реЗ рд░рд┐рдмрд╛рд╕ рдмрдирд╛рдо рдорд░реНрдЬ рдереАрдо рд╣реИрдВред рд▓реЗрдЦрдХ рдЕрдХреНрд╕рд░ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХрд╛ рддрд░реАрдХрд╛ рдмреЗрд╣рддрд░ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╣рдо рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ: рд╣рдо рд╕рдордЭреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХрд┐рд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рд╕ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред

рдЕрдм рддрдХ, рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рд╕реАрдорд╛ рдХреЗ рднреАрддрд░, рд╣рдо рдПрдХ рд╢рд╛рдЦрд╛ рдмрдирд╛рдПрдВрдЧреЗ: рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдбрд╛рд▓реЗрдВ, рдПрдХ рдирдП рдмрд┐рдВрджреБ рд╕реЗ рдлрд╛рдЗрд▓ рдХреЗ рджреЛ рд╡реЗрд░рд┐рдПрдВрдЯ рдмрдирд╛рдПрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
 dev1(v2)$ git checkout master Switched to branch 'master' Your branch is ahead of 'origin/master' by 3 commits. # ,      master   origin 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ collider.init.sh рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
 #!/bin/sh USER=collider case $1 in *) echo Uknown Action: $1 ;; esac 


рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдЬреЛрдбрд╝реЗрдВ, рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░реЗрдВ рдФрд░ рд╢реБрд░реВ рдХрд░реЗрдВ:
 dev1(master)$ git add collider.init.sh dev1(master)$ git commit -m "Added collider init script" [master 0c3aa28] Added collider init script 1 file changed, 11 insertions(+) create mode 100755 collider.init.sh dev1(master)$ git checkout -b collider/start #   Switched to a new branch 'collider/start' dev1(collider/start)$ git checkout -b collider/terminate #   Switched to a new branch 'collider/terminate' 

git checkout -b <рдмреНрд░рд╛рдВрдЪ_рдирд╛рдо> рдПрдХ рдкреЙрдЗрдВрдЯрд░ (рдмреНрд░рд╛рдВрдЪ) <рдмреНрд░рд╛рдВрдЪ_рдирд╛рдо> рдХреЛ рд╡рд░реНрддрдорд╛рди рдкреЛрдЬрд┐рд╢рди (рд╡рд░реНрддрдорд╛рди рдкреЛрдЬрд┐рд╢рди рдХреЛ рд╡рд┐рд╢реЗрд╖ HEAD рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдЙрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИред
рдпрд╛ рдмрд╕: рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рд╕реЗ рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ рдмрдирд╛рдПрдВ рдФрд░ рддреБрд░рдВрдд рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦреЗрдВред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╢рд╛рдЦрд╛ рдирд╛рдо рдореЗрдВ '/' рд╡рд░реНрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдордирд╛ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЛ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ '/' рддрдХ рдирд╛рдо рд╡рд╛рд▓рд╛ рдПрдХ рдлреЛрд▓реНрдбрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓реА рд╢рд╛рдЦрд╛ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реНрддрд░ рдкрд░ рдПрдХ рд╕рдВрдШрд░реНрд╖ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдХреЛрдИ рджреЗрд╡ рд╢рд╛рдЦрд╛ рд╣реИ, рддреЛ рдЖрдк рджреЗрд╡ / рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗред
рдФрд░ рдпрджрд┐ рджреЗрд╡ / рдкрд░реАрдХреНрд╖рдг рд╣реИ , рддреЛ рдЖрдк рджреЗрд╡ / рдЬреЛ рдХреБрдЫ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рд╕рд┐рд░реНрдл рджреЗрд╡ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗред

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рджреЛ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛрд▓рд╛рдЗрдбрд░ / рд╕реНрдЯрд╛рд░реНрдЯ рдФрд░ рдХреЛрд▓рд╛рдЗрдбрд░ / рдЯрд░реНрдорд┐рдиреЗрдЯ рдХрд┐рдпрд╛ ред рдЙрд▓рдЭрди рдореЗрдВ? рдЧрд┐рдЯрдХ - рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рд╕рднреА:

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рд╣рдорд╛рд░реЗ 3 рдкреЙрдЗрдВрдЯрд░реНрд╕ (рд╣рдорд╛рд░реА рд╢рд╛рдЦрд╛рдПрдВ) рд╣реИрдВ, рдФрд░ рдХрдорд┐рдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
 @@ -0,0 +1,11 @@ +#!/bin/sh + + +USER=collider + + +case $1 in + *) + echo Uknown Action: $1 + ;; +esac 

рдЕрдм, рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╣рдо рдПрдХ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рддрджрдиреБрд╕рд╛рд░, рд╣рдорд╛рд░реЗ рдХреЛрд▓рд╛рдЗрдбрд░ рдХреЛ рд▓реЙрдиреНрдЪ рдФрд░ рдирд╖реНрдЯ рдХрд░ рджреЗрдЧрд╛ред рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдХреНрд░рдо рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
 dev1(collider/start)$ vim collider.init.sh dev1(collider/start)$ git commit -m "Added Collider Start Function" -a [collider/start d229fa9] Added Collider Start Function 1 file changed, 9 insertions(+) dev1(collider/start)$ git checkout collider/terminate Switched to branch 'collider/terminate' dev1(collider/terminate)$ vim collider.init.sh dev1(collider/terminate)$ git commit -m "Added Collider Terminate Function" -a [collider/terminate 4ea02f5] Added Collider Terminate Function 1 file changed, 9 insertions(+) 

рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдЧрдП
Collider / рдкреНрд░рд╛рд░рдВрдн
 @@ -3,8 +3,17 @@ USER=collider +do_start(){ + echo -n "Starting collider..." + sleep 1s + echo "ok" + echo "The answer is 42. Please, come back again after 1 billion years." +} case $1 in + start) + do_start + ;; *) echo Uknown Action: $1 ;; 


Collider / рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ

 @@ -3,8 +3,17 @@ USER=collider +do_terminate() { + echo -n "Safely terminating collider..." + sleep 1s + echo "oops :(" + +} case $1 in + terminate) + do_terminate + ;; *) echo Uknown Action: $1 ;; 



рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ:


рд╡рд┐рдХрд╛рд╕ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм рд╣рдореЗрдВ рдорд╛рд╕реНрдЯрд░ рдХреЛ рд╕рднреА рдмрджрд▓рд╛рд╡ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдПрдХ рдкреБрд░рд╛рдирд╛ рдХреЛрд▓рд╛рдЗрдбрд░ рд╣реИ, рдЬреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рджреЛ рдорд░реНрдЬ рдХрд░рдирд╛ рдорд░реНрдЬ рд╣реИ ред рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдорд╛рд╕реНрдЯрд░ рдмреНрд░рд╛рдВрдЪ рдХреЛрд▓рд╛рдЗрдбрд░ / рд╕реНрдЯрд╛рд░реНрдЯ рд╕реЗ рдХреИрд╕реЗ рдЕрд▓рдЧ рд╣реИ рдФрд░ рдЙрдирдХрд╛ рд╕рдВрдШ (рдпреЛрдЧ) рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрди рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдХрдорд┐рдЯ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдХреЗрд╡рд▓ рдорд╛рд╕реНрдЯрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдорд┐рдЯ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдХреЗрд╡рд▓ рдХреЛрд▓рд╛рдЗрдбрд░ / рд╕реНрдЯрд╛рд░реНрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдорд┐рдЯ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рд╕рд╛рдорд╛рдиреНрдп рдХрдорд┐рдЯреНрд╕ рд╣реИрдВ, рдХреЗрд╡рд▓ рдорд╛рд╕реНрдЯрд░ рдХрдорд┐рдЯреНрд╕ рд╣реИрдВ - рдирд╣реАрдВ, рдХреЗрд╡рд▓ рдХреЛрд▓рд╛рдЗрдбрд░ / рд╕реНрдЯрд╛рд░реНрдЯ - рд╣реИрдВред рдпрд╛рдиреА рдЗрди рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдорд┐рд▓рд╛рдирд╛ рдорд╛рд╕реНрдЯрд░ + рдХреЛрд▓рд╛рдЗрдбрд░ / рд╕реНрдЯрд╛рд░реНрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ ред рд▓реЗрдХрд┐рди рдХреЛрд▓рд╛рдЗрдбрд░ / рд╕реНрдЯрд╛рд░реНрдЯ рдорд╛рд╕реНрдЯрд░ / рдХреЛрд▓рд╛рдЗрдбрд░ / рд╕реНрдЯрд╛рд░реНрдЯ рдмреНрд░рд╛рдВрдЪ рдХрд╛ рдХрдорд┐рдЯ рд╣реИ! рдПрдХ рд╣реА рдмрд╛рдд! рдпрд╛рдиреА рдХреБрдЫ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ! рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдорд┐рд▓рд╛рдирд╛ - рдпрд╣ рдХреЛрд▓реЗрдбрд░ / рд╕реНрдЯрд╛рд░реНрдЯ рд╣реИ !
рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдХреЗрд╡рд▓ рдкрддреНрд░реЛрдВ рдореЗрдВ, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛:
рдорд╛рд╕реНрдЯрд░ = C1 + C2 + C3
collider / start = рдорд╛рд╕реНрдЯрд░ + C4 = C1 + C2 + C3 + C4
Master + collider / start = General_commit (рдорд╛рд╕реНрдЯрд░, рдХреЛрд▓рд╛рдЗрдбрд░ / рд╕реНрдЯрд╛рд░реНрдЯ) + Only_y (рдорд╛рд╕реНрдЯрд░) + Only_y (рдХреЛрд▓рд╛рдЗрдбрд░ / рд╕реНрдЯрд╛рд░реНрдЯ) = (C1 + C2 + C3) + (NULL) + (C4) = C1 + C2 + C3 + C4

рдЬрдм рдПрдХ рд╢рд╛рдЦрд╛ рджреВрд╕рд░реЗ рдкрд░ "рдЭреВрда" рдХрд░рддреА рд╣реИ, рддреЛ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЗрд╕рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛, рджреВрд╕рд░реА рд╢рд╛рдЦрд╛, рдФрд░ рд╡рд┐рд▓рдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреВрд╕рд░реА рд╢рд╛рдЦрд╛ рд╣реЛрдЧреАред рд╣рдо рдмрд╕ рдкреБрд░рд╛рдиреЗ рдХрдорд┐рдЯреНрд╕ рд╕реЗ рд▓реЗрдХрд░ рдирдП рддрдХ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд░рд┐рд╡рд╛рдЗрдВрдб (рдПрдХ рд╕рдВрдШ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ) рдХреЛ рдлрд╛рд╕реНрдЯ-рдлреЙрд░рд╡рд░реНрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ рдХреНрдпреЛрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ?
  1. рд╡рд┐рд▓рдп рдХрд░рддреЗ рд╕рдордп, рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
  2. рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдПрд╕реЛрд╕рд┐рдПрд╢рди, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧрд╛рд░рдВрдЯреА
  3. рд╕рдВрдШрд░реНрд╖ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрднреА рднреА рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрдЧрд╛
  4. рдХрд╣рд╛рдиреА рд░реИрдЦрд┐рдХ рдмрдиреА рд╣реБрдИ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдХреЛрдИ рд╕рдВрдЧрддрд┐ рдирд╣реАрдВ рдереА), рдЬрд┐рд╕реЗ рдЕрдХреНрд╕рд░ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ
  5. рдХреЛрдИ рдирдпрд╛ рдХрдорд┐рдЯ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛


рдХреИрд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╕реЗ рдЖрдЧреЗ рдХреНрдпрд╛ рд╕рдВрднрд╡ рд╣реИ? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рджреЛ рд╢рд╛рдЦрд╛рдУрдВ рдкрд░ gitk рдХреЛ рджреЗрдЦреЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рдПрдХ рдкреНрд░рд╢реНрди рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдХреНрдпрд╛ рд╢рд╛рдЦрд╛ A рд╕реЗ B рддрдХ рдХреЛрдИ рд╕реАрдзрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдКрдкрд░ (рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рдХреА рдУрд░) рдмрдврд╝рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рд╛рдБ, рддреЛ рдЬрд▓реНрджреА-рдЬрд▓реНрджреА рд╣реЛрдЧрд╛ред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд╣рдо рдЗрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЖрдЬрдорд╛рддреЗ рд╣реИрдВ, рд╣рдо рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЙрдард╛рддреЗ рд╣реИрдВ:
 dev1(collider/terminate)$ git checkout master Switched to branch 'master' Your branch is ahead of 'origin/master' by 4 commits. dev1(master)$ git merge collider/start Updating 0c3aa28..d229fa9 Fast-forward #    collider.init.sh | 9 +++++++++ 1 file changed, 9 insertions(+) 

рдкрд░рд┐рдгрд╛рдо (рд╕реВрдЪрдХ рдХреЗрд╡рд▓ рдЖрдЧреЗ рдмрдврд╝рд╛):


рд╕рдВрдШ

рдЕрдм рд╣рдо рдХреЛрд▓рд╛рдЗрдбрд░ / рд╕рдорд╛рдкреНрдд рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдЦреАрдВрдЪрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬреЛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдкрдврд╝рд╛ (рд╕рдм рдХреЗ рдмрд╛рдж рдкрдврд╝рд╛, рд╣рд╛рдБ!) рдзреНрдпрд╛рди рджреЗрдВрдЧреЗ рдХрд┐ рдХреЛрдИ рд╕реАрдзрд╛ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрддрдиреА рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд╣рдо рдЙрддрд░реЗрдВрдЧреЗ рдирд╣реАрдВред рдЖрдЗрдП рддреЗрдЬ-рдлреЙрд░рд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдкреВрдЫрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:
 dev1(master)$ git merge --ff-only collider/terminate fatal: Not possible to fast-forward, aborting. 

рдЬрд┐рд╕рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛рдиреА рд╣реИред рд╣рдо рд╕рд┐рд░реНрдл рдорд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ:
 dev1(master)$ git merge collider/terminate Auto-merging collider.init.sh CONFLICT (content): Merge conflict in collider.init.sh Automatic merge failed; fix conflicts and then commit the result. 

рдореБрдЭреЗ рдпрд╣ рднреА рдЦреБрд╢реА рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдмреАрдЪ рд╕рдВрдШрд░реНрд╖ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдХреБрдЫ рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВ, Google рдФрд░ рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
рдЬрдм рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдХреЙрдореНрдмрд┐рдиреЗрд╢рди рдХреЛ рдорд┐рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдПрдХ рд╣реА рд▓рд╛рдЗрди рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдФрд░ рдЕрдм рдЧрд┐рдЯ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ: рдпрд╛ рддреЛ рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рд▓реЗрдВ, рдпрд╛ рджреВрд╕рд░рд╛, рдпрд╛ рдкреБрд░рд╛рдиреЗ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ, рдпрд╛ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛ рджреЗрдВред

рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рджреЛ рд╕рдмрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдЯреАрдо рд╣рдорд╛рд░реА рдорджрдж рдХрд░рдиреЗ рдХреА рдЬрд▓реНрджреА рдореЗрдВ рд╣реИрдВ:
 dev1(master)$ git status # On branch master # Your branch is ahead of 'origin/master' by 5 commits. # # Unmerged paths: # (use "git add/rm <file>..." as appropriate to mark resolution) # # both modified: collider.init.sh # no changes added to commit (use "git add" and/or "git commit -a") dev1(master)$ gitk --all 


рд╣рдо рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╣реИрдВ , рд╣реЗрдб рдЙрд╕реА рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдХрдорд┐рдЯ рднреА рд╡рд╣реАрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
 #!/bin/sh USER=collider <<<<<<< HEAD do_start(){ echo -n "Starting collider..." sleep 1s echo "ok" echo "The answer is 42. Please, come back again after 1 billion years." } case $1 in start) do_start ======= do_terminate() { echo -n "Safely terminating collider..." sleep 1s echo "oops :(" } case $1 in terminate) do_terminate >>>>>>> collider/terminate ;; *) echo Uknown Action: $1 ;; esac 

рд╣рдореЗрдВ рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдВрдпреЛрдЬрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд╣реИ рдирд╛? рдпрд╣рд╛рдВ рд╕рднреА рдорд░реНрдЬ-рдЯреВрд▓реНрд╕ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдВрдЧреЗред
рд╕рдВрдШрд░реНрд╖ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЧрд┐рдЯ рдореЗрд░рд┐рдЬреЗрдЯ рдХрдорд╛рдВрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд╣рд░ рдХреЛрдИ рдРрд╕реА рдЯреАрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред
рд╡рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рдХреБрдЫ рдХрд░рддрд╛ рд╣реИ:
  1. рднрд┐рдиреНрди рдпрд╛ рдорд░реНрдЬ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдкрд╕рдВрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдвреВрдБрдврддрд╛ рд╣реИ рдФрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ
  2. рдлрд╝рд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдмрдирд╛рддрд╛ рд╣реИ редorig (рдлрд╝рд╛рдЗрд▓ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ)
  3. рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдмрдирд╛рддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ (рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдереА)
  4. рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдмрдирд╛рддрд╛ рд╣реИред (рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╢рд╛рдЦрд╛ рдореЗрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рдерд╛)
  5. рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИред Local (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ)
  6. рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдм рдХреБрдЫ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ

рд╣рдо рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:
 dev1(master)$ git mergetool merge tool candidates: opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff diffuse ecmerge p4merge araxis bc3 emerge vimdiff Merging: collider.init.sh Normal merge conflict for 'collider.init.sh': {local}: modified file {remote}: modified file Hit return to start merge resolution tool (kdiff3): 

рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрдШрд░реНрд╖ рдХреЗ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдереЗ, рдмрд╣реБрдд рдХреБрдЫ рд╣реБрдЖред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рд╣рд░ рдЬрдЧрд╣ рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рд▓рд┐рдпрд╛, рдФрд░ рджреВрд╕рд░рд╛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХреЗ рдареАрдХ рдмрд╛рдж рдХреЙрдкреА рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЧреБрдИ рдХреЗ рд╕рд╛рде рдпрд╣ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдпрд╣рд╛рдВ рдкрд░рд┐рдгрд╛рдо рд╣реИ - рд╢реАрд░реНрд╖ рдкрд░ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рд╕рдмрд╕реЗ рдиреАрдЪреЗ - рд╕рдВрдШ (рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ):

рдкрд░рд┐рдгрд╛рдо рд╕рд╣реЗрдЬреЗрдВ, рд╡рд┐рдВрдбреЛ рдмрдВрдж рдХрд░реЗрдВ, рдХрдорд┐рдЯ рдХрд░реЗрдВ, рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ:


рд╣рдордиреЗ рдПрдХ рдирдИ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдмрдирд╛рдИ, рдЬреЛ рдЕрдиреНрдп рджреЛ рдХрд╛ рдорд┐рд▓рди рд╣реИред рдлрд╛рд╕реНрдЯ-рдлрд╝реЙрд░рд╡рд░реНрдб рдирд╣реАрдВ рд╣реБрдЖ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реАрдзрд╛ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рдерд╛, рдХрд╣рд╛рдиреА рдереЛрдбрд╝реА рдЙрд▓рдЭреА рд╣реБрдИ рд▓рдЧ рд░рд╣реА рдереАред рдХрднреА-рдХрднреА, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдорд░реНрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрддрд┐ рдЬрдЯрд┐рд▓ рдХрд╣рд╛рдиреА рднреА рдмреЗрдХрд╛рд░ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

рдмреЗрд╢рдХ, рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ! "рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝реЗрдЧрд╛," рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИ!

рдкреБрдирд░реНрдЧрдарди

рдХрд╣рд╛рдиреА рдХреЛ рд╕реБрдВрджрд░ рдФрд░ рдкреНрд░рддреНрдпрдХреНрд╖ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЖрдк рд╣рдорд╛рд░реА рд╢рд╛рдЦрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рджреВрд╕рд░реА рд╢рд╛рдЦрд╛ рдкрд░ рдлрд┐рд░ рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ! рдпрд╛рдиреА рдПрдХ рдирдИ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рд╢рд╛рдЦрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдФрд░ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд╕рднреА рдХрдорд┐рдЯреНрд╕ рдЦреЗрд▓реЗрдВред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░рд┐рдмреЗрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИредрд╣рдорд╛рд░реЗ рдХрдорд┐рдЯ рдЙрд╕ рд╢рд╛рдЦрд╛ рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рд╣реЛрдЧреА, рдЬрд┐рд╕ рдкрд░ рд╣рдо рдЙрдирдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗред рдлрд┐рд░ рдХрд╣рд╛рдиреА рд╕рд░рд▓ рдФрд░ рд░реИрдЦрд┐рдХ рд╣реЛрдЧреАред рдФрд░ рдЬрд▓реНрджреА-рдЬрд▓реНрджреА рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ: рд╣рдо рдПрдХ рд╢рд╛рдЦрд╛ рд╕реЗ рджреВрд╕рд░реА рд╢рд╛рдЦрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╣рдордиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдФрд░ рд╢рд╛рдЦрд╛ рд▓реА рдФрд░ рдЙрд╕реА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдирд╡реАрдирддрдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреВрд░реНрд╡рд╡рдд рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рд╕реНрдЯрд░ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛ рджреЗрдВред рдорд░реНрдЬ-рдХрдорд┐рдЯ рдмрдирд╛рддреЗ рд╣реБрдП , рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рд╕реНрдЯрд░ рдмрди рдЧрдП , рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдпрд╣ рд╡рд╛рдВрдЫрдиреАрдп (рдФрд░ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг) рдЙрд╕реА рдХрдорд┐рдЯ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдпрд╣ рдерд╛ред
рдирддреАрдЬрддрди, рд╣рдорд╛рд░реА рдорд░реНрдЬ-рдХрдорд┐рдЯ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реВрдЪрдХ рдХреЗ рдмрдиреА рд░рд╣реЗрдЧреА рдФрд░ рдХрд┐рд╕реА рднреА рд╢рд╛рдЦрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреАред

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПgitkрдпрд╛ рдХрдВрд╕реЛрд▓ рд╣рдорд╛рд░реЗ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдореВрд╡ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдХреЛрд▓рд╛рдЗрдбрд░ / рд╕реНрдЯрд╛рд░реНрдЯ рд╢рд╛рдЦрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреА рд╣реИ, рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрдИрдбреА рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╢рд╛рдЦрд╛ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рд╡рд╣реА рдмрд╛рдд рд╣реЛрдЧреА):
 dev1(master)$ git reset --hard collider/start HEAD is now at d229fa9 Added Collider Start Function 


рдорд░реНрдЬ-рдХрдорд┐рдЯ рдХрд╛ рдХреНрдпрд╛ рд╣реБрдЖ?
(), . Git , , .. , . , git garbage collector .
, . git reflog . , ( HEAD ). , id , checkout ( ).
( , ):
 d229fa9 HEAD@{0}: reset: moving to collider/start 80b77c3 HEAD@{1}: commit (merge): Merged collider/terminate d229fa9 HEAD@{2}: merge collider/start: Fast-forward 0c3aa28 HEAD@{3}: checkout: moving from collider/terminate to master 4ea02f5 HEAD@{4}: commit: Added Collider Terminate Function 0c3aa28 HEAD@{5}: checkout: moving from collider/start to collider/terminate d229fa9 HEAD@{6}: commit: Added Collider Start Function 0c3aa28 HEAD@{7}: checkout: moving from collider/launch to collider/start 0c3aa28 HEAD@{8}: checkout: moving from collider/terminate to collider/launch 0c3aa28 HEAD@{9}: checkout: moving from collider/stop to collider/terminate 0c3aa28 HEAD@{10}: checkout: moving from collider/start to collider/stop 0c3aa28 HEAD@{11}: checkout: moving from master to collider/start 0c3aa28 HEAD@{12}: commit: Added collider init script 41f0540 HEAD@{13}: checkout: moving from v2 to master 75607a1 HEAD@{14}: commit: Ugly changes 55280dc HEAD@{15}: checkout: moving from master to v2 41f0540 HEAD@{16}: commit: Change 3 55280dc HEAD@{17}: commit: Change 2 598a03a HEAD@{18}: commit: Change 1 d80e5f1 HEAD@{19}: commit (initial): Init Project 



: рдЪрд▓реЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ рдХрд░рддреЗ


рдЖрджреЗрд╢ рдПрдХ рд╕реЗ рджреВрд╕рд░реЗ рд╢рд╛рдЦрд╛ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдирдХреЗ рд╣реА рдореВрд▓ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рддреЛ рдХрд░рддрд╛ рд▓реЗрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЯреНрдпреВрдиреЗрдмрд▓ рд╢рд╛рдЦрд╛рдУрдВ, рдЙрдиреНрд╣реЗрдВ рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдФрд░ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ, рдореБрдЦреНрдп (рдЖрдзрд╛рд░) рд╢рд╛рдЦрд╛ред рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рддрд╕реНрд╡реАрд░ ( рдлреАрдЪрд░ рдХреЛ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ ):

рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреЛрдЯ: "рдкреЗрд░реЗрд╕реНрддреНрд░реЛрдЗрдХрд╛" рдХреЗ рдмрд╛рдж рдпреЗ рдирдП рдХрдорд┐рдЯ рд╣реЛрдВрдЧреЗред рдФрд░ рдкреБрд░рд╛рдиреЗ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реБрдП рдФрд░ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдЪрд▓реЗ рдЧрдПред

: merge-commit. collider/terminate collider/start .
collider/terminate collider/start , master merge-commit . , , master ( git checkout master && git reset --hard collider/terminate ). , . Git тАФ , .


рд╣рдордиреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рдЗрд╕реЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдЖрдЬрд╝рдорд╛рдПрдВред рд╣рдо рдХреЛрд▓рд╛рдЗрдбрд░ / рдЯрд░реНрдорд┐рдиреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдЬрдЧрд╣ рдкрд░ рдкреБрди: рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдорд╛рд╕реНрдЯрд░ рдкреЙрдЗрдВрдЯреНрд╕ (рдпрд╛ рдХреЛрд▓рд╛рдЗрдбрд░ / рд╕реНрдЯрд╛рд░реНрдЯ , рдЬрд┐рдирд╕реЗ рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ)ред рдХрдорд╛рдВрдб рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рдЕрд░реНрде рд╣реИ "рд╡рд░реНрддрдорд╛рди рд╢рд╛рдЦрд╛ рдХреЛ рд▓реЗ рд▓реЛ рдФрд░ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рддрд┐рдмрджреНрдз рдпрд╛ рд╢рд╛рдЦрд╛ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ":
 dev1(master)$ git checkout collider/terminate Switched to branch 'collider/terminate' dev1(collider/terminate)$ git rebase -i master # -i    , ..  git rebase todo list       

рдПрдХ рд╕рдВрдкрд╛рджрдХ рдЦреБрд▓реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдВрдЧреЗ:
 pick 4ea02f5 Added Collider Terminate Function # Rebase d229fa9..4ea02f5 onto d229fa9 # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # However, if you remove everything, the rebase will be aborted. # 

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдкреЗрд░реЗрд╕реНрддреНрд░реЛрдЗрдХрд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдо рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЦреБрдж рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдорд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛рдиреАрдЖрдк рдорд╛рдиреНрдпрддрд╛ рд╕реЗ рдкрд░реЗ рд╢рд╛рдЦрд╛ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдЬрд╛рд░реА рд░рдЦреЗрдВред рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреА рддрд░рд╣, рд╣рдо рд╕рдВрдШрд░реНрд╖реЛрдВ рд╕реЗ рдмрдЪ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ:
 error: could not apply 4ea02f5... Added Collider Terminate Function When you have resolved this problem run "git rebase --continue". If you would prefer to skip this patch, instead run "git rebase --skip". To check out the original branch and stop rebasing run "git rebase --abort". Could not apply 4ea02f5... Added Collider Terminate Function dev1((no branch))$ git status # Not currently on any branch. # Unmerged paths: # (use "git reset HEAD <file>..." to unstage) # (use "git add/rm <file>..." as appropriate to mark resolution) # # both modified: collider.init.sh # no changes added to commit (use "git add" and/or "git commit -a") 

рд╣рдо git mergetool рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ "rebuild" - git rebase --continue рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ ред рдЕрдВрддрдГрдХреНрд░рд┐рдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╣рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рджреЗрддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо:

рдЕрдм рдорд╛рд╕реНрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рдирд┐рдХрд╛рд▓рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ:
 dev1(collider/terminate)$ git checkout master Switched to branch 'master' Your branch is ahead of 'origin/master' by 5 commits. dev1(master)$ git merge collider/terminate Updating d229fa9..6661c2e Fast-forward collider.init.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) dev1(master)$ git branch -d collider/start Deleted branch collider/start (was d229fa9). dev1(master)$ git branch -d collider/terminate Deleted branch collider/terminate (was 6661c2e). 


рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдордиреЗ рд╕рдВрдкрд╛рджрд┐рдд, рд╕рдВрдкрд╛рджрд┐рдд, рдорд░реНрдЬ рдХрд┐рдП рдЧрдП рд╕рдВрдкрд╛рджрди рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдПрдХ рд╕реБрдВрджрд░ рд░реИрдЦрд┐рдХ рдЗрддрд┐рд╣рд╛рд╕ рдорд┐рд▓рд╛ рд╣реИ:


рдПрдХ рд╡рд┐рд░рд╛рдо

рдХрд╛рдлреА рдЬрд╛рдирдХрд╛рд░реА рдкрд╣рд▓реЗ рд╣реА рдорд┐рд▓ рдЪреБрдХреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╣рд░ рдЪреАрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдФрд░ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧрд┐рдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реБрдП:


рдЖрдЧреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдореИрдВ рдПрдХ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред
рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдо рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рд╛рдордЧреНрд░реА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рдо рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдПред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реЗрдЦрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЧрд┐рдЯ рдХрдорд┐рдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХрдИ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 dev1(master)$ for i in `seq 1 2`; do STR=`pwgen -C 20 -B 1`; echo $STR >> trash.txt; git commit -m "Added $STR" trash.txt; done [master e64499d] Added rooreoyoivoobiangeix 1 file changed, 1 insertion(+) [master a3ae806] Added eisahtaexookaifadoow 1 file changed, 1 insertion(+) 


рдкрд░рд┐рд╡рд░реНрддрди рднреЗрдЬрдирд╛ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛



рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ рдХрд┐ рджреВрд░рд╕реНрде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:


рдпрд╣рд╛рдВ рдЙрди рдореБрдЦреНрдп рдХрдорд╛рдВрдбреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
  1. git remote - рджреВрд░рд╕реНрде рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдХрд╛ рдкреНрд░рдмрдВрдзрди
  2. git fetch - рдорд┐рд▓рддрд╛ рд╣реИ
  3. git pull- рд╕рдорд╛рди git fetch+git merge
  4. git push - рднреЗрдЬреЗрдВ


рджреВрд░рджрд░рд╛рдЬ рдХреЗ

рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореВрд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдирд╛рдо рд╣реИред рдирд╛рдореЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдкрд╛рд╕ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдПрдХ рдкреНрд░рддрд┐ рдереА рдФрд░ рдореИрдВрдиреЗ рдПрдХ рдлреНрд▓реИрд╢ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЬреЛрдбрд╝рд╛ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореИрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рдерд╛: рдореВрд▓ рдФрд░ рдлреНрд▓реИрд╢ ред

рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдЦрд╛ рдХреЗ рдирд╛рдо рдХреЗ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рдЕрдкрдиреА рд╢рд╛рдЦрд╛ рдХреЛ рджреВрд╕рд░реА рд╢рд╛рдЦрд╛ рд╕реЗ рдЕрд▓рдЧ рдХрд░ рд╕рдХреЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рд╕реНрдЯрд░ рдФрд░ рдореВрд▓ / рдорд╛рд╕реНрдЯрд░

рдЫреЛрдЯреА рдЪрд╛рд▓
master origin origin/master . , '/'.
рдпрд╛рдиреА " origin\/master ", master . Git , , . , .


рдорджрдж git remoteрджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ, рдХрдорд╛рдВрдб рд╣реИрдВ: рдРрдб, рдЖрд░рдПрдо, рдирд╛рдо, рд╢реЛред
showрдмреБрдирд┐рдпрд╛рджреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рджрд┐рдЦрд╛рдПрдЧрд╛:
 dev1(master)$ git remote show origin * remote origin Fetch URL: /home/sirex/proj/git-habr/origin Push URL: /home/sirex/proj/git-habr/origin HEAD branch: master Remote branch: master tracked Local branch configured for 'git pull': master merges with remote master Local ref configured for 'git push': master pushes to master (fast-forwardable) 


рдореМрдЬреВрджрд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ add:
 git remote add backup_repo ssh://user@myserver:backups/myrepo.git #   git push backup_repo master 


git fetch

рдЯреАрдо рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддреА рд╣реИ: рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЧрд┐рдЯ рдХрд╛рдо рдХреА рдХреЙрдкреА рдХреЛ рдирд╣реАрдВ рдЫреВрдПрдЧрд╛, рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рдЫреВрдПрдЧрд╛, рдЖрджрд┐ред
рдирдП рдХрдорд┐рдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдХреЗрд╡рд▓ рджреВрд░рд╕реНрде рд╢рд╛рдЦрд╛рдУрдВ рдФрд░ рдЯреИрдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдкрдиреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдк рдЙрди рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЖрдП рд╣реИрдВред

рдиреАрдЪреЗ рдкреБрд╢ рдХрдорд╛рдВрдб рдХрд╛ рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
 dev1(master)$ git push origin master Counting objects: 29, done. Delta compression using up to 4 threads. Compressing objects: 100% (21/21), done. Writing objects: 100% (27/27), 2.44 KiB, done. Total 27 (delta 6), reused 0 (delta 0) Unpacking objects: 100% (27/27), done. To /home/sirex/proj/git-habr/origin d80e5f1..a3ae806 master -> master 


рдЕрдм рджреЗрд╡ 2 рдХреА рдУрд░ рд╕реЗ, рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реИ рдФрд░ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
 dev2(master)$ git log commit d80e5f1746856a7228cc27072fa71f1c087d649a Author: jsirex Date: Thu Apr 4 04:21:07 2013 +0300 Init Project #   ,  : dev2(master)$ git fetch origin remote: Counting objects: 29, done. remote: Compressing objects: 100% (21/21), done. remote: Total 27 (delta 6), reused 0 (delta 0) Unpacking objects: 100% (27/27), done. From /home/sirex/proj/git-habr/origin d80e5f1..a3ae806 master -> origin/master 


рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдорд╛рд╕реНрдЯрд░ рд╣реИрдВ ред
рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
git checkout origin/master- рдЗрд╕реЗ "рдорд╣рд╕реВрд╕" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдореЛрдЯ рдорд╛рд╕реНрдЯрд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВред рдЖрдк рдЗрд╕ рд╢рд╛рдЦрд╛ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрдкрдирд╛ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
git merge origin/master- рдЕрдкрдиреЗ рд╕рд╛рде рдирдП рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рдорд┐рд▓рд╛рдПрдВред рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрдерд╛рдиреАрдп рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИрдВ, рдлрд┐рд░ рдорд░реНрдЬ рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реЗрдЧрд╛:
 dev2(master)$ git merge origin/master Updating d80e5f1..a3ae806 Fast-forward README.md | 2 ++ collider.init.sh | 31 +++++++++++++++++++++++++++++++ trash.txt | 2 ++ 3 files changed, 35 insertions(+) create mode 100755 collider.init.sh create mode 100644 trash.txt 


рдпрджрд┐ рдирдИ рд╢рд╛рдЦрд╛рдПрдБ рдореВрд▓ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдк рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢рд╛рдЦрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ , рдФрд░ рд╕рднреА рдирд╣реАрдВред
рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ : рдЬрдм рдХреЛрдИ рдореВрд▓ рд╕реЗ рдПрдХ рд╢рд╛рдЦрд╛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рдиреАрдп рд░рд┐рдХреЙрд░реНрдб рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдореВрд▓ / рд╣рдЯрд╛рдП рдЧрдП / рд╢рд╛рдЦрд╛ рдХреЛ рджреЗрдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ , рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдЕрдм рдирд╣реАрдВ рд╣реИред рдЗрди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП git fetch origin --pruneред

рдкрдХрдбрд╝ рдЦреАрдВрдЪреЛ

git pullgit рд▓рд╛рдиреЗ рдХреЗ рд╕рдорд╛рди + git рдорд░реНрдЬред рдмреЗрд╢рдХ, рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрдмрдВрдзрд┐рдд рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛: рдорд╛рд╕реНрдЯрд░ рд╕реЗ рдореВрд▓ / рдорд╛рд╕реНрдЯрд░ , рд╕реБрд╡рд┐рдзрд╛ рд╕реЗ рдореВрд▓ / рд╕реБрд╡рд┐рдзрд╛ ред рд╢рд╛рдЦрд╛рдПрдВ рдирд╛рдо рд╕реЗ рдПрдХрдЬреБрдЯ рдирд╣реАрдВ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдХреЛрдИ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрд╕реНрдЯреНрд░реАрдо рдЯреНрд░реИрдХрд┐рдВрдЧ рд╢рд╛рдЦрд╛ рдХреЗ рдХрд╛рд░рдг ред рдЬрдм рд╣рдо рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╢рд╛рдЦрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ git рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд░рддрд╛ рд╣реИ:
  1. рдпрд╣ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕реА рдХреЛрдИ рд╢рд╛рдЦрд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ, рддреЛ рд╡рд╣ рд▓реЗрддрд╛ рд╣реИ
  2. рдпрджрд┐ рдХреЛрдИ рд╢рд╛рдЦрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдореВрд▓ / <рд╢рд╛рдЦрд╛_рдирд╛рдо> рд╣реИ
  3. рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ <рдмреНрд░рд╛рдВрдЪ / рдирд╛рдо> рдХреА рдЙрддреНрдкрддреНрддрд┐ / <рдмреНрд░рд╛рдВрдЪ_рдирд╛рдо> рдФрд░ "рд▓рд┐рдВрдХ" рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдмрдирд╛рддрд╛ рд╣реИред рдпреЗ рдмреНрд░рд╛рдВрдЪ (рдмреНрд░рд╛рдВрдЪ <рдмреНрд░рд╛рдВрдЪ_рдирд╛рдо> рдЕрдм рд░рд┐рдореЛрдЯ рдУрд░рд┐рдЬрд┐рди / <рдмреНрд░рд╛рдВрдЪ_рдирд╛рдо> рдЯреНрд░реИрдХ рдХрд░ рд░рд╣рд╛ рд╣реИ )

рдЖрдк рдЗрд╕реЗ .git / config рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
 [branch "master"] remote = origin merge = refs/heads/master 


95% рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рд╕реНрдерд╛рдиреАрдп рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ git pullрдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рджреВрд░рд╕реНрде рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рдХрд░ рджреЗрдЧрд╛ рдФрд░ рд╡рд┐рд▓рдп-рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдЧрд╛, рди рдХрд┐ рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗред рдЬрдм рд╣рдо рдХреБрдЫ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рдереЗ, рддреЛ рдХреЛрдб рдкреБрд░рд╛рдирд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓реЗ рдирд╡реАрдиреАрдХрд░рдг рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдирдП рдХреЛрдб рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реЗ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рдкрд░рд┐рдгрд╛рдо рджреЗрдВред рдпрд╛ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЬрд╛рд░реА рд╣реИред рдФрд░ рддрд╛рдХрд┐ рдХрд╣рд╛рдиреА рдореЗрдВ рдорд┐рд╢реНрд░рдг рди рд╣реЛред рдпрд╣ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ rebaseред
рддрд╛рдХрд┐ git рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рд╣реЛ rebase, рдФрд░ рдирд╣реАрдВ merge, рдЖрдк рдЗрд╕реЗ рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ:
 git config branch.<branch_name>.rebase true 


рдЬреЛрд░ рдХрд╛ рдзрдХреНрдХрд╛

git push origin- рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдкрд░рд┐рд╡рд░реНрддрдиред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рднреА рдЯреНрд░реИрдХрд┐рдВрдЧ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╢рд╛рдЦрд╛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: git push origin branch_nameред

рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╕рд╡рд╛рд▓ рдЙрда рд╕рдХрддреЗ рд╣реИрдВ:


рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╕рднреА рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реИ:
git push origin <___>:<___origin>
рдЙрджрд╛рд╣рд░рдг:
 git push origin d80e5f1:old_master #       old_master.     d80e5f1 git push origin my_local_feature:new_feature/with_nice_name #     new_feature/with_nice_name  my_local_feature git push origin :dead_feature #   ""  dead_feature. ..  dead_feature   .    


рдорд╣рддреНрд╡рдкреВрд░реНрдг : рдЬрдм рдЖрдк рдПрдХ рд╢рд╛рдЦрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕рднреА рдирд╡реАрдирддрдо рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рд╣реИрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╕рдм рдХреБрдЫ рд╡рд╛рдкрд╕ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред Git рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрд╣рд╛рдиреА рд░реИрдЦрд┐рдХ рдмрдиреА рд╣реБрдИ рд╣реИ, рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд░реНрддрдорд╛рди (рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ) рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдЖрдк рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ:rejected! non fast-forward push! ред
рдХрднреА-рдХрднреА, рдЬрдм рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 git push origin master --force #    ,   


рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ



рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдпрд╣ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдзрдХреНрдХрд╛, рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЕрдзрд┐рдХ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ рдорд░реНрдЬ рдФрд░ рд░рд┐рдмреЗрд╕ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рд╣реИред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдЬрдм рдХрд┐рд╕реА рд╕реЗ рдкреВрдЫрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- рд╣рдореЗрдВ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЬрд╡рд╛рдм рдореЗрдВ рдЖрдк рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ:
- рдпрд╣ рдкреНрд░рдгрд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ рддрд╛рдХрд┐ рдХреБрдЫ рднреА рдЦреЛ рди рдЬрд╛рдП рдФрд░ рдЖрдк рд╣рдореЗрд╢рд╛ "рд░реЛрд▓ рдмреИрдХ" рдХрд░ рд╕рдХреЗрдВред

рдЕрдм рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рд╕рд╡рд╛рд▓ рдкреВрдЫреЗрдВ: "рдЖрдкрдХреЛ рдХрд┐рддрдиреА рдмрд╛рд░ рд░реЛрд▓ рдмреИрдХ рдХрд░рдирд╛ рд╣реИ?" рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрдХреНрд╕рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ? рдИрдорд╛рдирджрд╛рд░ рдЬрд╡рд╛рдм рд╣реИ: "рдмрд╣реБрдд рджреБрд░реНрд▓рднред" рдореИрдВ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреА рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдард╛рддрд╛ рд╣реВрдВ:
рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рд╕рд╣рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдбреЗрд╡рд▓рдкрд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред


рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ рдХрд┐рддрдиреА рдорджрдж рдХрд░рддреА рд╣реИ, рдпрд╣ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╣реИред

% VCS_NAME% рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛрддрд╛ рд╣реИ? рдЬрд▓реНрджреА?рддреЛ рдпрд╣% VCS_NAME% рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░рд┐рджреГрд╢реНрдп


рдЕрдм рдХреЛрдб рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣:


рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ рдФрд░ рдХреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпреЛрдВрдХрд┐рд╕рднреА рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣рд▓реНрдХреА рд╢рд╛рдЦрд╛рдПрдБ (рдпрд╛рдиреА, рд╡реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ, рд╕реНрдерд╛рдиреЛрдВ рдЖрджрд┐ рдХреЛ рдЦрд░реНрдЪ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ), рдЖрдк рдЕрд▓рдЧ рд╢рд╛рдЦрд╛рдПрдБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ рдпрд╛ рдЕрд╕рдлрд▓ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред рдорд╛рд╕реНрдЯрд░ рдЖрдо рддреМрд░ рдкрд░ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рд░рдЦрддреА рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рд░рд┐рд▓реАрдЬ рд╕реЗ рд░рд┐рд▓реАрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЯреИрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрддрд┐рд╢рдпреЛрдХреНрддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рд╕реНрдЯрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рдореБрдЦреНрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╢рд╛рдЦрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╡рд╣реА рдЬрд┐рд╕рдореЗрдВ рд╕рдм рдХреБрдЫ рд╡рд┐рд▓реАрди рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЬреЛ рдорд╛рд╕реНрдЯрд░ рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рд╣реЛрдЧреА ред рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдкрд░, рд░рд┐рд▓реАрдЬ рдХреЗ рджреМрд░рд╛рди, рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ред рдЪрд▓реЛ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ


рджреЗрд╡ ред
рдпрджрд┐ рд╣рдореЗрдВ рд╣реЙрдЯрдлрд╝рд┐рдХреНрд╕ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдорд╛рд╕реНрдЯрд░ рд╕реНрдЯреЗрдЯ рдпрд╛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреИрдЧ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддреЗ рд╣реИрдВ , рд╡рд╣рд╛рдВ рдПрдХ рд╣реЙрдЯрдлрд╝рд┐рдХреНрд╕ / рд╕рдВрд╕реНрдХрд░рдг рд╢рд╛рдЦрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдЪрд▓ рд░рд╣реЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛ / <feature_name> рд╢рд╛рдЦрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ ред рд╕рдмрд╕реЗ рд╣рд╛рд▓ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдФрд░ рд╕рдордп-рд╕рдордп рдкрд░ рдЕрдкрдиреЗ рдЖрдк рдХреЛ "рдкреБрд▓" рд╕реЗ рджреЗрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ ред рдХрд╣рд╛рдиреА рдХреЛ рд╕рд░рд▓ рдФрд░ рд░реИрдЦрд┐рдХ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рджреЗрд╡ ( git rebase dev) рдкрд░ рд╢рд╛рдЦрд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ ред
рдорд╛рдЗрдирд░ рдмрдЧ рдлрд┐рдХреНрд╕ рд╕реАрдзреЗ рджреЗрд╡ рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдорд╛рдореВрд▓реА рдХреАрдбрд╝реЗ рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП, рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЕрд╕реНрдерд╛рдпреА рд╢рд╛рдЦрд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдЙрдиреНрд╣реЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рднрдВрдбрд╛рд░ рдореЗрдВ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпреЗ рдХреЗрд╡рд▓ рдЖрдкрдХреА рдЕрд╕реНрдерд╛рдпреА рд╢рд╛рдЦрд╛рдПрдБ рд╣реИрдВред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрдИ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛:


рдмрдЧ рдареАрдХ рдХрд░рдирд╛

рдЪрд▓реЛ рдПрдХ рджреЗрд╡ рд╢рд╛рдЦрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрдЧ рдлрд┐рдХреНрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
 dev1(master)$ git status # On branch master nothing to commit (working directory clean) dev1(master)$ git checkout -b dev Switched to a new branch 'dev' dev1(dev)$ git push origin dev Total 0 (delta 0), reused 0 (delta 0) To /home/sirex/proj/git-habr/origin * [new branch] dev -> dev 

рдФрд░ рджреВрд╕рд░рд╛ рдбреЗрд╡рд▓рдкрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ "рд▓реЗрддрд╛ рд╣реИ":
 dev2(master)$ git pull From /home/sirex/proj/git-habr/origin * [new branch] dev -> origin/dev Already up-to-date. 


рдЪрд▓реЛ 2 рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЕрдкрдиреА рдмрдЧ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рдХрдорд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕ рддрдереНрдп рд╕реЗ рднреНрд░рдорд┐рдд рди рд╣реЛрдВ рдХрд┐ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрджрд╕реВрд░рдд рддрд░реАрдХреЗ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реВрдВ):
 dev1(dev)$ for i in `seq 1 10`; do STR=`pwgen -C 20 -B 1`; echo $STR >> trash.txt; git commit -m "Added $STR" trash.txt; done [dev 0f019d0] Added ahvaisaigiegheweezee 1 file changed, 1 insertion(+) [dev c715f87] Added eizohshochohseesauge 1 file changed, 1 insertion(+) [dev 9b9672c] Added aitaquuerahshiqueeph 1 file changed, 1 insertion(+) [dev 43dad98] Added zaesooneighufooshiph 1 file changed, 1 insertion(+) [dev 9da2de3] Added aebaevohneejaefochoo 1 file changed, 1 insertion(+) [dev e93f93e] Added rohmohpheinugogaigoo 1 file changed, 1 insertion(+) [dev 54ba433] Added giehaokeequokeichaip 1 file changed, 1 insertion(+) [dev 05f72db] Added hacohphaiquoomohxahb 1 file changed, 1 insertion(+) [dev 8c03e0d] Added eejucihaewuosoonguek 1 file changed, 1 insertion(+) [dev cf21377] Added aecahjaokeiphieriequ 1 file changed, 1 insertion(+) 

 dev2(master)$ for i in `seq 1 6`; do STR=`pwgen -C 20 -B 1`; echo $STR >> trash.txt; git commit -m "Added $STR" trash.txt; done [master 1781a2f] Added mafitahshohfaijahney 1 file changed, 1 insertion(+) [master 7df3851] Added ucutepoquiquoophowah 1 file changed, 1 insertion(+) [master 75e7b2b] Added aomahcaashooneefoavo 1 file changed, 1 insertion(+) [master d4dea7e] Added iexaephiecaivezohwoo 1 file changed, 1 insertion(+) [master 1459fdb] Added quiegheemoighaethaex 1 file changed, 1 insertion(+) [master 1a949e9] Added evipheichaicheesahme 1 file changed, 1 insertion(+) 


рдЬрдм рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рднрдВрдбрд╛рд░ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддреЗ рд╣реИрдВред dev1:
 dev1(dev)$ git push origin dev Counting objects: 32, done. Delta compression using up to 4 threads. Compressing objects: 100% (30/30), done. Writing objects: 100% (30/30), 2.41 KiB, done. Total 30 (delta 19), reused 0 (delta 0) Unpacking objects: 100% (30/30), done. To /home/sirex/proj/git-habr/origin a3ae806..cf21377 dev -> dev 


рджреВрд╕рд░рд╛ рдбреЗрд╡рд▓рдкрд░:
 dev2(master)$ git push origin dev error: src refspec dev does not match any. error: failed to push some refs to '/home/sirex/proj/git-habr/origin' 


рдХреНрдпрд╛ рд╣реБрдЖ?рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдордиреЗ рдХрд┐рдпрд╛ рдерд╛ pull, рд╣рдо рджреЗрд╡ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рднреВрд▓ рдЧрдП ред рдФрд░ рд╡реЗ рдЧреБрд░реБ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧреЗ ред
рдЬрдм git рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реЛрдВ, рддреЛ "рдХрдорд╛рдВрдб" рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдореИрдВ рд╕рдВрдкреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рдореЗрдВ рд╣реИ рдЪрд╛рд╣рддрд╛ рдерд╛ рджреЗрд╡ ред рдЕрдЧрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп git push origin devрдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рд░рд▓рддрд╛ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИ git push,
рддреЛ git рд╡рд╣ рдХрд░реЗрдЧрд╛ рдЬреЛ рдЙрд╕реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рд╣рдорд╛рд░реЗ рдорд╛рд╕реНрдЯрд░ рд╕реЗ рд▓реЗрдХрд░ рдЙрддреНрдкрддреНрддрд┐ / рдорд╛рд╕реНрдЯрд░ рддрдХ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВ ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдареАрдХ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред


рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдареАрдХ рд╣реИ, рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЪрд▓реЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдерд╛ gitk --all:

"рдЪрд▓рд╛рдИ рд╣рдо рдПрдХ рдЖрдЧреЗ рд╣реИ┬╗ рдорд╛рд╕реНрдЯрд░, рд▓реЗрдХрд┐рди "рдЬрд╛рдирд╛" рджреЗрд╡ рдерд╛ ред рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
  1. рдЪреВрдВрдХрд┐ рдХреЛрдИ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдереЗ, рдЗрд╕рд▓рд┐рдП рджреЗрд╡ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ
  2. рдорд╛рд╕реНрдЯрд░ рд╕реЗ рджреЗрд╡ рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдПрдВ , рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ (рд╕реАрдзрд╛ рд░рд╛рд╕реНрддрд╛, рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ , рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ)
  3. рд╣рдо рд╕рд╣реА рджреЗрд╡ рдХреЛ рдЪрд▓рд╛рдПрдВрдЧреЗ рдФрд░ рдЧрд▓рдд рдЧреБрд░реБ рдХреЛ рдкреБрд░рд╛рдиреЗ, рд╕рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗ, рдЬрд╣рд╛рдБ рдпрд╣ рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛ ( рдореВрд▓ / рд╕реНрд╡рд╛рдореА рдкрд░ )


рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реА рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрд░рд╣ рдЬрдЯрд┐рд▓ рд╣реИред рд▓реЗрдХрд┐рди, рдпрджрд┐ рдЖрдк рджреЗрдЦреЗрдВ, рддреЛ рдЬреЛ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЙрд╕рдХрд╛ рд╡рд░реНрдгрди рд╕реНрд╡рдпрдВ рдХрд╛рд░реНрдп рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╣реИред рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдРрд╕рд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред рдЪрд▓рд┐рдП рдЕрднреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддреЗ рд╣реИрдВ:
 dev2(master)$ git checkout dev #  Branch dev set up to track remote branch dev from origin. Switched to a new branch 'dev' dev2(dev)$ git merge master #  fast-forward Updating a3ae806..1a949e9 Fast-forward trash.txt | 6 ++++++ 1 file changed, 6 insertions(+) dev2(dev)$ git checkout master #   master ... Switched to branch 'master' Your branch is ahead of 'origin/master' by 6 commits. dev2(master)$ git reset --hard origin/master # ...       HEAD is now at a3ae806 Added eisahtaexookaifadoow dev2(master)$ git checkout dev #   dev Switched to branch 'dev' Your branch is ahead of 'origin/dev' by 6 commits. 


рдЖрдЗрдП рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ:

рдЕрдм, рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рд╣рдорд╛рд░реЗ рдкрд░рд┐рд╡рд░реНрддрди рджреЗрд╡ рдореЗрдВ рд╣реИрдВ рдФрд░ рдореВрд▓ рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред
рд╣рдо рдкрд╛рд╕:
 dev2(dev)$ git push origin dev To /home/sirex/proj/git-habr/origin ! [rejected] dev -> dev (non-fast-forward) error: failed to push some refs to '/home/sirex/proj/git-habr/origin' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Merge the remote changes (eg 'git pull') hint: before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. 


рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдФрд░ (dev1) рдиреЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛, рдЙрдирдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рдкрд╛рд░рд┐рдд рд╣реБрдЖ рдФрд░ рд╣рдо рдмрд╕ "рдкреАрдЫреЗ рдкрдбрд╝ рдЧрдП"ред рд╣рдореЗрдВ рдЕрдкрдирд╛ рд░рд╛рдЬреНрдп рдмрдирд╛рдХрд░ git pullрдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ git fetchред рдХреНрдпреЛрдВрдХрд┐git рдкреБрд▓ рддреБрд░рдВрдд рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдорд░реНрдЬ рдХрд░ рджреЗрдЧрд╛, рдореИрдВ git fetch рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореБрдЭреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рджреЗрдЦрдиреЗ рдФрд░ рдмрд╛рдж рдореЗрдВ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ:
 dev2(dev)$ git fetch origin remote: Counting objects: 32, done. remote: Compressing objects: 100% (30/30), done. remote: Total 30 (delta 19), reused 0 (delta 0) Unpacking objects: 100% (30/30), done. From /home/sirex/proj/git-habr/origin a3ae806..cf21377 dev -> origin/dev 


рд╣рдорд╛рд░реЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
  1. рдЬреЛ рдХреБрдЫ рднреА рдерд╛ рдЙрд╕реЗ рдорд┐рдЯрд╛рдХрд░ рд╣рдорд╛рд░реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЬрдмрд░рди рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ: git push origin dev --force
  2. рд╢рд╛рдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВ git merge origin/devрдФрд░ рдлрд┐рд░ git push origin dev(рдЕрдкрдиреЗ рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд╕рд╛рде рдирдП рдкрд░рд┐рд╡рд░реНрддрди рдорд░реНрдЬ рдХрд░реЗрдВ)
  3. рд╣рдорд╛рд░реА рд╢рд╛рдЦрд╛ рдХреЛ рдирдП рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдБ, рдЬреЛ рд╡рд┐рдХрд╛рд╕ рдХреНрд░рдо рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдЧрд╛ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╢рд╛рдЦрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛: git rebase origin/devрдФрд░ рдлрд┐рд░ git push origin devред

рд╕рдмрд╕реЗ рдЖрдХрд░реНрд╖рдХ рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдореЛрдб рдореЗрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ:
 dev2(dev)$ git rebase -i origin/dev #      origin/dev 

рдПрдХ рд╕рдВрдкрд╛рджрдХ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЦреБрд▓ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╣рдорд╛рд░реЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдорд┐рдЯ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓ рджреЗрдВ рдпрд╛ рдХрдИ рдХреЛ рдорд┐рд▓рд╛рдПрдВред рдпрд╣ рдКрдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╣реИ:
 pick 1781a2f Added mafitahshohfaijahney pick 7df3851 Added ucutepoquiquoophowah pick 75e7b2b Added aomahcaashooneefoavo pick d4dea7e Added iexaephiecaivezohwoo pick 1459fdb Added quiegheemoighaethaex pick 1a949e9 Added evipheichaicheesahme # Rebase cf21377..1a949e9 onto cf21377 # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # However, if you remove everything, the rebase will be aborted. # 


рдкреЗрд░реЗрд╕реНрддреНрд░реЛрдЗрдХрд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЯрдХрд░рд╛рд╡ рдкреИрджрд╛ рд╣реЛрдВрдЧреЗред рд╣рдо рдЙрдиреНрд╣реЗрдВ git mergetool(рдпрд╛ рдЬреИрд╕рд╛ рдЖрдк рдЪрд╛рд╣реЗрдВ) рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреБрдирд░реНрдЧрдарди рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВgit rebase --continue
рдХреНрдпреЛрдВрдХрд┐рдореИрдВ рдХрд┐рд╕реА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВ, рдЯрдХрд░рд╛рд╡ рд╕реЗ рдмрдЪрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЬрдм рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдкрд░ рдХрд╛рдо рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреЛрдИ рд╕рдВрдШрд░реНрд╖ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрд╛ рд╡реЗ рдХрд╛рдлреА рджреБрд░реНрд▓рдн рд╣реЛрдВрдЧреЗред
рдпрд╣рд╛рдБ рд╕реЗ рдЖрдк рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдирд┐рдпрдо рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ :


рдПрдХ рдмрд╛рд░ рд╕рднреА рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрд╣рд╛рдиреА рд░реИрдЦрд┐рдХ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд╣реЛрдЧреАред рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ (рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд░рд┐рдмреЗрд╕ рдЗрд╕ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ):

рдЕрдм рд╣рдорд╛рд░реА рд╢рд╛рдЦрд╛ рдореВрд▓ / рджреЗрд╡ рдмрдиреА рд╣реБрдИ рд╣реИ рдФрд░ рд╣рдо рдЕрдкрдиреЗ рдмрджрд▓рд╛рд╡ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ, рдирдП рдХрдорд┐рдЯ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд:
 dev2(dev)$ git push origin dev Counting objects: 20, done. Delta compression using up to 4 threads. Compressing objects: 100% (18/18), done. Writing objects: 100% (18/18), 1.67 KiB, done. Total 18 (delta 11), reused 0 (delta 0) Unpacking objects: 100% (18/18), done. To /home/sirex/proj/git-habr/origin cf21377..8212c4b dev -> dev 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╣рд╛рдиреА рджреЛрд╣рд░рд╛рддреА рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдХрдИ рдмрдЧреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрд╛рдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рджреЗрд╡ рдпрд╛ рдЙрддреНрдкрддреНрддрд┐ / рджреЗрд╡ рд╕реЗ рдЕрд▓рдЧ рд╢рд╛рдЦрд╛рдПрдБ рдмрдирд╛рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ ред

рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢ : рд╕рд╛рдорд╛рдиреНрдп рдмрдЧ рдлрд┐рдХреНрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд░рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
  1. рджреЗрд╡ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдпрд╛ рдЕрд▓рдЧ
  2. рдЙрддреНрдкрддреНрддрд┐ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди ( git fetch origin)
  3. рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдБ ( git rebase -i origin/dev)
  4. рдЙрддреНрдкрддреНрддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди ( git push origin dev)


рд╕реБрд╡рд┐рдзрд╛ рд╢рд╛рдЦрд╛

рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рдмрдбрд╝реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЦрддреНрдо рд╣реЛрдиреЗ рддрдХ рдореБрдЦреНрдп рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдирд╣реАрдВ рдкрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕реА рд╢рд╛рдЦрд╛рдУрдВ рдкрд░ рдХрдИ рд╢рд╛рдЦрд╛рдПрдБ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдПрдХ рдмрд╣реБрдд рд╣реА рдЧрдВрднреАрд░ рдФрд░ рдЪрдордХрджрд╛рд░ рдмрдЧ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд┐рдЯ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдПрдХ рдЕрд▓рдЧ рд╢рд╛рдЦрд╛ рдЬрд┐рд╕ рдкрд░ рдХрдИ рд▓реЛрдЧ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рдмрдЧ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИред рдХреЗрд╡рд▓ рдХрд╛рдо рджреЗрд╡ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рд╕реБрд╡рд┐рдзрд╛ / рдирд╛рдо рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рдеред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдРрд╕реА рд╢рд╛рдЦрд╛рдПрдВ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ (1-2 рд╕рдкреНрддрд╛рд╣) рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рдиреЗ рд╡рд╛рд▓реА (рдорд╣реАрдиреЗ рдпрд╛ рдЕрдзрд┐рдХ) рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдмреЗрд╢рдХ, рдЬрд┐рддрдиреА рд▓рдВрдмреА рдПрдХ рд╢рд╛рдЦрд╛ рд░рд╣рддреА рд╣реИ, рдЙрддрдиреА рдмрд╛рд░ рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдореБрдЦреНрдп рд╢рд╛рдЦрд╛ рд╕реЗ рдЗрд╕рдореЗрдВ "рдЦреАрдВрдЪ" рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред рд╢рд╛рдЦрд╛ рдЬрд┐рддрдиреА рдмрдбрд╝реА рд╣реЛрдЧреА, рдЙрд╕рдХреЗ рд╕рд╛рде рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЙрддрдиреА рд╣реА рдЕрдзрд┐рдХ рд╣реЛрдЧреАред

рдЪрд▓реЛ рд▓рдШреБ-рд▓рд╛рдЗрд╡ рд╕реБрд╡рд┐рдзрд╛ рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ

рдЖрдорддреМрд░ рдкрд░ рд╢рд╛рдЦрд╛ рдХреЛ рдЕрдВрддрд┐рдо рд╢рд╛рдЦрд╛ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рджреЗрд╡ рд╢рд╛рдЦрд╛ рд╕реЗ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ:
 dev1(dev)$ git fetch origin remote: Counting objects: 20, done. remote: Compressing objects: 100% (18/18), done. remote: Total 18 (delta 11), reused 0 (delta 0) Unpacking objects: 100% (18/18), done. From /home/sirex/proj/git-habr/origin cf21377..8212c4b dev -> origin/dev dev1(dev)$ git branch --no-track feature/feature1 origin/dev #   feature/feature1  origin/dev,      dev1(dev)$ git push origin feature/feature1 #     ,      Total 0 (delta 0), reused 0 (delta 0) To /home/sirex/proj/git-habr/origin * [new branch] feature/feature1 -> feature/feature1 


рдЕрдм рдлреАрдЪрд░ 1 рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реА рд╢рд╛рдЦрд╛ рдореЗрдВ рдХрдИ рдХрдорд┐рдЯ рд╣реЛрдВрдЧреЗ, рдФрд░ рдлреАрдЪрд░ 1 рдкрд░ рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╕рд╛рде рд╣реА рджреЗрд╡ рдореЗрдВ рднреА рдХрдИ рдмрджрд▓рд╛рд╡ рд╣реЛрдВрдЧреЗред рдФрд░ рд╣рдорд╛рд░рд╛ рдХрд╛рдо рд╣рдорд╛рд░реЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рджреЗрд╡ рдХреЛ рд╕реМрдВрдкрдирд╛ рд╣реИ ред
рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рд╕реНрдерд┐рддрд┐ рдкрд┐рдЫрд▓реА рдПрдХ рдЬреИрд╕реА рд╣реИ: рджреЛ рд╢рд╛рдЦрд╛рдПрдВ, рдПрдХ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рдХрд░рдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдВрддрд░ рдХреЗрд╡рд▓ рджреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ (рджреВрд░рд╕реНрде) рд╢рд╛рдЦрд╛рдУрдВ рдХрд╛ рд╣реИ, рд╕реНрдерд╛рдиреАрдп рд▓реЛрдЧреЛрдВ рдХрд╛ рдирд╣реАрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рдВрдЪрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬрдм рдХрд╛рдо рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рджреВрд╕рд░реЗ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд╣ рджреЗрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ "рдорд░реНрдЬ" рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рд╛рдЦрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдХреБрдЫ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╡реНрдпрд░реНрде рд╣реЛрдЧрд╛ред
рдФрд░ рдлрд┐рд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рдЧрднрдЧ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдерд╛:
 git fetch origin #    git rebase -i origin/dev # ,     ,    feature1    dev   .  origin/dev,   dev       ,       git checkout dev #   ,      git merge feature/feature1 #   git reset --hard feature/feature1.       .  ,   fast-forward. 

рдЪрд┐рддреНрд░, рдлреАрдЪрд░ 1 рджреЗрд╡ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЧрдпрд╛, рдлрд┐рд░ рдХреНрдпрд╛ рдЬрд░реВрд░рдд рдереА:

рдзрдХреНрдХрд╛ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛ рд╕рд╛рдл рдХрд░реЗрдВ:
 dev1(dev)$ git push origin dev Counting objects: 11, done. Delta compression using up to 4 threads. Compressing objects: 100% (9/9), done. Writing objects: 100% (9/9), 878 bytes, done. Total 9 (delta 6), reused 0 (delta 0) Unpacking objects: 100% (9/9), done. To /home/sirex/proj/git-habr/origin 3272f59..e514869 dev -> dev dev1(dev)$ git push origin :feature/feature1 #   ,   To /home/sirex/proj/git-habr/origin - [deleted] feature/feature1 dev1(dev)$ git branch -d feature/feature1 #   Deleted branch feature/feature1 (was e514869). 


рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рдиреЗ рд╡рд╛рд▓реА рд╕реБрд╡рд┐рдзрд╛ рд╢рд╛рдЦрд╛рдПрдВ

рдЙрдирдХреЗ рд╕рдорд░реНрдерди рдФрд░ рдЕрджреНрдпрддрди рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рдиреЗ рд╡рд╛рд▓реА рд╢рд╛рдЦрд╛рдУрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ред рдпрджрд┐ рдЖрдк рдКрдкрд░ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ рд╕рдм рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдЖрдкрджрд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ: рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдореБрдЦреНрдп рд╢рд╛рдЦрд╛ рдмрджрд▓ рд░рд╣реА рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрджрд▓ рд░рд╣реА рд╣реИ, рдФрд░ рдЖрдкрдХреА рд╕реБрд╡рд┐рдзрд╛ рдмрд╣реБрдд рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЬрдм рдХрд┐рд╕реА рдлреАрдЪрд░ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдЦрдЯрдЦрдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рддрд╛рдХрд┐ рдпреВрдирд┐рдпрди рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдпрд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рдПред рдЗрд╕рд▓рд┐рдП рдмреНрд░рд╛рдВрдЪ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдмрд╛рд░ рдЬрдм рджреЗрд╡ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдордп-рд╕рдордп рдкрд░ рджреЗрд╡ рд╕реЗ рд╣рдорд╛рд░реА рд╢рд╛рдЦрд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗред

рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдк рд╕рд┐рд░реНрдл рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢рд╛рдЦрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд░рд┐рдмреЗрд╕ рдХреЗ рдмрд╛рдж рдХреА рд╢рд╛рдЦрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдирдпрд╛ рд╕реЗрдЯ рд╣реИ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рд╣реИред рд╡рд╣ рдЬрд╛рд░реА рдирд╣реАрдВ рд░рдЦрддреА рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред Git рдРрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛: рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рд╕реНрддреЗ, рдХреЛрдИ рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рд╣реИред рдХрд╣рд╛рдиреА рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рд╣рдордд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдЧрд╛ рдФрд░ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛, рдФрд░ рдЗрд╕ рд╕рдордп рдмрд╛рдХреА рдХреЛ рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд░реНрддрдорд╛рди рд╢рд╛рдЦрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рдЪрд▓рд╛ рдЬрд╛рдПрдЧрд╛ред рдЬрдм рдкрд╣рд▓рд╛ рдбреЗрд╡рд▓рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмрд╛рдХреА рд╕рднреА рд▓реЛрдЧ рдЕрдкрдиреЗ рдХрдорд┐рдЯреНрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрдВрдЧреЗ, рдЬреЛ рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрдирдЧрдгрдирд╛ рдХреЗ рджреМрд░рд╛рди рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реЛрдЧрд╛ред рдХрд┐рд╕рдиреЗ рдХрд╣рд╛ рдХрд┐ рдЖрдк рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдкреБрди: рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЪрд▓рд┐рдП рдЕрднреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддреЗ рд╣реИрдВ:
 dev1(dev)$ git checkout -b feature/long Switched to a new branch 'feature/long' dev1(feature/long)$ git push origin dev Everything up-to-date dev1(feature/long)$ __ dev1(feature/long)$ git push origin feature/long Counting objects: 11, done. Delta compression using up to 4 threads. Compressing objects: 100% (9/9), done. Writing objects: 100% (9/9), 807 bytes, done. Total 9 (delta 6), reused 0 (delta 0) Unpacking objects: 100% (9/9), done. To /home/sirex/proj/git-habr/origin * [new branch] feature/long -> feature/long 


рджреВрд╕рд░рд╛ рдбреЗрд╡рд▓рдкрд░ рд╕рднреА рдорд╛рдирдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рддрд╛ рд╣реИ:
 dev2(dev)$ git pull remote: Counting objects: 11, done. remote: Compressing objects: 100% (9/9), done. remote: Total 9 (delta 6), reused 0 (delta 0) Unpacking objects: 100% (9/9), done. From /home/sirex/proj/git-habr/origin * [new branch] feature/long -> origin/feature/long Already up-to-date. dev2(dev)$ git checkout feature/long Branch feature/long set up to track remote branch feature/long from origin. Switched to a new branch 'feature/long' dev2(feature/long)$    dev2(feature/long)$ git pull --rebase feature/long # fetch + rebase   dev2(feature/long)$ git push origin feature/long Counting objects: 11, done. Delta compression using up to 4 threads. Compressing objects: 100% (9/9), done. Writing objects: 100% (9/9), 795 bytes, done. Total 9 (delta 6), reused 0 (delta 0) Unpacking objects: 100% (9/9), done. To /home/sirex/proj/git-habr/origin baf4c6b..ce9e58d feature/long -> feature/long 

рдореБрдЦреНрдп рджреЗрд╡ рд╢рд╛рдЦрд╛ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╣рд┐рдЯ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдХрд╣рд╛рдиреА рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧреА:


рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ / рд▓рдВрдмреА рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ , рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рдЕрд▓рдЧ рд╕реЗ рдЬрд╛рд░реА рд░рд╣реЗрдЧрд╛ред рджреЗрд╡ рез рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЛред рдлрд┐рд░ рд╡рд╣ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЗрд╡ 2 рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИ рдФрд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ:
 dev1(feature/long)$ git fetch origin dev1(feature/long)$ git rebase -i origin/dev ...  ,  ,  .. 

рдЗрд╕ рд╕рдордп, dev2 рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдзрдХреНрдХрд╛ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╢рд╛рдЦрд╛ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИ (рдФрд░ рд╡рд░реНрддрдорд╛рди рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред
рдкрд╣рд▓рд╛ рд╕рд┐рд░рд╛ рд░рд┐рдмрд╛рд╕ рдФрд░ рдХрд╣рд╛рдиреА рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧреА:

рд╢рд╛рдЦрд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЙрддреНрдкрддреНрддрд┐ / рд╕реБрд╡рд┐рдзрд╛ / рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╡рд╣реАрдВ рдмрдиреА рд╣реБрдИ рд╣реИред рд╣рдордиреЗ рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓рд┐рдП рд╣реИрдВ, рдЕрдм рд╣рдореЗрдВ рд╕рднреА рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 dev1(feature/long)$ git push origin feature/long To /home/sirex/proj/git-habr/origin ! [rejected] feature/long -> feature/long (non-fast-forward) error: failed to push some refs to '/home/sirex/proj/git-habr/origin' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Merge the remote changes (eg 'git pull') hint: before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

Git рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЧрд▓рдд рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
 dev1(feature/long)$ git push origin feature/long --force Counting objects: 20, done. Delta compression using up to 4 threads. Compressing objects: 100% (18/18), done. Writing objects: 100% (18/18), 1.58 KiB, done. Total 18 (delta 12), reused 0 (delta 0) Unpacking objects: 100% (18/18), done. To /home/sirex/proj/git-habr/origin + ce9e58d...84c3001 feature/long -> feature/long (forced update) 

рдЕрдм рдЖрдк рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдХрд░ рдЖрдЧреЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдиреЗ рджреВрд╕рд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ dev2:
 dev2(feature/long)$ git fetch origin remote: Counting objects: 20, done. remote: Compressing objects: 100% (18/18), done. remote: Total 18 (delta 12), reused 0 (delta 0) Unpacking objects: 100% (18/18), done. From /home/sirex/proj/git-habr/origin + ce9e58d...84c3001 feature/long -> origin/feature/long (forced update) 



рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдХрдорд┐рдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ред рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдХреЛрдИ рдХрдорд┐рдЯ рдирд╣реАрдВ рдереЗ, рдпрд╛рдиреА dev2 рдбреЗрд╡рд▓рдкрд░ рд╣рдм рдХреЛ рдкрдврд╝реЗрдЧрд╛, рдЬрдмрдХрд┐ рдкрд╣рд▓рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреЙрдЗрдВрдЯрд░ feature/longрдХреЛ origin/feature/longрдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдХрд╛рдо рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ ред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣рд╛рдВ рд░рд┐рдмрд╛рд╕ рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдорджрдж рдХрд░реЗрдЧрд╛, рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде --onto:
git rebase --onto <___> <c____> <_____>
рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ (рдХрдорд┐рдЯ рдХрд╛ рдХреБрдЫ рдХреНрд░рдо) рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдЕрдВрддрд┐рдо рдХреБрдЫ рдХрдорд┐рдЯреНрд╕ рдХреЛ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдпрд╛рдж рдХрд░реЗрдВ HEAD~1ред рдЖрдк рдкрд┐рдЫрд▓реЗ Nth рдХрдорд┐рдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдкрд░ ~ N рдСрдкрд░реЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
HEAD~1- рдпрд╣ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╣реИ, рд▓реЗрдХрд┐рди HEAD~2- рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓рд╛ рд╣реИ ред HEAD~5- 5 рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИред рдЖрдИрдбреА рдпрд╛рдж рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЕрдм рд╣рдо рдХреИрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдХрдорд┐рдЯ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ:
 git rebase -i --onto origin/feature/long feature/long~1 feature/long 

рдЖрдЗрдП рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ:
  1. рд╣рдо рд╕реБрд╡рд┐рдзрд╛ / рд▓рдВрдмреЗ рд╕рдордп рдкрд░ рд╣реИрдВ, рдЬреЛ рдирдП рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд╡рд╣ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП (1, рдЕрдВрддрд┐рдо)
  2. рд╣рдо рдореВрд▓ / рд╕реБрд╡рд┐рдзрд╛ / рд▓рдВрдмреЗ (рд╢рд╛рдЦрд╛ рдореЗрдВ рдирдИ рд╢реБрд░реБрдЖрдд) рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ
  3. рд╢рд╛рдЦрд╛ рд╣реА рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ / рд▓рдВрдмреА рд╣реИ
  4. рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ (рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╢реБрд░реБрдЖрдд рдХреА рдЦреЛрдЬ рдФрд░ рд╕рднреА рдХрдорд┐рдЯреНрд╕ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╣рд╛рдВ рдореМрдЬреВрдж рд╣реИрдВ), рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкрд┐рдЫрд▓реЗ рдкреНрд░рддрд┐рдмрджреНрдз (рд╕рдорд╛рд╡реЗрд╢реА рдирд╣реАрдВ) рд╕реЗ рд╢реБрд░реВ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрд╛рдиреАрд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде / рд▓рдВрдмреЗ ~ 1

рдЕрдЧрд░ рд╣рдореЗрдВ 4 рдХрдорд┐рдЯ рдЦреАрдВрдЪрдирд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣реЛрдЧрд╛ feature/long~4ред
 dev2(feature/long)$ git rebase -i --onto origin/feature/long feature/long~1 feature/long Successfully rebased and updated refs/heads/feature/long. 


рдпрд╣ рдХрд╛рдо рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред

рдПрдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рдХрдорд╛рдВрдб рд╣реИ рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдХрдИ рдЕрдиреНрдп рдореЗрдВ - git cherry-pickред
рдХрд╣реАрдВ рд╕реЗ рднреА, рдЖрдк рдХрд┐рд╕реА рднреА рдХрдорд┐рдЯ рдХреЛ рд▓реЗрдиреЗ рдФрд░ рдЙрд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдЬреЛ рдХрдорд┐рдЯрдореЗрдВрдЯ рдЪрд╛рд╣рд┐рдП рд╡рд╣ "рдШрд╕реАрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ":
 git reset --hard origin/feature/long && git cherry-pick commit_id # commit_id   , ..  reset      


рд╡реЗ рд╣реЙрдЯрдлрд╝рд┐рдХреНрд╕

рд╣реЙрдЯрдлрд┐рдХреНрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреАрдбрд╝реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдЖрдк рд╣реЙрдЯрдлрд╝рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рдХреЛрдб рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред рдХреЗрд╡рд▓ рдЗрд╕ рд╕реБрдзрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬ рдХреЛ рд▓реЗрдВ, рдЬрд┐рд╕реЗ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдкрдиреЗ рдЯреИрдЧ рдпрд╛ рдорд╛рд╕реНрдЯрд░ рдЫреЛрдбрд╝рд╛ рд╣реИ ред рдЯреИрдЧ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рдХрд╣рд╛рдВ рд╕реЗ рдорд┐рд▓рд╛ред
рдЯреИрдЧ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ
 git tag     '/'   . 

hotfix- :
hotfix tag master ( cherry-pick , - ) cherry-pick , . .
git:
dev2(feature/long)$ git checkout master Switched to branch 'master' dev2(master)$ git tag release/1.0 # , dev2(master)$ git checkout -b hotfix/1.0.x Switched to a new branch 'hotfix/1.0.x' dev2(hotfix/1.0.x)$ .. dev2(hotfix/1.0.x)$ git push origin hotfix/1.0.x Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 302 bytes, done. Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin * [new branch] hotfix/1.0.x -> hotfix/1.0.x dev2(hotfix/1.0.x)$ git tag release/1.0.1 # dev2(hotfix/1.0.x)$ git checkout dev # Switched to branch 'dev' dev2(dev)$ git cherry-pick release/1.0.1 # id, . # , git commit dev2(dev)$ git commit [dev 9982f7b] Added rahqueiraiheinathiav 1 file changed, 1 insertion(+) dev2(dev)$ git push origin dev Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 328 bytes, done. Total 3 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin b21f8a5..9982f7b dev -> dev
    git tag '/' .

    hotfix- :
    hotfix tag master ( cherry-pick , - ) cherry-pick , . .
    git:
    dev2(feature/long)$ git checkout master Switched to branch 'master' dev2(master)$ git tag release/1.0 # , dev2(master)$ git checkout -b hotfix/1.0.x Switched to a new branch 'hotfix/1.0.x' dev2(hotfix/1.0.x)$ .. dev2(hotfix/1.0.x)$ git push origin hotfix/1.0.x Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 302 bytes, done. Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin * [new branch] hotfix/1.0.x -> hotfix/1.0.x dev2(hotfix/1.0.x)$ git tag release/1.0.1 # dev2(hotfix/1.0.x)$ git checkout dev # Switched to branch 'dev' dev2(dev)$ git cherry-pick release/1.0.1 # id, . # , git commit dev2(dev)$ git commit [dev 9982f7b] Added rahqueiraiheinathiav 1 file changed, 1 insertion(+) dev2(dev)$ git push origin dev Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 328 bytes, done. Total 3 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin b21f8a5..9982f7b dev -> dev
  1. git tag '/' .

    hotfix- :
    hotfix tag master ( cherry-pick , - ) cherry-pick , . .
    git:
    dev2(feature/long)$ git checkout master Switched to branch 'master' dev2(master)$ git tag release/1.0 # , dev2(master)$ git checkout -b hotfix/1.0.x Switched to a new branch 'hotfix/1.0.x' dev2(hotfix/1.0.x)$ .. dev2(hotfix/1.0.x)$ git push origin hotfix/1.0.x Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 302 bytes, done. Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin * [new branch] hotfix/1.0.x -> hotfix/1.0.x dev2(hotfix/1.0.x)$ git tag release/1.0.1 # dev2(hotfix/1.0.x)$ git checkout dev # Switched to branch 'dev' dev2(dev)$ git cherry-pick release/1.0.1 # id, . # , git commit dev2(dev)$ git commit [dev 9982f7b] Added rahqueiraiheinathiav 1 file changed, 1 insertion(+) dev2(dev)$ git push origin dev Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 328 bytes, done. Total 3 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin b21f8a5..9982f7b dev -> dev
    git tag '/' .

    hotfix- :
    hotfix tag master ( cherry-pick , - ) cherry-pick , . .
    git:
    dev2(feature/long)$ git checkout master Switched to branch 'master' dev2(master)$ git tag release/1.0 # , dev2(master)$ git checkout -b hotfix/1.0.x Switched to a new branch 'hotfix/1.0.x' dev2(hotfix/1.0.x)$ .. dev2(hotfix/1.0.x)$ git push origin hotfix/1.0.x Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 302 bytes, done. Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin * [new branch] hotfix/1.0.x -> hotfix/1.0.x dev2(hotfix/1.0.x)$ git tag release/1.0.1 # dev2(hotfix/1.0.x)$ git checkout dev # Switched to branch 'dev' dev2(dev)$ git cherry-pick release/1.0.1 # id, . # , git commit dev2(dev)$ git commit [dev 9982f7b] Added rahqueiraiheinathiav 1 file changed, 1 insertion(+) dev2(dev)$ git push origin dev Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 328 bytes, done. Total 3 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin b21f8a5..9982f7b dev -> dev
  2. git tag '/' .

    hotfix- :
    hotfix tag master ( cherry-pick , - ) cherry-pick , . .
    git:
    dev2(feature/long)$ git checkout master Switched to branch 'master' dev2(master)$ git tag release/1.0 # , dev2(master)$ git checkout -b hotfix/1.0.x Switched to a new branch 'hotfix/1.0.x' dev2(hotfix/1.0.x)$ .. dev2(hotfix/1.0.x)$ git push origin hotfix/1.0.x Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 302 bytes, done. Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin * [new branch] hotfix/1.0.x -> hotfix/1.0.x dev2(hotfix/1.0.x)$ git tag release/1.0.1 # dev2(hotfix/1.0.x)$ git checkout dev # Switched to branch 'dev' dev2(dev)$ git cherry-pick release/1.0.1 # id, . # , git commit dev2(dev)$ git commit [dev 9982f7b] Added rahqueiraiheinathiav 1 file changed, 1 insertion(+) dev2(dev)$ git push origin dev Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 328 bytes, done. Total 3 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin b21f8a5..9982f7b dev -> dev
    git tag '/' .

    hotfix- :
    hotfix tag master ( cherry-pick , - ) cherry-pick , . .
    git:
    dev2(feature/long)$ git checkout master Switched to branch 'master' dev2(master)$ git tag release/1.0 # , dev2(master)$ git checkout -b hotfix/1.0.x Switched to a new branch 'hotfix/1.0.x' dev2(hotfix/1.0.x)$ .. dev2(hotfix/1.0.x)$ git push origin hotfix/1.0.x Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 302 bytes, done. Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin * [new branch] hotfix/1.0.x -> hotfix/1.0.x dev2(hotfix/1.0.x)$ git tag release/1.0.1 # dev2(hotfix/1.0.x)$ git checkout dev # Switched to branch 'dev' dev2(dev)$ git cherry-pick release/1.0.1 # id, . # , git commit dev2(dev)$ git commit [dev 9982f7b] Added rahqueiraiheinathiav 1 file changed, 1 insertion(+) dev2(dev)$ git push origin dev Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 328 bytes, done. Total 3 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin b21f8a5..9982f7b dev -> dev
  3. git tag '/' .

    hotfix- :
    hotfix tag master ( cherry-pick , - ) cherry-pick , . .
    git:
    dev2(feature/long)$ git checkout master Switched to branch 'master' dev2(master)$ git tag release/1.0 # , dev2(master)$ git checkout -b hotfix/1.0.x Switched to a new branch 'hotfix/1.0.x' dev2(hotfix/1.0.x)$ .. dev2(hotfix/1.0.x)$ git push origin hotfix/1.0.x Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 302 bytes, done. Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin * [new branch] hotfix/1.0.x -> hotfix/1.0.x dev2(hotfix/1.0.x)$ git tag release/1.0.1 # dev2(hotfix/1.0.x)$ git checkout dev # Switched to branch 'dev' dev2(dev)$ git cherry-pick release/1.0.1 # id, . # , git commit dev2(dev)$ git commit [dev 9982f7b] Added rahqueiraiheinathiav 1 file changed, 1 insertion(+) dev2(dev)$ git push origin dev Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 328 bytes, done. Total 3 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin b21f8a5..9982f7b dev -> dev
    git tag '/' .

    hotfix- :
    hotfix tag master ( cherry-pick , - ) cherry-pick , . .
    git:
    dev2(feature/long)$ git checkout master Switched to branch 'master' dev2(master)$ git tag release/1.0 # , dev2(master)$ git checkout -b hotfix/1.0.x Switched to a new branch 'hotfix/1.0.x' dev2(hotfix/1.0.x)$ .. dev2(hotfix/1.0.x)$ git push origin hotfix/1.0.x Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 302 bytes, done. Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin * [new branch] hotfix/1.0.x -> hotfix/1.0.x dev2(hotfix/1.0.x)$ git tag release/1.0.1 # dev2(hotfix/1.0.x)$ git checkout dev # Switched to branch 'dev' dev2(dev)$ git cherry-pick release/1.0.1 # id, . # , git commit dev2(dev)$ git commit [dev 9982f7b] Added rahqueiraiheinathiav 1 file changed, 1 insertion(+) dev2(dev)$ git push origin dev Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 328 bytes, done. Total 3 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin b21f8a5..9982f7b dev -> dev
  4. git tag '/' .

    hotfix- :
    hotfix tag master ( cherry-pick , - ) cherry-pick , . .
    git:
    dev2(feature/long)$ git checkout master Switched to branch 'master' dev2(master)$ git tag release/1.0 # , dev2(master)$ git checkout -b hotfix/1.0.x Switched to a new branch 'hotfix/1.0.x' dev2(hotfix/1.0.x)$ .. dev2(hotfix/1.0.x)$ git push origin hotfix/1.0.x Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 302 bytes, done. Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin * [new branch] hotfix/1.0.x -> hotfix/1.0.x dev2(hotfix/1.0.x)$ git tag release/1.0.1 # dev2(hotfix/1.0.x)$ git checkout dev # Switched to branch 'dev' dev2(dev)$ git cherry-pick release/1.0.1 # id, . # , git commit dev2(dev)$ git commit [dev 9982f7b] Added rahqueiraiheinathiav 1 file changed, 1 insertion(+) dev2(dev)$ git push origin dev Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 328 bytes, done. Total 3 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin b21f8a5..9982f7b dev -> dev
    git tag '/' .

    hotfix- :
    hotfix tag master ( cherry-pick , - ) cherry-pick , . .
    git:
    dev2(feature/long)$ git checkout master Switched to branch 'master' dev2(master)$ git tag release/1.0 # , dev2(master)$ git checkout -b hotfix/1.0.x Switched to a new branch 'hotfix/1.0.x' dev2(hotfix/1.0.x)$ .. dev2(hotfix/1.0.x)$ git push origin hotfix/1.0.x Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 302 bytes, done. Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin * [new branch] hotfix/1.0.x -> hotfix/1.0.x dev2(hotfix/1.0.x)$ git tag release/1.0.1 # dev2(hotfix/1.0.x)$ git checkout dev # Switched to branch 'dev' dev2(dev)$ git cherry-pick release/1.0.1 # id, . # , git commit dev2(dev)$ git commit [dev 9982f7b] Added rahqueiraiheinathiav 1 file changed, 1 insertion(+) dev2(dev)$ git push origin dev Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 328 bytes, done. Total 3 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin b21f8a5..9982f7b dev -> dev
  5. git tag '/' .

    hotfix- :
    hotfix tag master ( cherry-pick , - ) cherry-pick , . .
    git:
    dev2(feature/long)$ git checkout master Switched to branch 'master' dev2(master)$ git tag release/1.0 # , dev2(master)$ git checkout -b hotfix/1.0.x Switched to a new branch 'hotfix/1.0.x' dev2(hotfix/1.0.x)$ .. dev2(hotfix/1.0.x)$ git push origin hotfix/1.0.x Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 302 bytes, done. Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin * [new branch] hotfix/1.0.x -> hotfix/1.0.x dev2(hotfix/1.0.x)$ git tag release/1.0.1 # dev2(hotfix/1.0.x)$ git checkout dev # Switched to branch 'dev' dev2(dev)$ git cherry-pick release/1.0.1 # id, . # , git commit dev2(dev)$ git commit [dev 9982f7b] Added rahqueiraiheinathiav 1 file changed, 1 insertion(+) dev2(dev)$ git push origin dev Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 328 bytes, done. Total 3 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin b21f8a5..9982f7b dev -> dev
    git tag '/' .

    hotfix- :
    hotfix tag master ( cherry-pick , - ) cherry-pick , . .
    git:
    dev2(feature/long)$ git checkout master Switched to branch 'master' dev2(master)$ git tag release/1.0 # , dev2(master)$ git checkout -b hotfix/1.0.x Switched to a new branch 'hotfix/1.0.x' dev2(hotfix/1.0.x)$ .. dev2(hotfix/1.0.x)$ git push origin hotfix/1.0.x Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 302 bytes, done. Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin * [new branch] hotfix/1.0.x -> hotfix/1.0.x dev2(hotfix/1.0.x)$ git tag release/1.0.1 # dev2(hotfix/1.0.x)$ git checkout dev # Switched to branch 'dev' dev2(dev)$ git cherry-pick release/1.0.1 # id, . # , git commit dev2(dev)$ git commit [dev 9982f7b] Added rahqueiraiheinathiav 1 file changed, 1 insertion(+) dev2(dev)$ git push origin dev Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 328 bytes, done. Total 3 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin b21f8a5..9982f7b dev -> dev
git tag '/' .

hotfix- :
hotfix tag master ( cherry-pick , - ) cherry-pick , . .
git:
dev2(feature/long)$ git checkout master Switched to branch 'master' dev2(master)$ git tag release/1.0 # , dev2(master)$ git checkout -b hotfix/1.0.x Switched to a new branch 'hotfix/1.0.x' dev2(hotfix/1.0.x)$ .. dev2(hotfix/1.0.x)$ git push origin hotfix/1.0.x Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 302 bytes, done. Total 3 (delta 1), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin * [new branch] hotfix/1.0.x -> hotfix/1.0.x dev2(hotfix/1.0.x)$ git tag release/1.0.1 # dev2(hotfix/1.0.x)$ git checkout dev # Switched to branch 'dev' dev2(dev)$ git cherry-pick release/1.0.1 # id, . # , git commit dev2(dev)$ git commit [dev 9982f7b] Added rahqueiraiheinathiav 1 file changed, 1 insertion(+) dev2(dev)$ git push origin dev Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 328 bytes, done. Total 3 (delta 2), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/sirex/proj/git-habr/origin b21f8a5..9982f7b dev -> dev


рддреНрд╡рд░рд┐рдд рдФрд░ рдЖрд╕рд╛рди, рд╕рд╣реА? рдЖрдк 2 рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛, рддреЛ рд╣реЙрдЯрдлрд┐рдХреНрд╕реЗрд╕ , рд╢рд╛рдпрдж рдпрд╣ 2 рдмрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ cherry-pickрдореЗрдВ рджреЗрд╡ ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдереЗ, рддреЛ рдЖрдк рдлрд┐рд░ рд╕реЗ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ git rebase --into ...рдФрд░ рдХрдорд┐рдЯ рдХреА рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛


Git рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдирд╛рдо рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рдордп рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдпрд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рджреВрдВрдЧрд╛, рд╡реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рднрд░реЗ рд╣реБрдП рд╣реИрдВ, рдмрд╕ рджреЗрдЦреЛред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдмрджрд▓рд╛рд╡ рджреЗрдВ, рдЖрдк рдХреНрд░рдо рдореЗрдВ рдЗрддрд┐рд╣рд╛рд╕ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдкрд░ рдЦреБрдж рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЙрдЧ рдореЗрдВ, рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
 9982f7b Finally make test works b21f8a5 Fixed typo in Test 3eabaab Fixed typo in Test e514869 Added Test for Foo b4439a2 Implemented Method for Foo 250adb1 Added class Foo 

рдЪрд▓реЛ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди 6 рдХрдорд┐рдЯреНрд╕ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдкрд╣рд▓реЗ:
 dev2(dev)$ git rebase -i dev~6 # ..       origin/dev       dev2(dev)$ git rebase -i origin/dev 

рдЕрдм рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рдореЛрдб рдореЗрдВ, рдЖрдк рдкрд╣рд▓реЗ рджреЛ рдХреЛ рдПрдХ рдФрд░ рдЕрдВрддрд┐рдо рдЪрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рд╕реНрдХреНрд╡реИрд╢)ред рдлрд┐рд░ рдХрд╣рд╛рдиреА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
 0f019d0 Added Test for class Foo a3ae806 Implemented class Foo 

рдпрд╣ рд╕рд╛рдЭрд╛ рднрдВрдбрд╛рд░ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред

рдХреНрдпрд╛ git configрдФрд░ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдЕрд╡рд╢реНрдп рджреЗрдЦреЗрдВ git config --globalред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдИрдореЗрд▓ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛:
 git config --global user.name sirex git config --global user.email jsirex@gmail.com 


рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░, рд╣рдордиреЗ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдирд╛рдВрддрд░ рд╡рд┐рдХрд╛рд╕ рдХрд┐рдпрд╛ред рд╡реЗ рд╕рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред рдЙрд╕реА рд╕рдордп, рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рдордп, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рддреИрдпрд╛рд░ рдереАрдВ рдпрд╛ рдирд╣реАрдВ: рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдмрджрд▓ рд╕рдХрддреА рдереАрдВ рдпрд╛ рдЧрдВрднреАрд░ рдХреАрдбрд╝реЗ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рдереЗред рдФрд░ рд╕рд╡рд╛рд▓ рдерд╛: рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рд╕рдВрдпреЛрдЬрди рдХреЗ рдмрд┐рдирд╛ рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдХреИрд╕реЗ рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рд░рд┐рд▓реАрдЬ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдм рдХреБрдЫ рд╕рдВрдпреЛрдЬрди? рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕? Git рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
  1. рдмрд┐рд▓реНрдб рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рд╢рд╛рдЦрд╛ рдмрдирд╛рдИ рдЧрдИ рдереА, рдЬрд╣рд╛рдБ рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╡рд┐рд▓реАрди рд╣реЛ рдЧрдИрдВ ( git merge --no-ff)
  2. рд╢рд╛рдЦрд╛ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
  3. рдЗрд╕рдХреА рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдЬрд╛рд░реА рд░рд╣рд╛
  4. рдирдП рдкрд░рд┐рд╡рд░реНрддрди рдлрд┐рд░ рд╕реЗ рд╡рд┐рд▓рдп ( git merge --no-ff)
  5. , .
  6. - , dev .
  7. , ,


рдирд┐рд╖реНрдХрд░реНрд╖






gcc рдиреЗ Git рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА ред
borNfree рдиреЗ рдПрдХ рдЕрдиреНрдп рд╕реНрд░реЛрдд рдЯреНрд░реА GUI рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ ред
zloylos рдиреЗ git
olancheg рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рджреЗрдЦрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ ред

рдкреБрдирд╢реНрдЪред рд╣рдм рдкрд░ рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдХреЗ рд╕рдордп рд╡реЗ рдЖрдо рддреМрд░ рдкрд░ рдХреНрдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ? рдХреГрдкрдпрд╛ рдХрдбрд╝рд╛рдИ рд╕реЗ рдиреНрдпрд╛рдп рди рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рдерд╛ред

Source: https://habr.com/ru/post/In174467/


All Articles