ΠΡΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Git ΡΠ΅ΡΠ²Π΅Ρ, ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π° ΠΏΡΠ°ΡΠ°ΡΠ΅ΡΠΎ Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏ Π·Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ Π΄ΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. ΠΠΎ ΠΈΡΡΡΠ°ΠΆΡΠ²Π°Π² ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ ΠΈ Π½Π°ΡΠ΄ΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎ Π³ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ²Π° ΡΠΈΡΠ΅ ΠΌΠΎΠΈ Π±Π°ΡΠ°ΡΠ°: Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ, Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ, ΡΠΈΠ³ΡΡΠ½ΠΎ.
ΠΠΎΠΈΡΠ΅ ΠΆΠ΅Π»Π±ΠΈ ΡΠ΅:
- ΡΠ΅ΠΊΠΎΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΡΠ΅ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π° ΡΠΎ ΡΠ²ΠΎΡΠ° ΡΠΌΠ΅ΡΠΊΠ°
- ΠΠ΅ΠΊΠΎΠ»ΠΊΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° Π΅Π΄Π΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ
- ΠΈΡΡΠΈΠΎΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ
- ΡΠ΅ΠΊΠΎΡ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ ΠΈΠΌΠ° ΠΏΡΠΈΡΡΠ°ΠΏ ΡΠ°ΠΌΠΎ Π΄ΠΎ ΠΎΠ½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π½Π° ΠΊΠΎΠΈ ΡΠ°Π±ΠΎΡΠΈ
- Π’ΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ΡΠ΅ ΠΏΡΠ΅ΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ°, Π° Π½Π΅ ΡΠ°ΠΌΠΎ ΠΏΡΠ΅ΠΊΡ Π½Π΅ΠΊΠΎΡ Π²ΠΈΠ΄ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ
ΠΡΡΠΎ ΡΠ°ΠΊΠ° Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΎΠ΄Π»ΠΈΡΠ½ΠΎ:
- Π΄Π°Π²Π°ΡΠ΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΠ΅ Π»ΠΈΡΠ°
- ΠΠΎΠ³ΠΎΠ΄Π½ΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΡΠ΅ ΡΠΎ ΠΏΡΠ°Π²Π°ΡΠ° Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅ Π²ΠΎ Git
ΠΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΌΠΎΠΆΠ½ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ GIT
ΠΡΠ΅Π΄ ΡΓ¨, ΡΡΠ΅Π±Π° Π΄Π° Π·Π½Π°Π΅ΡΠ΅ ΠΎΠ΄ ΡΡΠΎ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅, ΠΏΠ° Π·Π°ΡΠΎΠ° Π΅Π²Π΅ Π±ΡΠ· ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΡΠ΅ Git.
- ssh - ΡΠΏΠ΅ΡΠΈΡΠ°Π»Π½ΠΎ ΠΊΡΠ΅ΠΈΡΠ°Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠ° ΡΠΌΠ΅ΡΠΊΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ.
- Π§ΡΠ΄Π½ΠΎ Π΅ ΡΡΠΎ Git Π½Π΅ ΡΠ° ΠΈΡΠΊΠ»ΡΡΡΠ²Π° ΠΎΠ΄ ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΠ°ΠΊΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ Π½Π° Π΅Π΄Π½Π° ΡΠΌΠ΅ΡΠΊΠ° Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΡΠΈΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ°. ΠΠ²Π° Π²ΠΎΠΎΠΏΡΡΠΎ Π½Π΅ Π³ΠΈ Π·Π°Π΄ΠΎΠ²ΠΎΠ»ΡΠ²Π° ΠΌΠΎΠΈΡΠ΅ Π±Π°ΡΠ°ΡΠ°.
- ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠΌΠ΅ΡΠΊΠΈ, Π½ΠΎ ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ ΡΠ°ΠΌΠΎ Π΄ΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ?
- ΠΠ°ΡΠ²ΠΎΡΠ°ΡΠ΅ΡΠΎ Π²ΠΎ Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ Π½Π΅ Π΅ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΎ, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π΅ ΡΠ΅ΡΠΊΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΠΏΡΠΈΡΡΠ°ΠΏ Π·Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΡΠ°ΠΌΡ Π·Π° Π΄ΡΡΠ³ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ
- ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ΡΠΎ ΡΠΈΠΌΠ±ΠΎΠ»ΠΈ ΠΎΠ΄ Π²Π°ΡΠΈΠΎΡ Π΄ΠΎΠΌΠ°ΡΠ΅Π½ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ Π΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ΡΠΊΠΎ Π±ΠΈΠ΄Π΅ΡΡΠΈ Git Π½Π΅ Π³ΠΈ ΡΠΎΠ»ΠΊΡΠ²Π° ΠΊΠ°ΠΊΠΎ Π²ΡΡΠΊΠΈ
- ΠΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈ ΠΏΡΠΈΡΡΠ°ΠΏΠΎΡ Π΄ΠΎ ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π°ΡΠΎΡ, Π½ΠΎ Π½Π΅ ΠΏΠΎΡΡΠΎΠΈ ΡΠ΅Π»ΠΎΡΠ½Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ° Π΄Π΅ΠΊΠ° ΡΠΎΡ ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ
- ΠΠ΅Π½Π΅ΡΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ²ΡΠ·Π΅ΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π°Ρ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠ°ΠΊΠ²ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ, Π½ΠΎ
- ΠΏΡΠ²ΠΎ, ΠΎΠ²Π° Π΅ Π²Π΅ΡΠ΅ Π½Π΅ΠΊΠ°ΠΊΠ²Π° ΡΠ΅ΡΠΊΠ° ΠΎΠ΄Π»ΡΠΊΠ°,
- ΠΈ Π²ΡΠΎΡΠΎ, ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈ.
- ΠΠ΅Π½Π΅ΡΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ²ΡΠ·Π΅ΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π°Ρ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠ°ΠΊΠ²ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ, Π½ΠΎ
ΠΠΎ, ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½Π΅ Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΡΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΠΈ ΠΊΠ°ΠΊΠ²ΠΈ Π±ΠΈΠ»ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ?.. ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΠΎΠ²ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠΈ Π°ΠΊΠΎ ΡΠΎΡΠ½ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅. ΠΠ° ΠΎΠ²ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ ΡΠ΅ Π²ΡΠ°ΡΠΈΠΌΠ΅ ΠΏΠΎΠ΄ΠΎΡΠ½Π°, Π½ΠΎ Π·Π°ΡΠ΅Π³Π° Π½Π°ΠΊΡΠ°ΡΠΊΠΎ ΡΠ΅ Π³ΠΈ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄ΡΡΠ³ΠΈΡΠ΅ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΈ, ΠΌΠΎΠΆΠ΅Π±ΠΈ ΡΠ΅ ΠΈΠΌΠ° Π½Π΅ΡΡΠΎ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ.
- ΠΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» git ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΠ° ΡΠΎ sshfs, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ, Π½ΠΎ Π²ΠΎ ΡΡΡΡΠΈΠ½Π° ΠΈΡΡ ΠΊΠ°ΠΊΠΎ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈΠΎΡ ΡΠ»ΡΡΠ°Ρ
- http - ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅
- git Π΅ ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅
- https - ΡΠ΅ΡΠΊΠΎ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°, ΠΏΠΎΡΡΠ΅Π±Π΅Π½ Π²ΠΈ Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΡΠΎΡΡΠ²Π΅Ρ, Π½Π΅ΠΊΠ°ΠΊΠΎΠ² ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΠΏΠ°Π½Π΅Π» Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΠΎΡ ΠΏΡΠΈΡΡΠ°ΠΏ... ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΈΠ·Π²ΠΎΠ΄Π»ΠΈΠ²ΠΎ, Π½ΠΎ Π½Π΅ΠΊΠ°ΠΊΠΎ ΡΠ΅ Π΅ ΠΊΠΎΠΌΠΏΠ»ΠΈΡΠΈΡΠ°Π½ΠΎ.
ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ ssh Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Git
ΠΠ° ΡΠ΅ ββΠ²ΡΠ°ΡΠΈΠΌΠ΅ Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ ssh.
ΠΠΈΠ΄Π΅ΡΡΠΈ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ssh ΠΏΡΠΈΡΡΠ°ΠΏ Π·Π° git, ΡΡΠ΅Π±Π° Π΄Π° ΡΠ° ΠΎΡΠΈΠ³ΡΡΠ°ΡΠ΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ. ΠΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΠΊΠΎΡ ΡΠ΅ ΠΏΠΎΠ²ΡΠ·ΡΠ²Π° ΠΏΡΠ΅ΠΊΡ ssh ΠΊΠΎΡΠΈΡΡΠΈ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎ Π½Π°ΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ Linux, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ ΠΏΡΠ΅ΠΊΡ ssh ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΠΈ Π΄Π° ΠΏΡΠΈΡΡΠ°ΠΏΠΈ Π΄ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ.
ΠΠ΅ ΠΏΠΎΡΡΠΎΠΈ ΡΠ΅Π»ΠΎΡΠ½Π° Π·Π°ΡΡΠΈΡΠ° ΠΎΠ΄ ΡΠ°ΠΊΠΎΠ² ΠΏΡΠΈΡΡΠ°ΠΏ.
ΠΠΎ, ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° Π±ΠΈΠ΄Π΅ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½ Π·Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ Π½Π° Linux. ΠΠ½Π°ΡΠ°ΡΠ½ΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠ΅ ΡΡΠ²Π°Π°Ρ ΡΠ°ΠΌΠΎ Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ΡΠΎ git. ΠΠ°ΡΠΎΠ°, ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° Π½Π΅ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈ ΠΏΡΠΈΡΡΠ°ΠΏΠΎΡ ΠΏΡΠ΅ΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ°, ΡΡΠΊΡ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π°Π»Π°ΡΠΊΠΈ Π½Π° Linux Π·Π° Π΄Π° ΡΠ΅ Π·Π°Π±ΡΠ°Π½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ Π΄Π° Π³Π»Π΅Π΄Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΈΡΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ Π³ΠΈ ΠΎΠ½ΠΈΠ΅ Π²ΠΎ ΠΊΠΎΠΈ ΡΡΠ΅ΡΡΠ²ΡΠ²Π°.
ΠΡΠΈΠ³Π»Π΅Π΄Π½ΠΈΠΎΡ ΠΈΠ·Π±ΠΎΡ Π΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° Linux.
ΠΠ°ΠΊΠΎ ΡΡΠΎ Π²Π΅ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²ΠΌΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π° ΡΠΌΠ΅ΡΠΊΠ° Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ 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 ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠ°Π»Π½ΠΎ ΠΊΡΠ΅ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ Π½Π° Linux ΠΊΠΎΠΈ ΡΠ΅ Π΄ΠΎΠ΄Π΅Π»Π΅Π½ΠΈ ΠΊΠ°ΠΊΠΎ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈΡΠΈ Π½Π° ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ.
Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ Π·Π° ΡΠΈΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ ΡΠ΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π½Π° 0770 - ΡΠ΅Π»ΠΎΡΠ΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ Π·Π° ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈΠΊΠΎΡ ΠΈ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° Π³ΡΡΠΏΠ° ΠΈ ΡΠ΅Π»ΠΎΡΠ½Π° Π·Π°Π±ΡΠ°Π½Π° Π·Π° ΡΠΈΡΠ΅ ΠΎΡΡΠ°Π½Π°ΡΠΈ.
2) ΡΠΌΠ΅ΡΠΊΠΈ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ 1: dev1:dev1,proj1,proj2
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ 2: dev2:dev2,proj2,proj3
ΠΠ»ΡΡΠ½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π΅ ΡΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΈΠΌ Π΅ Π΄ΠΎΠ΄Π΅Π»Π΅Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½Π° Π³ΡΡΠΏΠ° Π½Π° ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈΠΊΠΎΡ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π½Π° ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ²Π° Π³ΠΎ ΠΏΡΠ°Π²ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΠΈΠ½ΡΠΊΡ ΡΠΎ Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°.
ΠΠΎ ΠΎΠ²ΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, βDeveloper 1β ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ proj1 ΠΈ proj2, Π° βDeveloper 2β ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ proj2 ΠΈ proj3.
ΠΠΊΠΎ Π½Π΅ΠΊΠΎΡ ΠΎΠ΄ ΠΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ ΠΏΡΠ΅ΠΊΡ ssh ΠΏΡΠ΅ΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ°, ΡΠΎΠ³Π°Ρ Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΠΏΡΠ°Π²Π° Π½Π΅ΠΌΠ° Π΄Π° Π±ΠΈΠ΄Π°Ρ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ Π΄ΡΡΠΈ Π½ΠΈ Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ½ΠΈΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ Π²ΠΎ ΠΊΠΎΠΈ Π½Π΅ ΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π°Ρ. Π’ΠΎΡ ΡΠ°ΠΌΠΈΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΎΠ²Π°.
ΠΠΈΠ΄Π΅ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π° ΠΎΠ²ΠΎΡ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π΅ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ Π½Π° ΠΏΡΠ°Π²Π°ΡΠ° Π½Π° ΠΠΈΠ½ΡΠΊΡ, ΠΎΠ²Π°Π° ΡΠ΅ΠΌΠ° Π΅ ΡΠΈΠ³ΡΡΠ½Π°. ΠΠΎΠΊΡΠ°Ρ ΡΠΎΠ°, ΡΠ΅ΠΌΠ°ΡΠ° Π΅ ΠΌΠ½ΠΎΠ³Ρ Π»Π΅ΡΠ½Π° Π·Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°ΡΠ΅.
ΠΡΠ΄Π΅ Π΄Π° ΠΎΠ΄ΠΈΠΌΠ΅ Π½Π° ΠΏΡΠ°ΠΊΡΠ°.
ΠΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ° Π½Π° Git Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π½Π° Linux
ΠΡΠΎΠ²Π΅ΡΠΊΠ°.
[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, ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π΄Π΅ΡΠ΅ΠΊΡ Π²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠ°.
Linux chown - ΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈΠΊΠΎΡ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΎΠ΄ ΡΠ΅Π΄ΠΎΠ²Π΅Π½ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ
Π‘ΠΎΠΏΡΡΠ²Π΅Π½ΠΈΠΊΠΎΡ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π½Π΅ΡΠ·ΠΈΠ½Π°ΡΠ° ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎΡΡ. ΠΠΎ, ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π³ΡΡΠΏΠ°ΡΠ° Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΡΠΎ ΠΌΡ ΠΏΡΠΈΠΏΠ°ΡΠ°, Π° ΠΏΠΎΡΠΎΠ° ΠΎΠ²Π°Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅ΡΠ° ΠΎΠ΄ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΊΠΎΠΈ ΡΠ΅ Π²ΠΎ ΠΈΡΡΠ°ΡΠ° Π³ΡΡΠΏΠ°. Π’ΠΎΠ° Π΅ ΠΎΠ½Π° ΡΡΠΎ Π½ΠΈ ΡΡΠ΅Π±Π°.
ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΊΡΠΊΠ° Git
Π Π°Π±ΠΎΡΠ½ΠΈΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ Π·Π° ΠΊΡΠΊΠ° Π΅ root Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ. ΠΊΡΠΊΠ° Π΅ ΠΈΠ·Π²ΡΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎΠ΄ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΠΊΠΎΡ Π²ΡΡΠΈ ΠΏΡΠΈΡΠΈΡΠΊΠ°ΡΠ΅. ΠΠ½Π°Π΅ΡΡΠΈ Π³ΠΎ ΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΈ ΡΠΏΡΠΎΠ²Π΅Π΄Π΅ΠΌΠ΅ Π½Π°ΡΠΈΡΠ΅ ΠΏΠ»Π°Π½ΠΎΠ²ΠΈ.
[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
ΠΡΡΠΎ ΡΠ°ΠΊΠ°, Π²ΠΎ ΡΡΠ°ΡΠΈΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΎΠΏΠ½Π΅ΡΠ΅ Π½Π° ΠΌΠ°Π»ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈ ΡΠ°Π±ΠΎΡΠΈ:
- ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈ Π΄ΡΠ²ΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΈ Π²ΠΎ Linux
- ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π½Π΅ΡΠ΅ ΠΎΠΏΡΠ΅Π³ Π½Π° Π°Π΄ΡΠ΅ΡΠΈ Π²ΠΎ sed ΠΎΠ΄ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° Π»ΠΈΠ½ΠΈΡΠ° Π΄ΠΎ ΠΊΡΠ°ΡΠΎΡ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ°, ΠΎΠ΄Π½ΠΎΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π·Π°ΠΌΠ΅Π½Π° Π²ΠΎ sed Π²ΠΎ ΡΠΈΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΠΎΡΠ²Π΅Π½ Π²ΠΎ ΠΏΡΠ²Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ°
- ΠΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π²ΡΡΠΈ ΡΡΠ»ΠΎΠ²ΠΎΡ Π·Π° ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ Π²ΠΎ Π½Π°ΠΎΡΠ°ΡΠ΅ Π½Π° Linux
- ΠΠ°ΠΊΠΎ Π΄Π° ΠΏΠΎΠΌΠΈΠ½Π΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ Π²ΠΎ ΡΠ°ΠΌΠΊΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π΅Π΄Π½ΠΎΡΠ»ΠΎΡΠ½ΠΎ Π²ΠΎ ΡΠΊΠΎΠ»ΠΊΠ°ΡΠ° Π½Π° Linux
- ΠΠ°ΠΊΠΎ Π΄Π° ΠΈΠ·Π±Π΅Π³Π°ΡΠ΅ ΠΎΠ΄ Π΅Π΄ΠΈΠ½Π΅ΡΠ½ΠΈ ΡΠΈΡΠ°ΡΠΈ Π²ΠΎ Π±Π°Ρ
- ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΈΠ·Π±ΡΠΈΡΠ΅ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌ ΡΠΎ ΡΠ΅Π»Π°ΡΠ° Π½Π΅Π³ΠΎΠ²Π° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π° Π²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡΠ° Π½Π° Windows
- ΠΠ°ΠΊΠΎ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ bash mv Π·Π° ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°ΡΠ΅ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π±Π΅Π· ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π° ΡΠ° ΠΏΡΠ΅ΠΏΠΈΡΠ΅ΡΠ΅
ΠΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠΈΠΌΠ΅ Π·Π° Π²Π°ΡΠ΅ΡΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.
ΠΠ·Π²ΠΎΡ: www.habr.com