GIT рд╕рд░реНрднрд░рдорд╛ рдмрд╣реБ-рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣реБрдБрдЪрдХреЛ рд╕рдВрдЧрдарди

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

рдореЗрд░реЛ рдЪрд╛рд╣рдирд╛рд╣рд░реБ рдирд┐рдореНрди рдЫрдиреН:

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

рдпреЛ рдкрдирд┐ рд░рд╛рдореНрд░реЛ рд╣реБрдиреЗрдЫ:

  • рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрдиреЗ рд╡реНрдпрдХреНрддрд┐рд╣рд░реВрд▓рд╛рдИ рдкрдвреНрдиреЗ рдорд╛рддреНрд░ рдЕрдиреБрдорддрд┐ рджрд┐рдиреБрд╣реЛрд╕реН
  • Git рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдкрдорд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреБрд╣реЛрд╕реН

GIT рд╕рд░реНрднрд░ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдореНрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрдХреЛ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди

рд╕рдмреИ рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рддрдкрд╛рдИрд▓реЗ рдХреЗ рдЫрдиреМрдЯ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдЬрд╛рдиреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдпрд╣рд╛рдБ Git рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВрдХреЛ рджреНрд░реБрдд рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди рдЫред

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

    рддрд░ рд╕рд╛рдпрдж рдпреЛ рдХреБрдиреИ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЗрди рдХрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдХреБрдиреИ рдкрдирд┐ рдЖрджреЗрд╢рд╣рд░реВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫ?... рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпреЛ рд╡рд┐рдзрд┐рд▓рд╛рдИ рдЗрдиреНрдХрд╛рд░ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрди рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдерд╛рд╣рд╛ рдкрд╛рдЙрдиреБ рднрдпреЛ рднрдиреЗред рд╣рд╛рдореА рдкрдЫрд┐ рдпреЛ рд╡рд┐рдзрд┐рдорд╛ рдлрд░реНрдХрдиреЗрдЫреМрдВ, рддрд░ рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдЫреЛрдЯрдХрд░реАрдорд╛ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреЗрдЫреМрдВ, рд╕рд╛рдпрдж рддреНрдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рд╕рд░рд▓ рд╣реБрдиреЗрдЫред

  • git рд╕реНрдерд╛рдиреАрдп рдкреНрд░реЛрдЯреЛрдХрд▓ sshfs рд╕рдБрдЧ рд╕рдВрдпреЛрдЬрдирдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдзреЗрд░реИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рддрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛ рдЕрдШрд┐рд▓реНрд▓реЛ рдХреЗрд╕ рдЬрд╕реНрддреИ
  • http - рдкрдвреНрдиреЗ рдорд╛рддреНрд░
  • git рдкрдвреНрдиреЗ рдорд╛рддреНрд░ рд╣реЛ
  • https - рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЧрд╛рд╣реНрд░реЛ рдЫ, рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдлреНрдЯрд╡реЗрдпрд░ рдЪрд╛рд╣рд┐рдиреНрдЫ, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣реБрдБрдЪ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рдХреЗрд╣реА рдкреНрд░рдХрд╛рд░рдХреЛ рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрдпрд╛рдирд▓... рдпреЛ рд╕рдореНрднрд╡ рджреЗрдЦрд┐рдиреНрдЫ, рддрд░ рдХреБрдиреИ рди рдХреБрдиреИ рд░реВрдкрдорд╛ рд╕рдмреИ рдЬрдЯрд┐рд▓ рдЫред

Git рд╕рд░реНрднрд░рдорд╛ рдмрд╣реБ-рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣реБрдБрдЪ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди ssh рдкреНрд░реЛрдЯреЛрдХрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

ssh рдкреНрд░реЛрдЯреЛрдХрд▓рдорд╛ рдлрд░реНрдХреМрдВред

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

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

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

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

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: dev2:dev2,proj2,proj3

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

рдпрд╕ рдЙрджрд╛рд╣рд░рдгрдорд╛, "рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ 1" рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВ proj1 рд░ proj2 рдорд╛ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫ, рд░ "рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ 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

Git рдорд╛ рдПрдЙрдЯреИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдмрд╣реБ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд╕рдБрдЧ рд╕рд╣рдХрд╛рд░реНрдп рдЧрд░реНрдиреБрд╣реЛрд╕реН

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

рд╕реНрдерд╛рдиреАрдп 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://[email protected]/var/gitservertest/proj2"

C:gittest>git push origin master
dev1:[email protected]'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]$

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

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

рдлрд╛рдЗрд▓рдХреЛ рдорд╛рд▓рд┐рдХрд▓реЗ рдпрд╕рдХреЛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрджреИрдиред рддрд░ рдЙрд╕рд▓реЗ рдЖрдлреНрдиреЛ рдлрд╛рдЗрд▓рдХреЛ рд╕рдореВрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдлрд╛рдЗрд▓ рдЕрдиреНрдп рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рдЬреЛ рд╕рдорд╛рди рд╕рдореВрд╣рдорд╛ рдЫрдиреН рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рдорд╛рд░реНрдЬрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдХреБрд░рд╛ рдпрд╣реА рд╣реЛред

Git рд╣реБрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ

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

[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:[email protected]'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://[email protected]/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
[email protected]'s password:
   b045e22..55d49a6  master -> master

рд░ рдПрдХреИ рд╕рдордпрдорд╛, рд╕рд░реНрднрд░рдорд╛ ...

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

- рдлреЗрд░рд┐ рдЦрд╛рд▓реА, рд╕рдмреИ рдХрд╛рдо рдЧрд░реНрджрдЫред

Git рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдЯрд╛рдЙрдБрджреИ рд░ Git рд╕рд░реНрднрд░рдмрд╛рдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрджреИ

рдард┐рдХ рдЫ, рддрдкрд╛рдЗрдБ рдПрдХ рдкрдЯрдХ рдлреЗрд░рд┐ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рд╕рдмреИ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред

C:gittest>rd /S /Q .
╨Я╤А╨╛╤Ж╨╡╤Б╤Б ╨╜╨╡ ╨╝╨╛╨╢╨╡╤В ╨┐╨╛╨╗╤Г╤З╨╕╤В╤М ╨┤╨╛╤Б╤В╤Г╨┐ ╨║ ╤Д╨░╨╣╨╗╤Г, ╤В╨░╨║ ╨║╨░╨║ ╤Н╤В╨╛╤В ╤Д╨░╨╣╨╗ ╨╖╨░╨╜╤П╤В ╨┤╤А╤Г╨│╨╕╨╝ ╨┐╤А╨╛╤Ж╨╡╤Б╤Б╨╛╨╝.

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

C:gittest>dir
 ╨б╨╛╨┤╨╡╤А╨╢╨╕╨╝╨╛╨╡ ╨┐╨░╨┐╨║╨╕ C:gittest

21.06.2019  08:43    <DIR>          .
21.06.2019  08:43    <DIR>          ..

C:gittest>git clone ssh://[email protected]/var/gitservertest/proj2
Cloning into 'proj2'...
[email protected]'s password:

C:gittest>cd proj2

C:gittestproj2>dir
 ╨б╨╛╨┤╨╡╤А╨╢╨╕╨╝╨╛╨╡ ╨┐╨░╨┐╨║╨╕ C:gittestproj2

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:gittestproj2>type test1.txt
"test dev1 to proj2"
"dev1 added some omre"
"dev1 3rd line"
"!!! dev2 added this"

C:gittestproj2>type test2.txt
"!!! dev2 wrote"

Git рдорд╛ рдкрд╣реБрдБрдЪ рд╕рд╛рдЭреЗрджрд╛рд░реА рдЧрд░реНрджреИ

рдЕрдм рдпреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реМрдВ рдХрд┐ Git рдорд╛рд░реНрдлрдд рдкрдирд┐ рджреЛрд╕реНрд░реЛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓реЗ Proj1 рдкреНрд░реЛрдЬреЗрдХреНрдЯрдорд╛ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХреНрджреИрди, рдЬрд╕рдорд╛ рдЙрд╕рд▓реЗ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫреИрдиред

C:gittestproj2>git remote remove origin

C:gittestproj2>git remote add origin "ssh://[email protected]/var/gitservertest/proj1"

C:gittestproj2>git push origin master
[email protected]'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:gittestproj2>git push origin master
[email protected]'s password:
To ssh://10.1.1.11/var/gitservertest/proj1
 * [new branch]      master -> master

рдердк рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рд▓рд╛рдЧрд┐,

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

setfacl -Rd -m o::5 -m g::7 /var/gitservertest

рд╕рд╛рдереИ рд▓реЗрдЦрдорд╛ рддрдкрд╛рдИрд▓реЗ рд╕рд╛рдирд╛ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬрд╣рд░реВрдорд╛ рдареЛрдХрд░ рдЦрд╛рдиреБрд╣реБрдиреНрдЫ:

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

рддрдкрд╛рдИрдВрдХреЛ рдзреНрдпрд╛рди рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рджред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди