рдореИрдВ рд▓рдЧрднрдЧ рдХрд╣реАрдВ рднреА рдФрд░ рдЬрд┐рддрдиреЗ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рджреМрд░рд╛рди рдореИрдВ рдмрд╣реБрдд рдХреБрдЫ рд╕реАрдЦрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рдФрд░ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдореИрдВ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдпрд╣ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд╡реАрд╕реАрдПрд╕ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддреЗ рд╣реИрдВ:
- рдХреНрдпрд╛ рдореБрдЭреЗ рдЙрд╕ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП "рдЯреНрдпреВрди" рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
- рдХреНрдпрд╛ рдкреНрд░рдмрдВрдзрдХ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рд╣реЛрдВрдЧреЗ?
- рдХреНрдпрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛?
- рдХреНрдпрд╛ рд╢реБрд░реБрдЖрддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЬрд▓реНрджреА рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?
- рдХреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рдФрд░ рддреЗрдЬ рд╣реИ?
рдмреЗрд╢рдХ, рдореИрдВ рдореВрд▓ рдмрд╛рддреЗрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреНрд░рдо рдореЗрдВ рд╕рдм рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рдЕрднреА рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдЧрд┐рдЯ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡реА рдкрд╛рдардХ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреБрдЫ рдирдпрд╛ рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╕рд▓рд╛рд╣ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдпреЛрдЬрдирд╛ рдХреЗ рдмрдЬрд╛рдп
рдмрд╣реБрдд рдмрд╛рд░, рдХреБрдЫ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЧреБрдЪреНрдЫрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдпреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдЧ рд╣реИрдВ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдВрдкрдирд┐рдпрд╛рдВ рд╣реИрдВ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВред рдпрд╣ рд╕рдм рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреБрдХреНрдд рд╣реИ? рдмрд╛рдж рдореЗрдВ, рдЬрдм рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдореБрдЦреНрдп рдЪрд░рдгреЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓реВрдВрдЧрд╛:
рдкрд░реНрдпрд╛рд╡рд░рдг
рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:
- Git
- рдХрдВрд╕реЛрд▓
- рдореЙрдирд┐рдЯрд░ рдХреЗ рджреВрд╕рд░реА рддрд░рдл рдХрд╛ рдЖрджрдореА рдЬреЛ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдЙрд╕рдХреА рдкрд╕рдВрджреАрджрд╛ рдзреБрд░реА рдХреЗ рдиреАрдЪреЗ рдХреИрд╕реЗ рд░рдЦрд╛ рдЬрд╛рдП
рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╡рд╛рддрд╛рд╡рд░рдг рдбреЗрдмрд┐рдпрди + 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 рдмрд╛рд░ рдореИрдВрдиреЗ рдЧреАрдереВрдм / рдЧреАрддрд╛рд▓рд╛рдм рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреАред рдпрд╣ рд╕реЛрдЪрдХрд░ рдХрд┐ рдпрд╣ рдЧрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдерд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЧрд┐рдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдХреБрдЫ рдЧрд┐рдЯ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдФрд░ рдЕрдЧрд░ рдпреЗ рд╕рд┐рд░реНрдл рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд╣рд╛рдВ рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рд╡рд╣рд╛рдВ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ? рд╣рд╛рдБ! рдореИрдВ рдЗрд╕реЗ "рдкрд░рд┐рд╡рд╣рди" рдХрд╣рддрд╛ рд╣реВрдВред рдпрд╣ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдпрд╛рдж рд░рдЦрдирд╛ рдЗрддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛ред рдПрдХ рдФрд░ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк: "рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ред" рд╕рдмрд╕реЗ рдЖрдо рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
- рдлрд╝рд╛рдЗрд▓ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рд╣реИред
- SSH - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ ssh рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред
- 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
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рддреЗ рд╣реИрдВ:
- рд╣рдо рдЖрдкрдХреЗ рдЕрдкрдиреЗ рджреВрд░рд╕реНрде рднрдВрдбрд╛рд░ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░реЗрдВрдЧреЗ
- рдбреЗрд╡рд▓рдкрд░реНрд╕ (dev1 рдФрд░ dev2) рдХреА рдУрд░ рд╕реЗ рдЗрд╕рдХреЗ рджреЛ рдХреНрд▓реЛрди рдмрдирд╛рддреЗ рд╣реИрдВ

рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ
рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рднреА рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╛рдо рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рдпрд╣ рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИ рдХрд┐ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реНрд╡рдпрдВ (.рдЧрд┐рдд рдлрд╝реЛрд▓реНрдбрд░) рдирд┐рд╣рд┐рдд рд╣реИред рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рд╕реА рднреА рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдирдВрдЧреЗ repos рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЪрд▓реЛ рдПрдХ рдмрдирд╛рддреЗ рд╣реИрдВ (рдпрд╣ рд╣рдорд╛рд░рд╛ рдореБрдЦреНрдп рдкрд░реАрдХреНрд╖рдг рднрдВрдбрд╛рд░ рд╣реЛрдЧрд╛):
$ mkdir git-habr
рдЕрдм рдЗрд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдУрд░ рд╕реЗ рдХреНрд▓реЛрди рдХрд░реЗрдВред рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЪреЗрддрд╛рд╡рдиреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдЧреА: 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 * рдореЗрдВ рдХреЛрдИ рд╢рд╛рдЦрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ (рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдХреИрд╡рд┐рдПрдЯ рдХреЗ рд╕рд╛рде)
рдЖрдк рд╕реВрдЪреА рдХреЛ рдЖрдЧреЗ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдкреНрд░рд╢реНрди рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:
рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдпрд╣ рд╕рдм рдХреИрд╕реЗ рд╕рдордЭрд╛ рдФрд░ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рджреЗрдЦреЗрдВред рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
Gitред рд▓рдЧрднрдЧ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ
Git рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рд╣реЗрдЬрддрд╛ рд╣реИ (рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рд╕рд╣реЗрдЬрддрд╛ рд╣реИ)ред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдмрджрд▓реА рдЧрдИ рд╣реИ, рддреЛ рдкреБрд░рд╛рдиреА рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЗрд╡рд▓
рд╕рдВрд╢реЛрдзрд┐рдд рдлрд╛рдЗрд▓реЗрдВ рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛ рдЬрд╛рдПрдВрдЧреА, рдЬреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреЛ рдмрдЪрд╛рдПрдЧреА рдФрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдмрджреНрдз рдкрд░ рдЬрд▓реНрджреА рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧреАред
рдпрд╣ рдЖрдкрдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдордЬрд╝реЗрджрд╛рд░ рдЪреАрдЬрд╝реЗрдВ рдпрд╣рд╛рдБ рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ:
$ git init /tmp/test Initialized empty Git repository in /tmp/test/.git/ $ cd /tmp/test $ cp ~/debian.iso .
рд╣рд╛рдВ, рдЖрдкрдХреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ "рднрд╛рд░реА" рдлрд╛рдЗрд▓реЗрдВ, рдмрд╛рдпрдиреЗрд░реА рдЖрджрд┐ рдХреЛ рд╕реНрдЯреЛрд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реЗ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдБ рд░рд╣реЗрдВрдЧреЗ рдФрд░ рднрдВрдбрд╛рд░ рдХреЗ рд╣рд░ рдХреНрд▓реЛрди рдореЗрдВ рд░рд╣реЗрдВрдЧреЗред
рдкреНрд░рддреНрдпреЗрдХ рдХрдорд┐рдЯ рдореЗрдВ рдХрдИ рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЗ рдХрдорд┐рдЯ рдФрд░ рдХрдИ рдмрдЪреНрдЪреЗ рдХрдорд┐рдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:

рд╣рдо рдЗрд╕ рдкреЗрдбрд╝ рдХреЗ рдХрд┐рд╕реА рднреА рдмрд┐рдВрджреБ рдкрд░ (рдпрд╛ рдХрд┐рд╕реА рднреА рд░рд╛рдЬреНрдп рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд) рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдмрд▓реНрдХрд┐, рдПрдХ рдЧреНрд░рд╛рдлред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЧрд┐рдЯ рдЪреЗрдХрдЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
git checkout <commit>
рдПрдХ рдореЗрдВ рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рдорд░реНрдЬ рдХрд╛ рдПрдХ рдорд░реНрдЬ рд╣реИ (рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рд╕реЗрдЯреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди)ред
рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рдЦрд╛ рдореЗрдВ рдХрдИ рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХрд╛ рдЖрднрд╛рд╕ рд╣реЛрддрд╛ рд╣реИред
рд╡реИрд╕реЗ, рдореИрдВ рдпрд╣рд╛рдВ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ / рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдПрдХ рднрд╛рдЧ рдкрд░ рдПрдХ рдЯреИрдЧ рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЖрджрд┐ред рд╣рд╛рд▓рдд рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╣рд╛рд▓ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рднрдВрдбрд╛рд░ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ 1, рдкреНрд░реЛрдЬреЗрдХреНрдЯ 2 рдЖрджрд┐ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╕ рдЬрдбрд╝ рддрдХред
рдЕрдм рд╢рд╛рдЦрд╛рдУрдВ рдХреЛред рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ:
Git * рдореЗрдВ рдХреЛрдИ рд╢рд╛рдЦрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ (рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдХреИрд╡рд┐рдПрдЯ рдХреЗ рд╕рд╛рде)
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реИ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрдИ рдХрдорд┐рдЯ рд╣реИрдВ рдЬреЛ рдЧреНрд░рд╛рдл рдмрдирд╛рддреЗ рд╣реИрдВред рд╣рдо рдкреЗрд░реЗрдВрдЯ-рдХрдорд┐рдЯ рд╕реЗ рдХрд┐рд╕реА рднреА рдЪрд╛рдЗрд▓реНрдб-рдХрдореЗрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рд░рд╛рд╕реНрддрд╛ рдЪреБрдирддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдХрдорд┐рдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ "рдпрд╛рдж" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ рдПрдХ рдирд╛рдорд┐рдд рд╕реВрдЪрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдирд╛рдорд┐рдд рд╕реВрдЪрдХ рдПрдХ рд╢рд╛рдЦрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣ рдЯреИрдЧ рдХреЗ рд╕рд╛рдеред `рд╣реАрдб` рдПрдХ рд╣реА рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрднреА рдХрд╣рд╛рдБ рд╣реИрдВред рдирдП рдЖрд╡рд╛рдЧрдорди рд╡рд░реНрддрдорд╛рди рд╢рд╛рдЦрд╛ рдХреА рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реИрдВ (рд╡рд╣реА рдЬрд╣рд╛рдВ HEAD рджрд┐рдЦрддрд╛ рд╣реИ)ред
рдпрджрд┐ рдпрд╣ рдЯреИрдЧ рдирд╣реАрдВ рд╣реИ рддреЛ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдХрд┐рд╕реА рднреА рдХрдорд┐рдЯ рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЯреИрдЧ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдпрд╛рдж рд░рдЦреЗрдВ рдФрд░ рдХрд╣реАрдВ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рди рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдпрд╣ рд╕рдм рдЖрдкрдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрдм рдЧрд┐рдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред рдмрд╛рдХреА рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдм рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╢рдмреНрджрд╛рд╡рд▓реА
рд╕реВрдЪрдХрд╛рдВрдХ - рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдХреНрд╖реЗрддреНрд░, рдЕрд░реНрдерд╛рддреНред рд╕рдм рдХреБрдЫ рдЬреЛ рдЖрдкрдиреЗ рднрдВрдбрд╛рд░ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдерд╛ред
рдкреНрд░рддрд┐рдмрджреНрдз - рднрдВрдбрд╛рд░ рдореЗрдВ рднреЗрдЬреЗ рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиред
HEAD рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдорд╛рд╕реНрдЯрд░ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢рд╛рдЦрд╛ рдХрд╛ рдирд╛рдо, рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рднреА рд╣реИ
рдореВрд▓ - рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рджреВрд░рд╕реНрде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдирд╛рдо (рдЖрдк рджреВрд╕рд░рд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ)
рдЪреЗрдХрдЖрдЙрдЯ - рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХреБрдЫ рд░рд╛рдЬреНрдп рд▓реЗрддреЗ рд╣реИрдВред
рд╕рд░рд▓ рд╕рдВрдкрд╛рджрди
рджреЛ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
- рдЧрд┐рдЯ рдХреА рд╕реНрдерд┐рддрд┐
- 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
рд╕рднреА рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдПрдХ рдЦрд╛рд▓реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдХрдорд┐рдЯ рдХрд╣рд╛рдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИред
рд╡рд╣ рд╣рдореЗрдВ рдпрд╣ рдмрддрд╛рдПрдЧрд╛:
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>
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.
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ collider.init.sh рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдЬреЛрдбрд╝реЗрдВ, рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░реЗрдВ рдФрд░ рд╢реБрд░реВ рдХрд░реЗрдВ:
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
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
рдЬрдм рдПрдХ рд╢рд╛рдЦрд╛ рджреВрд╕рд░реЗ рдкрд░ "рдЭреВрда" рдХрд░рддреА рд╣реИ, рддреЛ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЗрд╕рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛, рджреВрд╕рд░реА рд╢рд╛рдЦрд╛, рдФрд░ рд╡рд┐рд▓рдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреВрд╕рд░реА рд╢рд╛рдЦрд╛ рд╣реЛрдЧреАред рд╣рдо рдмрд╕ рдкреБрд░рд╛рдиреЗ рдХрдорд┐рдЯреНрд╕ рд╕реЗ рд▓реЗрдХрд░ рдирдП рддрдХ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд░рд┐рд╡рд╛рдЗрдВрдб (рдПрдХ рд╕рдВрдШ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ) рдХреЛ рдлрд╛рд╕реНрдЯ-рдлреЙрд░рд╡рд░реНрдб рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ рдХреНрдпреЛрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ?
- рд╡рд┐рд▓рдп рдХрд░рддреЗ рд╕рдордп, рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ
- рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдПрд╕реЛрд╕рд┐рдПрд╢рди, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧрд╛рд░рдВрдЯреА
- рд╕рдВрдШрд░реНрд╖ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрднреА рднреА рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрдЧрд╛
- рдХрд╣рд╛рдиреА рд░реИрдЦрд┐рдХ рдмрдиреА рд╣реБрдИ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдХреЛрдИ рд╕рдВрдЧрддрд┐ рдирд╣реАрдВ рдереА), рдЬрд┐рд╕реЗ рдЕрдХреНрд╕рд░ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ
- рдХреЛрдИ рдирдпрд╛ рдХрдорд┐рдЯ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛
рдХреИрд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╕реЗ рдЖрдЧреЗ рдХреНрдпрд╛ рд╕рдВрднрд╡ рд╣реИ? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рджреЛ рд╢рд╛рдЦрд╛рдУрдВ рдкрд░ 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
рдкрд░рд┐рдгрд╛рдо (рд╕реВрдЪрдХ рдХреЗрд╡рд▓ рдЖрдЧреЗ рдмрдврд╝рд╛):

рд╕рдВрдШ
рдЕрдм рд╣рдо
рдХреЛрд▓рд╛рдЗрдбрд░ / рд╕рдорд╛рдкреНрдд рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдЦреАрдВрдЪрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬреЛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдкрдврд╝рд╛ (рд╕рдм рдХреЗ рдмрд╛рдж рдкрдврд╝рд╛, рд╣рд╛рдБ!) рдзреНрдпрд╛рди рджреЗрдВрдЧреЗ рдХрд┐ рдХреЛрдИ рд╕реАрдзрд╛ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрддрдиреА рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд╣рдо рдЙрддрд░реЗрдВрдЧреЗ рдирд╣реАрдВред рдЖрдЗрдП рддреЗрдЬ-рдлреЙрд░рд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдкреВрдЫрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:
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

рд╣рдо
рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╣реИрдВ ,
рд╣реЗрдб рдЙрд╕реА рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдХрдорд┐рдЯ рднреА рд╡рд╣реАрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
рд╣рдореЗрдВ рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдВрдпреЛрдЬрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд╣реИ рдирд╛? рдпрд╣рд╛рдВ рд╕рднреА рдорд░реНрдЬ-рдЯреВрд▓реНрд╕ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдВрдЧреЗред
рд╕рдВрдШрд░реНрд╖ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛
рдЧрд┐рдЯ рдореЗрд░рд┐рдЬреЗрдЯ рдХрдорд╛рдВрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд╣рд░ рдХреЛрдИ рдРрд╕реА рдЯреАрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред
рд╡рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рдХреБрдЫ рдХрд░рддрд╛ рд╣реИ:
- рднрд┐рдиреНрди рдпрд╛ рдорд░реНрдЬ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдкрд╕рдВрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдвреВрдБрдврддрд╛ рд╣реИ рдФрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ
- рдлрд╝рд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдмрдирд╛рддрд╛ рд╣реИ редorig (рдлрд╝рд╛рдЗрд▓ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ)
- рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдмрдирд╛рддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ (рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдереА)
- рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдмрдирд╛рддрд╛ рд╣реИред (рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╢рд╛рдЦрд╛ рдореЗрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рдерд╛)
- рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИред Local (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ)
- рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдм рдХреБрдЫ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╣рдо рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:
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
рдПрдХ рд╕рдВрдкрд╛рджрдХ рдЦреБрд▓реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдВрдЧреЗ: pick 4ea02f5 Added Collider Terminate Function
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдкреЗрд░реЗрд╕реНрддреНрд░реЛрдЗрдХрд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдо рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЦреБрдж рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдорд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛рдиреА
рдЖрдк рдорд╛рдиреНрдпрддрд╛ рд╕реЗ рдкрд░реЗ рд╢рд╛рдЦрд╛ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдЬрд╛рд░реА рд░рдЦреЗрдВред рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреА рддрд░рд╣, рд╣рдо рд╕рдВрдШрд░реНрд╖реЛрдВ рд╕реЗ рдмрдЪ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ: 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
рд╣рдо 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(+)
рдкрд░рд┐рд╡рд░реНрддрди рднреЗрдЬрдирд╛ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ рдХрд┐ рджреВрд░рд╕реНрде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:- рджреВрд░рд╕реНрде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реЗрдВ / рд╣рдЯрд╛рдПрдВ / рдмрджрд▓реЗрдВ
- рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рд╢рд╛рдЦрд╛рдПрдВ, рдЯреИрдЧ, рдХрдорд┐рдЯ)
- рдЕрдкрдирд╛ рдбреЗрдЯрд╛ (рд╢рд╛рдЦрд╛рдПрдВ, рдЯреИрдЧ, рдХрдорд┐рдЯ) рднреЗрдЬреЗрдВ
рдпрд╣рд╛рдВ рдЙрди рдореБрдЦреНрдп рдХрдорд╛рдВрдбреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:git remote
- рджреВрд░рд╕реНрде рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдХрд╛ рдкреНрд░рдмрдВрдзрдиgit fetch
- рдорд┐рд▓рддрд╛ рд╣реИgit pull
- рд╕рдорд╛рди git fetch
+git merge
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 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
рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдорд╛рд╕реНрдЯрд░ рд╣реИрдВ редрдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
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 pull
git рд▓рд╛рдиреЗ рдХреЗ рд╕рдорд╛рди + git рдорд░реНрдЬред рдмреЗрд╢рдХ, рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрдмрдВрдзрд┐рдд рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛: рдорд╛рд╕реНрдЯрд░ рд╕реЗ рдореВрд▓ / рдорд╛рд╕реНрдЯрд░ , рд╕реБрд╡рд┐рдзрд╛ рд╕реЗ рдореВрд▓ / рд╕реБрд╡рд┐рдзрд╛ ред рд╢рд╛рдЦрд╛рдПрдВ рдирд╛рдо рд╕реЗ рдПрдХрдЬреБрдЯ рдирд╣реАрдВ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдХреЛрдИ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрд╕реНрдЯреНрд░реАрдо рдЯреНрд░реИрдХрд┐рдВрдЧ рд╢рд╛рдЦрд╛ рдХреЗ рдХрд╛рд░рдг ред рдЬрдм рд╣рдо рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╢рд╛рдЦрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ git рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд░рддрд╛ рд╣реИ:- рдпрд╣ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕реА рдХреЛрдИ рд╢рд╛рдЦрд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ, рддреЛ рд╡рд╣ рд▓реЗрддрд╛ рд╣реИ
- рдпрджрд┐ рдХреЛрдИ рд╢рд╛рдЦрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдореВрд▓ / <рд╢рд╛рдЦрд╛_рдирд╛рдо> рд╣реИ
- рдЕрдЧрд░ рд╡рд╣рд╛рдБ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ <рдмреНрд░рд╛рдВрдЪ / рдирд╛рдо> рдХреА рдЙрддреНрдкрддреНрддрд┐ / <рдмреНрд░рд╛рдВрдЪ_рдирд╛рдо> рдФрд░ "рд▓рд┐рдВрдХ" рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдмрдирд╛рддрд╛ рд╣реИред рдпреЗ рдмреНрд░рд╛рдВрдЪ (рдмреНрд░рд╛рдВрдЪ <рдмреНрд░рд╛рдВрдЪ_рдирд╛рдо> рдЕрдм рд░рд┐рдореЛрдЯ рдУрд░рд┐рдЬрд┐рди / <рдмреНрд░рд╛рдВрдЪ_рдирд╛рдо> рдЯреНрд░реИрдХ рдХрд░ рд░рд╣рд╛ рд╣реИ )
рдЖрдк рдЗрд╕реЗ .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
рдорд╣рддреНрд╡рдкреВрд░реНрдг : рдЬрдм рдЖрдк рдПрдХ рд╢рд╛рдЦрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕рднреА рдирд╡реАрдирддрдо рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рд╣реИрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╕рдм рдХреБрдЫ рд╡рд╛рдкрд╕ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред Git рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрд╣рд╛рдиреА рд░реИрдЦрд┐рдХ рдмрдиреА рд╣реБрдИ рд╣реИ, рдЖрдкрдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд░реНрддрдорд╛рди (рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ) рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд╣реИрдВред рдЕрдиреНрдпрдерд╛, рдЖрдк рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ:rejected! non fast-forward push!
ред
рдХрднреА-рдХрднреА, рдЬрдм рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: git push origin master --force
рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдпрд╣ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдзрдХреНрдХрд╛, рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЕрдзрд┐рдХ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ рдорд░реНрдЬ рдФрд░ рд░рд┐рдмреЗрд╕ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рд╣реИред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПредрдЬрдм рдХрд┐рд╕реА рд╕реЗ рдкреВрдЫрд╛ рдЬрд╛рддрд╛ рд╣реИ:- рд╣рдореЗрдВ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЬрд╡рд╛рдм рдореЗрдВ рдЖрдк рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ:- рдпрд╣ рдкреНрд░рдгрд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ рддрд╛рдХрд┐ рдХреБрдЫ рднреА рдЦреЛ рди рдЬрд╛рдП рдФрд░ рдЖрдк рд╣рдореЗрд╢рд╛ "рд░реЛрд▓ рдмреИрдХ" рдХрд░ рд╕рдХреЗрдВредрдЕрдм рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рд╕рд╡рд╛рд▓ рдкреВрдЫреЗрдВ: "рдЖрдкрдХреЛ рдХрд┐рддрдиреА рдмрд╛рд░ рд░реЛрд▓ рдмреИрдХ рдХрд░рдирд╛ рд╣реИ?" рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЕрдХреНрд╕рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ? рдИрдорд╛рдирджрд╛рд░ рдЬрд╡рд╛рдм рд╣реИ: "рдмрд╣реБрдд рджреБрд░реНрд▓рднред" рдореИрдВ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреА рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдард╛рддрд╛ рд╣реВрдВ:рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рд╕рд╣рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдбреЗрд╡рд▓рдкрд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдЖрдкрдХреЛ рдЗрд╕рдореЗрдВ рдХрд┐рддрдиреА рдорджрдж рдХрд░рддреА рд╣реИ, рдпрд╣ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╣реИред% VCS_NAME% рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ?
рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛрддрд╛ рд╣реИ? рдЬрд▓реНрджреА?
рддреЛ рдпрд╣% VCS_NAME% рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИредрд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░рд┐рджреГрд╢реНрдп
рдЕрдм рдХреЛрдб рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣:- рд░рд┐рд▓реАрдЬрд╝ рд░рд┐рд▓реАрдЬрд╝
- рдмрдЧ рдлрд┐рдХреНрд╕рд┐рдВрдЧ
- рддрддреНрдХрд╛рд▓ рд╕реБрдзрд╛рд░ (рд╣реЙрдЯрдлрд╝рд┐рдХреНрд╕)
- рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ (рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╡рд┐рдХрд╛рд╕)
- рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдореБрджреНрджрд╛ рдпрд╛ рддрддреНрдкрд░рддрд╛ рдкрд░ рдЬрд╛рд░реА рдХрд░рдирд╛
рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ рдФрд░ рдХреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпреЛрдВрдХрд┐
рд╕рднреА рд╢рд╛рдЦрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣рд▓реНрдХреА рд╢рд╛рдЦрд╛рдПрдБ (рдпрд╛рдиреА, рд╡реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ, рд╕реНрдерд╛рдиреЛрдВ рдЖрджрд┐ рдХреЛ рдЦрд░реНрдЪ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ), рдЖрдк рдЕрд▓рдЧ рд╢рд╛рдЦрд╛рдПрдБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ рдпрд╛ рдЕрд╕рдлрд▓ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред рдорд╛рд╕реНрдЯрд░ рдЖрдо рддреМрд░ рдкрд░ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рд░рдЦрддреА рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рд░рд┐рд▓реАрдЬ рд╕реЗ рд░рд┐рд▓реАрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЯреИрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрддрд┐рд╢рдпреЛрдХреНрддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рд╕реНрдЯрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рдореБрдЦреНрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╢рд╛рдЦрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╡рд╣реА рдЬрд┐рд╕рдореЗрдВ рд╕рдм рдХреБрдЫ рд╡рд┐рд▓реАрди рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЬреЛ рдорд╛рд╕реНрдЯрд░ рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рд╣реЛрдЧреА ред рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдкрд░, рд░рд┐рд▓реАрдЬ рдХреЗ рджреМрд░рд╛рди, рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ред рдЪрд▓реЛ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВрджреЗрд╡ редрдпрджрд┐ рд╣рдореЗрдВ рд╣реЙрдЯрдлрд╝рд┐рдХреНрд╕ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдорд╛рд╕реНрдЯрд░ рд╕реНрдЯреЗрдЯ рдпрд╛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреИрдЧ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддреЗ рд╣реИрдВ , рд╡рд╣рд╛рдВ рдПрдХ рд╣реЙрдЯрдлрд╝рд┐рдХреНрд╕ / рд╕рдВрд╕реНрдХрд░рдг рд╢рд╛рдЦрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдкрд░ рдХрд╛рдо рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдЪрд▓ рд░рд╣реЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИредрд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛ / <feature_name> рд╢рд╛рдЦрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ ред рд╕рдмрд╕реЗ рд╣рд╛рд▓ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдФрд░ рд╕рдордп-рд╕рдордп рдкрд░ рдЕрдкрдиреЗ рдЖрдк рдХреЛ "рдкреБрд▓" рд╕реЗ рджреЗрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ ред рдХрд╣рд╛рдиреА рдХреЛ рд╕рд░рд▓ рдФрд░ рд░реИрдЦрд┐рдХ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рджреЗрд╡ ( git rebase dev
) рдкрд░ рд╢рд╛рдЦрд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ редрдорд╛рдЗрдирд░ рдмрдЧ рдлрд┐рдХреНрд╕ рд╕реАрдзреЗ рджреЗрд╡ рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдорд╛рдореВрд▓реА рдХреАрдбрд╝реЗ рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП, рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЕрд╕реНрдерд╛рдпреА рд╢рд╛рдЦрд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдЙрдиреНрд╣реЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рднрдВрдбрд╛рд░ рдореЗрдВ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпреЗ рдХреЗрд╡рд▓ рдЖрдкрдХреА рдЕрд╕реНрдерд╛рдпреА рд╢рд╛рдЦрд╛рдПрдБ рд╣реИрдВред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрдИ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛:- рдЖрдк рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдмрдЧ рдкрд░ рдЕрдЯрдХ рдЧрдпрд╛, рджреЗрд╡ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛, рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ рдмрдирд╛рдИ рдФрд░ рджреВрд╕рд░реЗ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛, рдлрд┐рд░ рдкрд╣рд▓реЗ рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ред рддрд╛рдЬрд╝рд╛ рдХрд┐рдпрд╛, рд╕рдм рдХреБрдЫ рддреНрдпрд╛рдЧ рджрд┐рдпрд╛ рдФрд░ рдПрдХ рддрд┐рд╣рд╛рдИ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред
- рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрд╛рджрди рдкрд░ рдЧрдВрднреАрд░ рд╣реЛ рдЧрдИ - рдЙрдиреНрд╣реЛрдВрдиреЗ рд░рд┐рдмрд╛рд╕ рд╢рд╛рдЦрд╛ рдХреЛ рдорд╛рд╕реНрдЯрд░ рдпрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЙрдЯрдлрд╝рд┐рдХреНрд╕ рдкрд░ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдФрд░ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд┐рдпрд╛ред
- рдЙрд╕реА рддрд░рд╣, рдЖрдк рдХрд╛рд░реНрдп рдХреЛ рдЕрдиреНрдп рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реБрд╡рд┐рдзрд╛- рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ
- рдкрд░рд┐рд╡рд░реНрддрди рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рд╢рд╛рдЦрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдХрдВрдШреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдорд┐рдЯреНрд╕ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╕рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд┐
рдмрдЧ рдареАрдХ рдХрд░рдирд╛
рдЪрд▓реЛ рдПрдХ рджреЗрд╡ рд╢рд╛рдЦрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрдЧ рдлрд┐рдХреНрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред dev1(master)$ git status
рдФрд░ рджреВрд╕рд░рд╛ рдбреЗрд╡рд▓рдкрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ "рд▓реЗрддрд╛ рд╣реИ": 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
:
"рдЪрд▓рд╛рдИ рд╣рдо рдПрдХ рдЖрдЧреЗ рд╣реИ┬╗ рдорд╛рд╕реНрдЯрд░, рд▓реЗрдХрд┐рди "рдЬрд╛рдирд╛" рджреЗрд╡ рдерд╛ ред рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВредрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:- рдЪреВрдВрдХрд┐ рдХреЛрдИ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдереЗ, рдЗрд╕рд▓рд┐рдП рджреЗрд╡ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ
- рдорд╛рд╕реНрдЯрд░ рд╕реЗ рджреЗрд╡ рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдПрдВ , рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ (рд╕реАрдзрд╛ рд░рд╛рд╕реНрддрд╛, рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ , рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ)
- рд╣рдо рд╕рд╣реА рджреЗрд╡ рдХреЛ рдЪрд▓рд╛рдПрдВрдЧреЗ рдФрд░ рдЧрд▓рдд рдЧреБрд░реБ рдХреЛ рдкреБрд░рд╛рдиреЗ, рд╕рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗ, рдЬрд╣рд╛рдБ рдпрд╣ рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛ ( рдореВрд▓ / рд╕реНрд╡рд╛рдореА рдкрд░ )
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реА рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрд░рд╣ рдЬрдЯрд┐рд▓ рд╣реИред рд▓реЗрдХрд┐рди, рдпрджрд┐ рдЖрдк рджреЗрдЦреЗрдВ, рддреЛ рдЬреЛ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЙрд╕рдХрд╛ рд╡рд░реНрдгрди рд╕реНрд╡рдпрдВ рдХрд╛рд░реНрдп рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╣реИред рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдРрд╕рд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред рдЪрд▓рд┐рдП рдЕрднреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддреЗ рд╣реИрдВ: dev2(master)$ git checkout dev
рдЖрдЗрдП рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ:
рдЕрдм, рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рд╣рдорд╛рд░реЗ рдкрд░рд┐рд╡рд░реНрддрди рджреЗрд╡ рдореЗрдВ рд╣реИрдВ рдФрд░ рдореВрд▓ рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВредрд╣рдо рдкрд╛рд╕: 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
рд╣рдорд╛рд░реЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:- рдЬреЛ рдХреБрдЫ рднреА рдерд╛ рдЙрд╕реЗ рдорд┐рдЯрд╛рдХрд░ рд╣рдорд╛рд░реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЬрдмрд░рди рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ:
git push origin dev --force
- рд╢рд╛рдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВ
git merge origin/dev
рдФрд░ рдлрд┐рд░ git push origin dev
(рдЕрдкрдиреЗ рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рд╕рд╛рде рдирдП рдкрд░рд┐рд╡рд░реНрддрди рдорд░реНрдЬ рдХрд░реЗрдВ) - рд╣рдорд╛рд░реА рд╢рд╛рдЦрд╛ рдХреЛ рдирдП рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдБ, рдЬреЛ рд╡рд┐рдХрд╛рд╕ рдХреНрд░рдо рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдЧрд╛ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╢рд╛рдЦрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛:
git rebase origin/dev
рдФрд░ рдлрд┐рд░ git push origin dev
ред
рд╕рдмрд╕реЗ рдЖрдХрд░реНрд╖рдХ рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдореЛрдб рдореЗрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ: dev2(dev)$ git rebase -i 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
рдкреЗрд░реЗрд╕реНрддреНрд░реЛрдЗрдХрд╛ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЯрдХрд░рд╛рд╡ рдкреИрджрд╛ рд╣реЛрдВрдЧреЗред рд╣рдо рдЙрдиреНрд╣реЗрдВ 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
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╣рд╛рдиреА рджреЛрд╣рд░рд╛рддреА рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдХрдИ рдмрдЧреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрд╛рдо рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рджреЗрд╡ рдпрд╛ рдЙрддреНрдкрддреНрддрд┐ / рджреЗрд╡ рд╕реЗ рдЕрд▓рдЧ рд╢рд╛рдЦрд╛рдПрдБ рдмрдирд╛рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ редрд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢ : рд╕рд╛рдорд╛рдиреНрдп рдмрдЧ рдлрд┐рдХреНрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд░рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:- рджреЗрд╡ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдпрд╛ рдЕрд▓рдЧ
- рдЙрддреНрдкрддреНрддрд┐ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди (
git fetch origin
) - рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдБ (
git rebase -i origin/dev
) - рдЙрддреНрдкрддреНрддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди (
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
рдЕрдм рдлреАрдЪрд░ 1 рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реА рд╢рд╛рдЦрд╛ рдореЗрдВ рдХрдИ рдХрдорд┐рдЯ рд╣реЛрдВрдЧреЗ, рдФрд░ рдлреАрдЪрд░ 1 рдкрд░ рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╕рд╛рде рд╣реА рджреЗрд╡ рдореЗрдВ рднреА рдХрдИ рдмрджрд▓рд╛рд╡ рд╣реЛрдВрдЧреЗред рдФрд░ рд╣рдорд╛рд░рд╛ рдХрд╛рдо рд╣рдорд╛рд░реЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рджреЗрд╡ рдХреЛ рд╕реМрдВрдкрдирд╛ рд╣реИ редрдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
рд╕реНрдерд┐рддрд┐ рдкрд┐рдЫрд▓реА рдПрдХ рдЬреИрд╕реА рд╣реИ: рджреЛ рд╢рд╛рдЦрд╛рдПрдВ, рдПрдХ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рдХрд░рдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдВрддрд░ рдХреЗрд╡рд▓ рджреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ (рджреВрд░рд╕реНрде) рд╢рд╛рдЦрд╛рдУрдВ рдХрд╛ рд╣реИ, рд╕реНрдерд╛рдиреАрдп рд▓реЛрдЧреЛрдВ рдХрд╛ рдирд╣реАрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рдВрдЪрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬрдм рдХрд╛рдо рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рджреВрд╕рд░реЗ рдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд╣ рджреЗрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ "рдорд░реНрдЬ" рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рд╛рдЦрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдХреБрдЫ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╡реНрдпрд░реНрде рд╣реЛрдЧрд╛редрдФрд░ рдлрд┐рд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рдЧрднрдЧ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдерд╛: git fetch origin
рдЪрд┐рддреНрд░, рдлреАрдЪрд░ 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
рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рдиреЗ рд╡рд╛рд▓реА рд╕реБрд╡рд┐рдзрд╛ рд╢рд╛рдЦрд╛рдПрдВ
рдЙрдирдХреЗ рд╕рдорд░реНрдерди рдФрд░ рдЕрджреНрдпрддрди рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рдиреЗ рд╡рд╛рд▓реА рд╢рд╛рдЦрд╛рдУрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ред рдпрджрд┐ рдЖрдк рдКрдкрд░ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ рд╕рдм рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдЖрдкрджрд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ: рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдореБрдЦреНрдп рд╢рд╛рдЦрд╛ рдмрджрд▓ рд░рд╣реА рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрджрд▓ рд░рд╣реА рд╣реИ, рдФрд░ рдЖрдкрдХреА рд╕реБрд╡рд┐рдзрд╛ рдмрд╣реБрдд рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЬрдм рдХрд┐рд╕реА рдлреАрдЪрд░ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдмрд╛рд╣рд░ рдЦрдЯрдЦрдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рддрд╛рдХрд┐ рдпреВрдирд┐рдпрди рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдпрд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рдПред рдЗрд╕рд▓рд┐рдП рдмреНрд░рд╛рдВрдЪ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдмрд╛рд░ рдЬрдм рджреЗрд╡ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдордп-рд╕рдордп рдкрд░ рджреЗрд╡ рд╕реЗ рд╣рдорд╛рд░реА рд╢рд╛рдЦрд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗредрд╕рдмрдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдк рд╕рд┐рд░реНрдл рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢рд╛рдЦрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд░рд┐рдмреЗрд╕ рдХреЗ рдмрд╛рдж рдХреА рд╢рд╛рдЦрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдирдпрд╛ рд╕реЗрдЯ рд╣реИ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рд╣реИред рд╡рд╣ рдЬрд╛рд░реА рдирд╣реАрдВ рд░рдЦрддреА рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред 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
рдореБрдЦреНрдп рджреЗрд╡ рд╢рд╛рдЦрд╛ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╣рд┐рдЯ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдХрд╣рд╛рдиреА рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧреА:
рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ / рд▓рдВрдмреА рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ , рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рдЕрд▓рдЧ рд╕реЗ рдЬрд╛рд░реА рд░рд╣реЗрдЧрд╛ред рджреЗрд╡ рез рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЛред рдлрд┐рд░ рд╡рд╣ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЗрд╡ 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
рдЕрдЧрд░ рд╣рдореЗрдВ 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
рд╡реЗ рд╣реЙрдЯрдлрд╝рд┐рдХреНрд╕
рд╣реЙрдЯрдлрд┐рдХреНрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреАрдбрд╝реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдЖрдк рд╣реЙрдЯрдлрд╝рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдЕрдВрддрд┐рдо рдХреЛрдб рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред рдХреЗрд╡рд▓ рдЗрд╕ рд╕реБрдзрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬ рдХреЛ рд▓реЗрдВ, рдЬрд┐рд╕реЗ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдкрдиреЗ рдЯреИрдЧ рдпрд╛ рдорд╛рд╕реНрдЯрд░ рдЫреЛрдбрд╝рд╛ рд╣реИ ред рдЯреИрдЧ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рдХрд╣рд╛рдВ рд╕реЗ рдорд┐рд▓рд╛редрдЯреИрдЧ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ 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
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
-
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
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
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
рдЕрдм рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рдореЛрдб рдореЗрдВ, рдЖрдк рдкрд╣рд▓реЗ рджреЛ рдХреЛ рдПрдХ рдФрд░ рдЕрдВрддрд┐рдо рдЪрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ (рд╕реНрдХреНрд╡реИрд╢)ред рдлрд┐рд░ рдХрд╣рд╛рдиреА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА: 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 рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:- рдмрд┐рд▓реНрдб рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рд╢рд╛рдЦрд╛ рдмрдирд╛рдИ рдЧрдИ рдереА, рдЬрд╣рд╛рдБ рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╡рд┐рд▓реАрди рд╣реЛ рдЧрдИрдВ (
git merge --no-ff
) - рд╢рд╛рдЦрд╛ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
- рдЗрд╕рдХреА рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдЬрд╛рд░реА рд░рд╣рд╛
- рдирдП рдкрд░рд┐рд╡рд░реНрддрди рдлрд┐рд░ рд╕реЗ рд╡рд┐рд▓рдп (
git merge --no-ff
) - , .
- - , dev .
- , ,
рдирд┐рд╖реНрдХрд░реНрд╖
- Git , , . .
- git, , - , . .
- git " , ". . .
- . , git, git' , . , git gui plugin for %YOUR_IDE%, .
- . 2 , , - . wiki .
- , , , , , , - git .
- , , - git .
gcc рдиреЗ Git рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА редborNfree рдиреЗ рдПрдХ рдЕрдиреНрдп рд╕реНрд░реЛрдд рдЯреНрд░реА GUI рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ редzloylos рдиреЗ gitolancheg рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рджреЗрдЦрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЧрдпрд╛ редрдкреБрдирд╢реНрдЪред рд╣рдм рдкрд░ рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдХреЗ рд╕рдордп рд╡реЗ рдЖрдо рддреМрд░ рдкрд░ рдХреНрдпрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ? рдХреГрдкрдпрд╛ рдХрдбрд╝рд╛рдИ рд╕реЗ рдиреНрдпрд╛рдп рди рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рдерд╛ред