рдЬреАрдЖрдИрдЯреА рд╕рд░реНрд╡рд░ рдкрд░ рдмрд╣реБ-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣реБрдВрдЪ рдХрд╛ рд╕рдВрдЧрдарди

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

рдореЗрд░реА рдЗрдЪреНрдЫрд╛рдПрдБ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

  • рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдЦрд╛рддреЗ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ
  • рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
  • рдПрдХ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ
  • рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рддрдХ рдкрд╣реБрдБрдЪ рд╣реЛрддреА рд╣реИ, рдЬрд┐рди рдкрд░ рд╡рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
  • рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ

рдпрд╣ рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛:

  • рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ
  • Git рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЕрдиреБрдорддрд┐ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ

GIT рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЪреБрдирдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЧрд┐рдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрд╡рд▓реЛрдХрдиред

  • ssh - рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
    • рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ Git рд╕рднреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрд▓ рдЦрд╛рддреЗ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдореЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
    • рдЖрдк рдХрдИ рдЦрд╛рддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рддрдХ рдХреИрд╕реЗ рд╕реАрдорд┐рдд рдХрд░реЗрдВ?

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

        • рдЖрдк рдРрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрдорд╛рдВрдб рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рднреА рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди,

          • рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдХрдард┐рди рдирд┐рд░реНрдгрдп рд╣реИ,
          • рдФрд░ 2 рдореЗрдВ, рдЗрд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рднреА рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛? .. рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рд╣рдо рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рдкрд░ рд▓реМрдЯ рдЖрдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЕрдм рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рд╢рд╛рдпрдж рд╡рд╣рд╛рдВ рдХреБрдЫ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
  • Git рд╕реНрдерд╛рдиреАрдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ sshfs рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдкрд┐рдЫрд▓реЗ рдорд╛рдорд▓реЗ рдЬреИрд╕рд╛ рд╣реА рд╣реИ
  • http - рдХреЗрд╡рд▓ рдкрдврд╝рд╛
  • git рдХреЛ рд╣реА рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ
  • https - рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╣реБрдВрдЪ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рдХрдХреНрд╖ ... рд╕рдВрднрд╡ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрд░рд╣ рдЬрдЯрд┐рд▓ рд╣реИред

Git рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдорд▓реНрдЯреА-рдпреВрдЬрд╝рд░ рдПрдХреНрд╕реЗрд╕ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП ssh рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рд╡рд╛рдкрд╕ ssh рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкрд░ред

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

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

рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, ssh рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЧрд┐рдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИред

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

1) рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛

dir1 (proj1: proj1,0770)
dir2 (proj2: proj2,0770)
dir3 (proj3: proj3,0770)
...
рдЬрд╣рд╛рдБ
dir1, dir2, dir3 - рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛: рдкрд░рд┐рдпреЛрдЬрдирд╛ 1, рдкрд░рд┐рдпреЛрдЬрдирд╛ 2, рдкрд░рд┐рдпреЛрдЬрдирд╛ 3ред

proj1: proj1, proj2: proj2, proj3: proj3 - рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд▓рд┐рдирдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдорд╛рд▓рд┐рдХ рдирд┐рдпреБрдХреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рд╕рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ 0770 рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ - рдорд╛рд▓рд┐рдХ рдФрд░ рдЙрд╕рдХреЗ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрд╣реБрдВрдЪ рдФрд░ рдмрд╛рдХреА рд╕рднреА рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкреНрд░рддрд┐рдмрдВрдзред

2) рдбреЗрд╡рд▓рдкрд░ рдЦрд╛рддреЗ

рдбреЗрд╡рд▓рдкрд░ 1: dev1: dev1, proj1, proj2
рдбреЗрд╡рд▓рдкрд░ 2: рджреЗрд╡ 2: рджреЗрд╡ 2, рдкреНрд░реЛрдЬ 2, рдкреНрд░реЛрдЬ 3

рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдореВрд╣ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИред рдпрд╣ рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рджреНрд╡рд╛рд░рд╛ рдПрдХрд▓ рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, "рдбреЗрд╡рд▓рдкрд░ 1" proj1 рдФрд░ proj2 рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ "Developer 2" proj2 рдФрд░ proj3 рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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

рдЪреВрдВрдХрд┐ рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЖрдзрд╛рд░ рд▓рд┐рдирдХреНрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдмреБрдирд┐рдпрд╛рджреА рд╕реБрд░рдХреНрд╖рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдпреЛрдЬрдирд╛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдпреЛрдЬрдирд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

рдЕрднреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрд╡рд░ рдкрд░ Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдирд╛


рд╣рдо рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред

[root@server ~]# cd /var/ [root@server var]# useradd gitowner [root@server var]# mkdir gitservertest [root@server var]# chown gitowner:gitowner gitservertest [root@server var]# adduser proj1 [root@server var]# adduser proj2 [root@server var]# adduser proj3 [root@server var]# adduser dev1 [root@server var]# adduser dev2 [root@server var]# passwd dev1 [root@server var]# passwd dev2 

рдореЗрд░реЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдЯрд╛рдЗрдк рдХрд░рддреЗ рдердХ рдЧрдП ...

 [root@server gitservertest]# sed "s/ /\n/g" <<< "proj1 proj2 proj3" | while read u; do mkdir $u; chown $u:$u $u; chmod 0770 $u; done [root@server gitservertest]# usermod -aG proj1 dev1 [root@server gitservertest]# usermod -aG proj2 dev1 [root@server gitservertest]# usermod -aG proj2 dev2 [root@server gitservertest]# usermod -aG proj3 dev2 

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

 [dev1@server ~]$ cd /var/gitservertest/proj3 -bash: cd: /var/gitservertest/proj3: Permission denied [dev1@server ~]$ ls /var/gitservertest/proj3 ls: cannot open directory /var/gitservertest/proj3: Permission denied 

рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЧрд┐рдЯ рдореЗрдВ рд╕рд╣рдпреЛрдЧ


рдПрдХ рдкреНрд░рд╢реНрди рдпрд╣ рд░рд╣рддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рдбреЗрд╡рд▓рдкрд░ рдХрд┐рд╕реА рдирдИ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ, рддреЛ рдмрд╛рдХреА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЙрд╕реЗ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рд╕реНрд╡рдпрдВ рдЗрд╕рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, dev1), рди рдХрд┐ рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЬреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, proj1)ред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд░реНрд╡рд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ ".рдЧрд┐рдд" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдХреНрдпрд╛ рдирдИ рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдИ рдЬрд╛рдПрдВред

рдПрдХ рд╕реНрдерд╛рдиреАрдп Git рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдирд╛ рдФрд░ Git рд╕рд░реНрд╡рд░ рдкрд░ рдкреБрд╢ рдХрд░рдирд╛


рдЪрд▓реЛ рдЧреНрд░рд╛рд╣рдХ рдорд╢реАрди рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред

 Microsoft Windows [Version 6.1.7601] (c)   (Microsoft Corp.), 2009.   . C:\gittest>git init . Initialized empty Git repository in C:/gittest/.git/ C:\gittest>echo "test dev1 to proj2" > test1.txt C:\gittest>git add . C:\gittest>git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: test1.txt C:\gittest>git commit -am "new test file added" [master (root-commit) a7ac614] new test file added 1 file changed, 1 insertion(+) create mode 100644 test1.txt C:\gittest>git remote add origin "ssh://dev1@10.1.1.11/var/gitservertest/proj2" C:\gittest>git push origin master dev1:dev1@10.1.1.11's password: Counting objects: 3, done. Writing objects: 100% (3/3), 243 bytes | 243.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) To ssh://10.1.1.11/var/gitservertest/proj2 * [new branch] master -> master C:\gittest> 

рдЙрд╕реА рд╕рдордп, рд╕рд░реНрд╡рд░ рдкрд░ рдирдИ рдлрд╛рдЗрд▓реЗрдВ рдмрдирддреА рд╣реИрдВ, рдФрд░ рд╡реЗ рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдкреБрд╢ рдЖрдЙрдЯ рдХрд░рддреЗ рд╣реИрдВ

 [dev1@server proj2]$ tree . тФЬтФАтФА 1.txt тФЬтФАтФА branches тФЬтФАтФА config тФЬтФАтФА description тФЬтФАтФА HEAD тФЬтФАтФА hooks тФВ  тФЬтФАтФА applypatch-msg.sample тФВ  тФЬтФАтФА commit-msg.sample тФВ  тФЬтФАтФА post-update.sample тФВ  тФЬтФАтФА pre-applypatch.sample тФВ  тФЬтФАтФА pre-commit.sample тФВ  тФЬтФАтФА prepare-commit-msg.sample тФВ  тФЬтФАтФА pre-push.sample тФВ  тФЬтФАтФА pre-rebase.sample тФВ  тФФтФАтФА update.sample тФЬтФАтФА info тФВ  тФФтФАтФА exclude тФЬтФАтФА objects тФВ  тФЬтФАтФА 75 тФВ  тФВ  тФФтФАтФА dcd269e04852ce2f683b9eb41ecd6030c8c841 тФВ  тФЬтФАтФА a7 тФВ  тФВ  тФФтФАтФА ac6148611e69b9a074f59a80f356e1e0c8be67 тФВ  тФЬтФАтФА f0 тФВ  тФВ  тФФтФАтФА 82ea1186a491cd063925d0c2c4f1c056e32ac3 тФВ  тФЬтФАтФА info тФВ  тФФтФАтФА pack тФФтФАтФА refs тФЬтФАтФА heads тФВ  тФФтФАтФА master тФФтФАтФА tags 12 directories, 18 files [dev1@server proj2]$ ls -l objects/75/dcd269e04852ce2f683b9eb41ecd6030c8c841 -r--r--r--. 1 dev1 dev1 54 Jun 20 14:34 objects/75/dcd269e04852ce2f683b9eb41ecd6030c8c841 [dev1@server proj2]$ 

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

рд▓рд┐рдирдХреНрд╕ рдЪрд╛рдЙрди - рдПрдХ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рд▓рд┐рдХ рдХреЛ рдмрджрд▓рдирд╛



рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕реНрд╡рд╛рдореА рдЕрдкрдирд╛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╣ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдореВрд╣ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдЙрд╕реА рд╕рдореВрд╣ рдореЗрдВ рд╣реИрдВред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред

рдЧрд┐рдЯ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рд╣реБрдХ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣реИред рд╣реБрдХ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реИ рдЬреЛ рдкреБрд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рддрд╣рдд рдЪрд▓рддрд╛ рд╣реИред рдЗрд╕реЗ рдЬрд╛рдирдХрд░ рд╣рдо рдЕрдкрдиреА рдпреЛрдЬрдирд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 [dev1@server proj2]$ mv hooks/post-update{.sample,} [dev1@server proj2]$ sed -i '2,$ s/^/#/' hooks/post-update [dev1@server proj2]$ cat <<< 'find . -group $(whoami) -exec chgrp proj2 '"'"'{}'"'"' \;' >> hooks/post-update 

рдпрд╛ рддреЛ рдмрд╕

 vi hooks/post-update 

рдХреНрд▓рд╛рдЗрдВрдЯ рдорд╢реАрди рдкрд░ рд╡рд╛рдкрд╕ред

 C:\gittest>echo "dev1 3rd line" >> test1.txt C:\gittest>git commit -am "3rd from dev1, testing server hook" [master b045e22] 3rd from dev1, testing server hook 1 file changed, 1 insertion(+) C:\gittest>git push origin master dev1:dev1@10.1.1.11's password: d22c66e..b045e22 master -> master 

Git рд╕рд░реНрд╡рд░ рдкрд░, рд╣рдо рд╣реБрдХ рдкреЛрд╕реНрдЯ-рдЕрдкрдбреЗрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдмрд╛рдж рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ

 [dev1@server proj2]$ find . ! -group proj2 

- рдЦрд╛рд▓реА, рд╕рдм рдареАрдХ рд╣реИред

Git рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛


рд╣рдо рджреВрд╕рд░реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдХрд╛рдо рдХреА рдирдХрд▓ рдХрд░реЗрдВрдЧреЗред

рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░

 C:\gittest>git remote remove origin C:\gittest>git remote add origin "ssh://dev2@10.1.1.11/var/gitservertest/proj2" C:\gittest>echo "!!! dev2 added this" >> test1.txt C:\gittest>echo "!!! dev2 wrote" > test2.txt C:\gittest>git add test2.txt C:\gittest>git commit -am "dev2 added to test1 and created test2" [master 55d49a6] dev2 added to test1 and created test2 2 files changed, 2 insertions(+) create mode 100644 test2.txt C:\gittest>git push origin master dev2@10.1.1.11's password: b045e22..55d49a6 master -> master 

рдФрд░ рдЙрд╕реА рд╕рдордп, рд╕рд░реНрд╡рд░ рдкрд░ ...

 [dev1@server proj2]$ find . ! -group proj2 

- рдлрд┐рд░ рд╕реЗ рдЦрд╛рд▓реА, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

Git Project рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ Git рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛


рдареАрдХ рд╣реИ, рдЖрдк рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИрдВред

 C:\gittest>rd /S /Q .       ,       . 

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

 C:\gittest>dir   C:\gittest 21.06.2019 08:43 <DIR> . 21.06.2019 08:43 <DIR> .. C:\gittest>git clone ssh://dev2@10.1.1.11/var/gitservertest/proj2 Cloning into 'proj2'... dev2@10.1.1.11's password: C:\gittest>cd proj2 C:\gittest\proj2>dir   C:\gittest\proj2 21.06.2019 08:46 <DIR> . 21.06.2019 08:46 <DIR> .. 21.06.2019 08:46 114 test1.txt 21.06.2019 08:46 19 test2.txt C:\gittest\proj2>type test1.txt "test dev1 to proj2" "dev1 added some omre" "dev1 3rd line" "!!! dev2 added this" C:\gittest\proj2>type test2.txt "!!! dev2 wrote" 

Git рдореЗрдВ рдкрд╣реБрдВрдЪ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛


рдЕрдм рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд▓реЗрдВ рдХрд┐ Git рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА, рджреВрд╕рд░реЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ Proj1 рдкрд░рд┐рдпреЛрдЬрдирд╛ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

 C:\gittest\proj2>git remote remove origin C:\gittest\proj2>git remote add origin "ssh://dev2@10.1.1.11/var/gitservertest/proj1" C:\gittest\proj2>git push origin master dev2@10.1.1.11's password: fatal: '/var/gitservertest/proj1' does not appear to be a git repository fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 

рдЕрдм рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ

 [root@server ~]# usermod -aG proj1 dev2 

рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

 C:\gittest\proj2>git push origin master dev2@10.1.1.11's password: To ssh://10.1.1.11/var/gitservertest/proj1 * [new branch] master -> master 

рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ CentOS рдореЗрдВ рдЖрдк рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

 setfacl -Rd -mo::5 -mg::7 /var/gitservertest 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд▓реЗрдЦ рдореЗрдВ рдЖрдк рдЫреЛрдЯреА рдЙрдкрдпреЛрдЧреА рдЪреАрдЬреЛрдВ рдкрд░ рдареЛрдХрд░ рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

  • рд▓рд┐рдирдХреНрд╕ рдкрд░ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдЯреНрд░реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреИрд╕реЗ рдХрд░реЗрдВ
  • рдлрд╝рд╛рдЗрд▓ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реЗрдЦрд╛ рд╕реЗ рдЕрдВрдд рддрдХ рдкрддреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ, рдХрд┐ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ sed рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП
  • рдЦреЛрдЬ рд╢рдмреНрдж рдХреЛ рдЙрд▓рдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рдХреИрд╕реЗ рдЦреЛрдЬреЗрдВ
  • рдХреИрд╕реЗ рдПрдХ рдПрдХрд▓ рд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд▓реВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рд╢реЗрд▓ рдореЗрдВ
  • рдХреИрд╕реЗ рдмреИрд╢ рдореЗрдВ рдПрдХрд▓ рдЙрджреНрдзрд░рдг рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП
  • рдХреИрд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП
  • рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдЙрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП bash mv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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


All Articles