เบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเบผเบฒเบเบœเบนเป‰เปƒเบŠเป‰เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ GIT

เป€เบกเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเป€เบŠเบตเบŸเป€เบงเบต Git, เบ„เปเบฒเบ–เบฒเบกเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบซเบผเบฒเบเป†เป‚เบ„เบ‡เบเบฒเบ™. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ„เบปเป‰เบ™เบ„เป‰เบงเบฒเบšเบฑเบ™เบซเบฒเปเบฅเบฐเบŠเบญเบเบซเบฒเบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบ—เบตเปˆเบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบ: เบ‡เปˆเบฒเบเบ”เบฒเบ, เบ›เบญเบ”เป„เบž, เป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰.

เบ„เบงเบฒเบกเบ›เบฒเบ”เบ–เบฐเบซเบ™เบฒเบ‚เบญเบ‡เบ‚เป‰เบญเบเปเบกเปˆเบ™:

  • เบœเบนเป‰เปƒเบŠเป‰เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบšเบฑเบ™เบŠเบตเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡
  • เบœเบนเป‰เปƒเบŠเป‰เบซเบผเบฒเบเบ„เบปเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฝเบง
  • เบœเบนเป‰เปƒเบŠเป‰เบ”เบฝเบงเบเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบซเบผเบฒเบเป‚เบ„เบ‡เบเบฒเบ™
  • เบœเบนเป‰เปƒเบŠเป‰เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบฝเบ‡เปเบ•เปˆเป‚เบ„เบ‡เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเบฅเบฒเบงเป€เบฎเบฑเบ”เบงเบฝเบ
  • เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบœเปˆเบฒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡, เปเบฅเบฐเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบœเปˆเบฒเบ™เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป€เบงเบฑเบšเป„เบŠเบ•เปŒ

เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบ”เบตเบซเบผเบฒเบ:

  • เปƒเบซเป‰เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบญเปˆเบฒเบ™เบขเปˆเบฒเบ‡เบ”เบฝเบงเบเบฑเบšเบœเบนเป‰เบ„เบงเบšเบ„เบธเบก
  • เบˆเบฑเบ”เบเบฒเบ™เบชเบดเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบขเปˆเบฒเบ‡เบชเบฐเบ”เบงเบเปƒเบ™ Git

เบžเบฒเบšเบฅเบงเบกเบ‚เบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ GIT

เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ—เปˆเบฒเบ™ เบˆเบณ เป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฎเบนเป‰เบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเบฐเป€เบฅเบทเบญเบเบˆเบฒเบ, เบชเบฐเบ™เบฑเป‰เบ™เบ™เบตเป‰เปเบกเปˆเบ™เบžเบฒเบšเบฅเบงเบกเป„เบงเบ‚เบญเบ‡ Git protocols.

  • ssh - เบšเบฑเบ™เบŠเบตเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ.
    • เบกเบฑเบ™เป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เปเบ›เบเบ—เบตเปˆ Git เบšเปเปˆเป„เบ”เป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบˆเบฒเบเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ‚เบญเบ‡เบกเบฑเบ™เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบšเบฑเบ™เบŠเบตเบ”เบฝเบงเป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ repositories เบ—เบฑเบ‡เบซเบกเบปเบ”. เบญเบฑเบ™เบ™เบตเป‰เบšเปเปˆเป€เบ›เบฑเบ™เป„เบ›เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ‚เป‰เบญเบเป€เบฅเบตเบ.
    • เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบซเบผเบฒเบโ€‹เบšเบฑเบ™โ€‹เบŠเบตโ€‹, เปเบ•เปˆโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบœเบนเป‰โ€‹เปƒเบŠเป‰โ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบฅเบฒเบโ€‹เบเบฒเบ™โ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹?
      • เบเบฒเบ™เบ›เบดเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป€เบฎเบทเบญเบ™เปเบกเปˆเบ™เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบˆเบฑเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฒเบ™เบ‚เบฝเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบญเบทเปˆเบ™เป†
      • เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ symlinks เบˆเบฒเบเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป€เบฎเบทเบญเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบกเปˆเบ™เบเบฑเบ‡เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเป€เบžเบฒเบฐเบงเปˆเบฒ Git เบšเปเปˆเป„เบ”เป‰เบ•เบตเบ„เบงเบฒเบกเบซเบกเบฒเบเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเป€เบ›เบฑเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ
      • เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ™เบฒเบเบžเบฒเบชเบฒ, เปเบ•เปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเบชเบฐเป€เบซเบกเบต
        • เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ™เบฒเบเบžเบฒเบชเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เปƒเบŠเป‰เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เปเบ•เปˆ
          • เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบซเบเบธเป‰เบ‡เบเบฒเบเบšเบฒเบ‡เบขเปˆเบฒเบ‡,
          • เปเบฅเบฐเบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบซเบฅเบตเบเบฅเป‰เบฝเบ‡เป„เบ”เป‰.

    เปเบ•เปˆเบšเบฒเบ‡เบ—เบตเบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰เบˆเบฐเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ”เป†?.. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเป€เบชเบ”เป„เบ”เป‰เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ„เบดเบ”เบญเบญเบเบขเปˆเบฒเบ‡เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบงเบดเบ—เบตเบ™เบตเป‰เปƒเบ™เบžเบฒเบเบซเบผเบฑเบ‡, เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบชเบฑเป‰เบ™เป†เบเปˆเบฝเบงเบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™, เบšเบฒเบ‡เบ—เบตเบญเบฒเบ”เบกเบตเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบเบงเปˆเบฒ.

  • เป‚เบ›เป‚เบ•เบ„เบญเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ git เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฑเบš sshfs, เบœเบนเป‰เปƒเบŠเป‰เบซเบผเบฒเบเบ„เบปเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰, เปเบ•เปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™เบเบฑเบšเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ.
  • http - เบญเปˆเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
  • git เปเบกเปˆเบ™เบญเปˆเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™
  • https - เบเบฒเบเบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบŠเบญเบšเปเบงเป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เปเบœเบ‡เบ„เบงเบšเบ„เบธเบกเป€เบžเบทเปˆเบญเบˆเบฑเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบœเบนเป‰เปƒเบŠเป‰ ... เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เปเบ•เปˆเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเปเปˆเบชเบฑเบšเบชเบปเบ™.

เบเบฒเบ™เปƒเบŠเป‰เป‚เบ›เป‚เบ•เบ„เบญเบ™ ssh เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเบผเบฒเบเบœเบนเป‰เปƒเบŠเป‰เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ Git

เปƒเบซเป‰เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒ ssh protocol.

เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ ssh เบชเปเบฒเบฅเบฑเบš git, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เป€เบŠเบตเบŸเป€เบงเบต. เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบœเปˆเบฒเบ™ ssh เปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Linux, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบœเปˆเบฒเบ™เบฅเบนเบเบ„เป‰เบฒ ssh เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ.
เบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบ•เปเปˆเบเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง.

เปเบ•เปˆเบœเบนเป‰เปƒเบŠเป‰เบšเปเปˆเบ„เบงเบ™เบชเบปเบ™เปƒเบˆเป„เบŸเบฅเปŒ Linux. เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ git repository เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบšเปเปˆเบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบœเปˆเบฒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡, เปเบ•เปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบท 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

เบˆเบธเบ”เบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบงเปˆเบฒเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป„เบ”เป‰เบ–เบทเบเบกเบญเบšเบซเบกเบฒเบเปƒเบซเป‰เบเบธเปˆเบกเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบเบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡ Linux เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฝเบง.

เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ™เบตเป‰, "เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ 1" เบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ proj1 เปเบฅเบฐ proj2, เปเบฅเบฐ "เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ 2" เบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™ proj2 เปเบฅเบฐ proj3.

เบ–เป‰เบฒเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ”เป†เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบœเปˆเบฒเบ™ ssh เบœเปˆเบฒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡, เบชเบดเบ”เบ—เบดเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบˆเบฐเบšเปเปˆเบžเบฝเบ‡เบžเปเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบฅเบฒเบเบŠเบทเปˆเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบก. เบฅเบฒเบงเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ•เบปเบงเป€เบญเบ‡เป„เบ”เป‰.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบซเบผเบฑเบเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบชเบดเบ”เบ—เบดเบ‚เบญเบ‡ Linux, เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบšเปเบฅเบดเบซเบฒเบ™.

เบ‚เปเปƒเบซเป‰เบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”.

เบเบฒเบ™เบชเป‰เบฒเบ‡เบšเปˆเบญเบ™เป€เบเบฑเบš 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 hook

เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบš hook เปเบกเปˆเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบฎเบฒเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™. hook เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบžเบฒเบเปƒเบ•เป‰เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบŠเบธเบเบเบนเป‰. เบฎเบนเป‰เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบœเบ™เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

[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, เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ hook post-update script เบซเบผเบฑเบ‡เบˆเบฒเบเบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒ

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

- เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ”เบต.

เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเบชเบญเบ‡เปƒเบ™ Git

เปƒเบซเป‰ simulate เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ—เบตเบชเบญเบ‡.

เบเปˆเบฝเบงเบเบฑเบšเบฅเบนเบเบ„เป‰เบฒ

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

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเป€เบˆเบปเป‰เบฒเบญเบฒเบ”เบˆเบฐ stumble เบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ:

  • เบงเบดเบ—เบตเบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปƒเบ™ Linux
  • เบงเบดเบ—เบตเบเบฒเบ™เบœเปˆเบฒเบ™เป„เบฅเบเบฐเบ‚เบญเบ‡เบ—เบตเปˆเบขเบนเปˆเปƒเบ™ sed เบˆเบฒเบเป€เบชเบฑเป‰เบ™เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เป„เบ›เบซเบฒเบ—เป‰เบฒเบเบ‚เบญเบ‡เป„เบŸเบฅเปŒ, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เป€เบฎเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เปƒเบ™ sed เปƒเบ™เบ—เบธเบเป€เบชเบฑเป‰เบ™เบเบปเบเป€เบงเบฑเป‰เบ™เปเบ–เบงเบ—เปเบฒเบญเบดเบ”.
  • เบงเบดเบ—เบตเบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบเบฒเบ™เบŠเบญเบเบซเบฒเปƒเบ™ Linux เบŠเบญเบเบซเบฒ
  • เบงเบดเบ—เบตเบเบฒเบ™เบœเปˆเบฒเบ™เบซเบผเบฒเบเบชเบฒเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ loop เป‚เบ”เบเปƒเบŠเป‰เป€เบชเบฑเป‰เบ™เบ”เบฝเบงเปƒเบ™ Linux shell
  • เบงเบดเบ—เบตเบเบฒเบ™เบซเบฅเบปเบšเบซเบ™เบตเบ„เปเบฒเป€เบงเบปเป‰เบฒเบ”เบฝเบงเปƒเบ™ bash
  • เบงเบดเบ—เบตเบเบฒเบ™เบฅเบถเบšเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบกเบตเป€เบ™เบทเป‰เบญเบซเบฒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ windows
  • เบงเบดเบ—เบตเบเบฒเบ™เปƒเบŠเป‰ bash mv เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบŠเบทเปˆเป„เบŸเบฅเปŒเป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบ„เบทเบ™เปƒเบซเบกเปˆ

เบ‚เปเบ‚เบญเบšเปƒเบˆเบ—เปˆเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™