GIT เชธเชฐเซเชตเชฐ เชชเชฐ เชฎเชฒเซเชŸเชฟ-เชฏเซเชเชฐ เชเช•เซเชธเซ‡เชธเชจเซเช‚ เชธเช‚เช—เช เชจ

เช—เชฟเชŸ เชธเชฐเซเชตเชฐเชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เช—เซ‹เช เชตเชคเซ€ เชตเช–เชคเซ‡, เช˜เชฃเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ เช˜เชฃเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธเชจเซ€ เชเช•เซเชธเซ‡เชธ เช—เซ‹เช เชตเชตเชพเชจเซ‹ เชชเซเชฐเชถเซเชจ เชŠเชญเซ‹ เชฅเชพเชฏ เช›เซ‡. เชฎเซ‡เช‚ เช† เชฎเซเชฆเซเชฆเชพ เชชเชฐ เชฅเซ‹เชกเซเช‚ เชธเช‚เชถเซ‹เชงเชจ เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ เชเช• เช‰เช•เซ‡เชฒ เชฎเชณเซเชฏเซ‹ เชœเซ‡ เชฎเชพเชฐเซ€ เชฌเชงเซ€ เช†เชตเชถเซเชฏเช•เชคเชพเช“เชจเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ‡ เช›เซ‡: เชธเชฐเชณ, เชธเชฒเชพเชฎเชค, เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ.

เชฎเชพเชฐเซ€ เช‡เชšเซเช›เชพเช“ เช›เซ‡:

  • เชฆเชฐเซ‡เช• เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชคเซ‡เชฎเชจเชพ เชชเซ‹เชคเชพเชจเชพ เชเช•เชพเช‰เชจเซเชŸ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏ เช›เซ‡
  • เชเช• เชœ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชชเชฐ เชฌเชนเซเชตเชฟเชง เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡
  • เชเช• เชœ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฌเชนเซเชตเชฟเชง เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ เชชเชฐ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡
  • เชฆเชฐเซ‡เช• เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ เชซเช•เซเชค เชคเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธเชจเซ€ เชเช•เซเชธเซ‡เชธ เชนเซ‹เชฏ เช›เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡
  • เช†เชฆเซ‡เชถ เชตเชพเช•เซเชฏ เชฆเซเชตเชพเชฐเชพ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเซเช‚ เชถเช•เซเชฏ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช, เช…เชจเซ‡ เชฎเชพเชคเซเชฐ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเชพ เชตเซ‡เชฌ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชฆเซเชตเชพเชฐเชพ เชจเชนเซ€เช‚

เชคเซ‡ เชชเชฃ เชฎเชนเชพเชจ เชนเชถเซ‡:

  • เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เชตเซเชฏเช•เซเชคเชฟเช“เชจเซ‡ เชซเช•เซเชค เชตเชพเช‚เชšเชตเชพเชจเชพ เช…เชงเชฟเช•เชพเชฐเซ‹ เช†เชชเซ‹
  • Git เชฎเชพเช‚ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชชเชฐเชตเชพเชจเช—เซ€เช“เชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเซ‹

GIT เชธเชฐเซเชตเชฐเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชธเช‚เชญเชตเชฟเชค เชตเชฟเช•เชฒเซเชชเซ‹เชจเซ€ เชเชพเช‚เช–เซ€

เชธเซŒ เชชเซเชฐเชฅเชฎ, เชคเชฎเชพเชฐเซ‡ เชถเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเชตเซเช‚ เชคเซ‡ เชœเชพเชฃเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชคเซ‡เชฅเซ€ เช—เชฟเชŸ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเซเชธเชจเซ€ เชธเช‚เช•เซเชทเชฟเชชเซเชค เชเชพเช‚เช–เซ€.

  • ssh - เชธเชฐเซเชตเชฐเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช–เชพเชธ เชฌเชจเชพเชตเซ‡เชฒ เชฏเซเชเชฐ เชเช•เชพเช‰เชจเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡.
    • เชคเซ‡ เชตเชฟเชšเชฟเชคเซเชฐ เช›เซ‡ เช•เซ‡ เช—เชฟเชŸ เชคเชฎเชพเชฎ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชเช•เชพเช‰เชจเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เช† เชฎเชพเชฐเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹เชจเซ‡ เชฌเชฟเชฒเช•เซเชฒ เชชเซ‚เชฐเซเชฃ เช•เชฐเชคเซเช‚ เชจเชฅเซ€.
    • เชคเชฎเซ‡ เชฌเชนเซเชตเชฟเชง เชเช•เชพเช‰เชจเซเชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชชเชฐเช‚เชคเซ เชคเชฎเซ‡ เชซเช•เซเชค เช…เชฎเซเช• เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช“ เชธเซเชงเซ€ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ€ เชเช•เซเชธเซ‡เชธเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹?
      • เชนเซ‹เชฎ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซ‡ เชฌเช‚เชง เช•เชฐเชตเซเช‚ เชฏเซ‹เช—เซเชฏ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซเชฏเชพเช‚ เช…เชจเซเชฏ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ เชฒเซ‡เช–เชจ เชเช•เซเชธเซ‡เชธ เช—เซ‹เช เชตเชตเชพเชจเซเช‚ เชฎเซเชถเซเช•เซ‡เชฒ เช›เซ‡
      • เชนเซ‹เชฎ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชธเชพเช‚เช•เซ‡เชคเชฟเช• เชฒเชฟเช‚เช•เซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชชเชฃ เชฎเซเชถเซเช•เซ‡เชฒ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เช—เชฟเชŸ เชคเซ‡เชฎเชจเซ‡ เชฒเชฟเช‚เช•เซเชธ เชคเชฐเซ€เช•เซ‡ เช…เชฐเซเชฅเช˜เชŸเชจ เช•เชฐเชคเซเช‚ เชจเชฅเซ€.
      • เชฆเซเชญเชพเชทเชฟเชฏเชพเชจเซ€ เชเช•เซเชธเซ‡เชธเชจเซ‡ เชชเซเชฐเชคเชฟเชฌเช‚เชงเชฟเชค เช•เชฐเซ‹, เชธเชพเชฐเซเช‚, เชคเชฎเซ‡ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชชเชฐเช‚เชคเซ เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ เชธเช‚เชชเซ‚เชฐเซเชฃ เช—เซ‡เชฐเซ‡เช‚เชŸเซ€ เชจเชฅเซ€ เช•เซ‡ เช† เชนเช‚เชฎเซ‡เชถเชพ เช•เชพเชฎ เช•เชฐเชถเซ‡
        • เชคเชฎเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช†เชตเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เช†เชฆเซ‡เชถ เชฆเซเชญเชพเชทเชฟเชฏเชพเชจเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชชเชฐเช‚เชคเซ,
          • เชชเซเชฐเชฅเชฎ, เช† เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชเช• เชชเซเชฐเช•เชพเชฐเชจเซ‹ เชฎเซเชถเซเช•เซ‡เชฒ เชจเชฟเชฐเซเชฃเชฏ เช›เซ‡,
          • เช…เชจเซ‡ 2, เชคเซ‡เชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

    เชชเชฐเช‚เชคเซ เช•เชฆเชพเชš เชคเซ‡ เช•เซ‹เชˆ เชธเชฎเชธเซเชฏเชพ เชจเชฅเซ€ เช•เซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช•เซ‹เชˆเชชเชฃ เช†เชฆเซ‡เชถเซ‹ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชนเชถเซ‡? .. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชœเซ‹ เชคเชฎเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹ เชคเซ‡ เชฌเชฐเชพเชฌเชฐ เชธเชฎเชœเชคเชพ เชนเซ‹เชต เชคเซ‹ เช† เชชเชฆเซเชงเชคเชฟเชจเซ‡ เชจเช•เชพเชฐเซ€ เชถเช•เชพเชฏ เชจเชนเซ€เช‚. เช…เชฎเซ‡ เชชเช›เซ€เชฅเซ€ เช† เชชเชฆเซเชงเชคเชฟ เชชเชฐ เชชเชพเช›เชพ เช†เชตเซ€เชถเซเช‚, เชชเชฐเช‚เชคเซ เชนเชฎเชฃเชพเช‚ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เชฌเชพเช•เซ€เชจเชพ เชตเชฟเช•เชฒเซเชชเซ‹เชจเซ‡ เชŸเซ‚เช‚เช•เชฎเชพเช‚ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเชถเซเช‚, เช•เชฆเชพเชš เช•เช‚เชˆเช• เชธเชฐเชณ เชนเชถเซ‡.

  • git เชฒเซ‹เช•เชฒ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— sshfs เชธเชพเชฅเซ‡ เชธเช‚เชฏเซ‹เชœเชจเชฎเชพเช‚ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เชฌเชนเซเชตเชฟเชง เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เช†เชตเชถเซเชฏเช•เชชเชฃเซ‡ เช…เช—เชพเช‰เชจเชพ เช•เซ‡เชธเชจเซ€ เชœเซ‡เชฎ เชœ เช›เซ‡
  • http - เชซเช•เซเชค เชตเชพเช‚เชšเซ‹
  • git เชซเช•เซเชค เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡ เช›เซ‡
  • https เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเซเช‚ เชฎเซเชถเซเช•เซ‡เชฒ เช›เซ‡, เชคเชฎเชพเชฐเซ‡ เชตเชงเชพเชฐเชพเชจเชพ เชธเซ‰เชซเซเชŸเชตเซ‡เชฐเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชเช•เซเชธเซ‡เชธเชจเซ‡ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเชพ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชชเซ‡เชจเชฒเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ ... เชคเซ‡ เชถเช•เซเชฏ เชฒเชพเช—เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ เชฌเชงเซเช‚ เชœเชŸเชฟเชฒ เช›เซ‡.

เช—เชฟเชŸ เชธเชฐเซเชตเชฐ เชชเชฐ เชฎเชฒเซเชŸเชฟ-เชฏเซเชเชฐ เชเช•เซเชธเซ‡เชธ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ ssh เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡

เชšเชพเชฒเซ‹ ssh เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชชเชฐ เชชเชพเช›เชพ เชœเชˆเช.

ssh เชเช•เซเชธเซ‡เชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— git เชฎเชพเชŸเซ‡ เชฅเชคเซ‹ เชนเซ‹เชตเชพเชฅเซ€, เชธเชฐเซเชตเชฐ เชกเซ‡เชŸเชพ เชธเซเชฐเช•เซเชทเชฟเชค เชนเซ‹เชตเซ‹ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชœเซ‡ ssh เชฆเซเชตเชพเชฐเชพ เชœเซ‹เชกเชพเชฏ เช›เซ‡ เชคเซ‡ Linux เชธเชฐเซเชตเชฐ เชชเชฐ เชคเซ‡เชฎเชจเชพ เชชเซ‹เชคเชพเชจเชพ เชฒเซ‹เช—เชฟเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฅเซ€ เชคเซ‡เช“ ssh เช•เซเชฒเชพเชฏเช‚เชŸ เชฆเซเชตเชพเชฐเชพ เช•เชจเซ‡เช•เซเชŸ เชฅเชˆ เชถเช•เซ‡ เช…เชจเซ‡ เชธเชฐเซเชตเชฐเชจเซ€ เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเซ€ เชถเช•เซ‡.
เช†เชตเซ€ เชชเชนเซ‹เช‚เชš เชฎเซ‡เชณเชตเชตเชพ เชธเชพเชฎเซ‡ เช•เซ‹เชˆ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเช•เซเชทเชฃ เชจเชฅเซ€.

เชชเชฐเช‚เชคเซ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ 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 เช…เชงเชฟเช•เชพเชฐเซ‹เชจเซ€ เชฎเซ‚เชณเชญเซ‚เชค เชธเซเชฐเช•เซเชทเชพ เชนเซ‹เชตเชพเชฅเซ€, เช† เชฏเซ‹เชœเชจเชพ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เช›เซ‡. เชตเชงเซเชฎเชพเช‚, เชฏเซ‹เชœเชจเชพเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเซเช‚ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เช›เซ‡.

เชšเชพเชฒเซ‹ เชชเซเชฐเซ‡เช•เซเชŸเชฟเชธ เชคเชฐเชซ เช†เช—เชณ เชตเชงเซ€เช.

เชฒเชฟเชจเช•เซเชธ เชธเชฐเซเชตเชฐ เชชเชฐ เช—เชฟเชŸ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เช เชฌเชจเชพเชตเชตเซ€

เช…เชฎเซ‡ เชคเชชเชพเชธเซ€เช เช›เซ€เช.

[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" เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชจเชตเซ€ เชซเชพเชˆเชฒเซ‹ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ.

เชธเซเชฅเชพเชจเชฟเช• เช—เชฟเชŸ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€ เชฌเชจเชพเชตเซ‹ เช…เชจเซ‡ เช—เชฟเชŸ เชธเชฐเซเชตเชฐ เชชเชฐ เชฆเชฌเชพเชฃ เช•เชฐเซ‹

เชšเชพเชฒเซ‹ เช•เซเชฒเชพเชฏเชจเซเชŸ เชฎเชถเซ€เชจ เชชเชฐ เช†เช—เชณ เชตเชงเซ€เช.

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 - เชธเชพเชฎเชพเชจเซเชฏ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฆเซเชตเชพเชฐเชพ เชซเชพเช‡เชฒเชจเชพ เชฎเชพเชฒเชฟเช•เชจเซ‡ เชฌเชฆเชฒเชตเซเช‚

เชซเชพเช‡เชฒเชจเชพ เชฎเชพเชฒเชฟเช• เชคเซ‡เชจเซ€ เชฎเชพเชฒเชฟเช•เซ€ เชฌเชฆเชฒเซ€ เชถเช•เชคเชพ เชจเชฅเซ€. เชชเชฐเช‚เชคเซ เชคเซ‡ เชคเซ‡เชจเซ€ เชซเชพเช‡เชฒเชจเชพ เชœเซ‚เชฅเชจเซ‡ เชฌเชฆเชฒเซ€ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡ เชœ เชœเซ‚เชฅเชฎเชพเช‚ เชฐเชนเซ‡เชฒเชพ เช…เชจเซเชฏ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชฆเซเชตเชพเชฐเชพ เช† เชซเชพเช‡เชฒ เชฌเชฆเชฒเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชคเซ‡ เชœ เช†เชชเชฃเชจเซ‡ เชœเซ‹เชˆเช เช›เซ‡.

เช—เชฟเชŸ เชนเซ‚เช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹

เชนเซ‚เช• เชฎเชพเชŸเซ‡เชจเซ€ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชจเชฟเชฐเซเชฆเซ‡เชถเชฟเช•เชพ เช เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ€ เชฐเซ‚เชŸ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เช›เซ‡. เชนเซ‚เช• เช เชเช•เซเชเชฟเช•เซเชฏเซเชŸเซ‡เชฌเชฒ เช›เซ‡ เชœเซ‡ เชชเซเชถ เช•เชฐเซ€ เชฐเชนเซ‡เชฒเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ€ เชจเซ€เชšเซ‡ เชšเชพเชฒเซ‡ เช›เซ‡. เช† เชœเชพเชฃเซ€เชจเซ‡, เช…เชฎเซ‡ เช…เชฎเชพเชฐเซ€ เชฏเซ‹เชœเชจเชพเช“ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เซ€ เชถเช•เซ€เช เช›เซ€เช.

[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

เช—เชฟเชŸ เชธเชฐเซเชตเชฐ เชชเชฐ, เช•เชฎเชฟเชŸ เชชเช›เซ€ เชนเซ‚เช• เชชเซ‹เชธเซเชŸ-เช…เชชเชกเซ‡เชŸ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซเช‚ เช•เชพเชฐเซเชฏ เชคเชชเชพเชธเซ‹

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

- เช–เชพเชฒเซ€, เชฌเชงเซเช‚ เชธเชพเชฐเซเช‚ เช›เซ‡.

เชฌเซ€เชœเชพ เชกเซ‡เชตเชฒเชชเชฐเชจเซ‡ เช—เชฟเชŸ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เชšเชพเชฒเซ‹ เชฌเซ€เชœเชพ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเชจเชพ เช•เชพเชฐเซเชฏเชจเซเช‚ เช…เชจเซเช•เชฐเชฃ เช•เชฐเซ€เช.

เช•เซเชฒเชพเชฏเชจเซเชŸ เชชเชฐ

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

- เชซเชฐเซ€เชฅเซ€ เช–เชพเชฒเซ€, เชฌเชงเซเช‚ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

เช—เชฟเชŸ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชตเซเช‚ เช…เชจเซ‡ เช—เชฟเชŸ เชธเชฐเซเชตเชฐเชฎเชพเช‚เชฅเซ€ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฒเซ‹เชก เช•เชฐเชตเซ‹

เช เซ€เช• เช›เซ‡, เชคเชฎเซ‡ เชซเชฐเซ€ เชเช•เชตเชพเชฐ เช–เชพเชคเชฐเซ€ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เชฌเชงเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชธเชพเชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡.

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://[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 เชฆเซเชตเชพเชฐเชพ 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 เชฎเชพเช‚ เชฐเชฟเชชเซเชฒเซ‡เชธเชฎเซ‡เชจเซเชŸ เช•เชฐเชตเซเช‚
  • Linux เชฎเชพเช‚ เชถเซ‹เชง เชธเซเชฅเชฟเชคเชฟ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‰เชฒเชŸเชพเชตเซ€ เชถเช•เชพเชฏ
  • เชฒเชฟเชจเช•เซเชธ เชถเซ‡เชฒเชฎเชพเช‚ เชตเชจ-เชฒเชพเช‡เชจเชฐ เชฆเซเชตเชพเชฐเชพ เชฌเชนเซเชตเชฟเชง เชฒเชพเช‡เชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเชธเชพเชฐ เช•เชฐเชตเซ€
  • เชฌเซ‡เชถเชฎเชพเช‚ เชธเชฟเช‚เช—เชฒ เช•เซเชตเซ‹เชŸเซเชธเชฅเซ€ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชšเชตเซเช‚
  • เชตเชฟเชจเซเชกเซ‹เช เช•เชฎเชพเชจเซเชก เชฒเชพเช‡เชจเชฎเชพเช‚ เชคเชฎเชพเชฎ เชธเชพเชฎเช—เซเชฐเซ€ เชธเชพเชฅเซ‡เชจเซ€ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชตเซ€
  • เชฌเซ‡เชถ เชเชฎเชตเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชซเชพเช‡เชฒเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฒเช–เซเชฏเชพ เชตเชฟเชจเชพ เชคเซ‡เชจเซเช‚ เชจเชพเชฎ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชฆเชฒเชตเซเช‚

เชคเชฎเชพเชฐเซเช‚ เชงเซเชฏเชพเชจ เชฌเชฆเชฒ เช†เชญเชพเชฐ.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹