از وقتی با Git آشنا شدم خیلی علاقهای به استفاده از Github و Gitlab و غیره حتی با توجه به آمار و امکانات جانبی که در اختیار میگذارن نداشتم و ترجیحم این بوده که Server اختصاصی خودم را داشته باشم. اینطوری بینهایت پروژه با هر تنظیمات و امکاناتی که میخوام در اختیارم دارم. فقط موضوع هزینه هست که بعید میدونم حتی یک شرکت کوچیک مشکلی با ۳۰ یا ۵۰ هزار تومان هزینه در ماه برای خرید یک VPS خیلی عادی توی دیتاسنترهای داخلی داشته باشه! تا بدین شکل علاوه بر استفاده از Git بتونه سرویسهای آنلاین دیگهای را هم برای مجموعه خودش به صورت یکجا داشته باشه.
برای نصب Git روی سرویس دهنده دستور زیر را میزنیم:
sudo apt-get install git-core
حالا یک کاربر جدید برای Git ایجاد میکنیم:
sudo useradd git passwd git
برای اینکه امنیت را در زمان استفاده از SSH بالا ببریم بهتره از طریق SSH Key Pairs روی سرویس دهنده خودمون Login کنیم. برای این کار با دستور زیر یک جفت Public Key و Private Key روی سیستم محلی خودمون میسازیم:
ssh-keygen -t rsa
این دستور ابتدا سؤال میکنه که کلید ها را توی چه مسیری ایجاد کنه که عموما مسیر پیش فرض ssh./~ خوبه اما میتونین هر مسیر دیگهای را بهش بدین (جالب نیست چون زمان ssh زدن مجبور میشین آدرس Public Key را به دستور ssh بدین). همچنین ازتون میخواد که یک گذرواژه روی کلیدها بگذارین که دلخواه هست اما بهتره این گذرواژه را هم وارد کنید.
Private Key روی سیستم محلی شما میمونه ولی باید Public Key را روی سرویس دهنده خودتون به فایل ssh/authorized_keys./~ کنید که با دستور زیر خودکار انجام خواهد شد:
cat ~/.ssh/id_rsa.pub | ssh git@remote-server-ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
حالا بعد از انجام این کار زمانssh از طریق جفت کلید لاگین انجام میشه و فقط در صورتی گذرواژه میخواد که روی کلیدها گذرواژه گذاشته باشین.
فرض میکنیم شما یک پروژه به نام myproject روی سیستم محلی دارین که میخواین اون را روی سرویس دهنده Push کنید.
با ssh از طریق نام کاربری git روی سرویس دهنده لاگین میکنیم (میتونین هم با root لاگین کنین و با دستور su کاربر را به git تغییر بدین.) و پوشه مخازن را در مسیر دلخواه ایجاد میکنید:
mkdir -p /home/git/repos
به پوشه ایجاد شده میریم:
cd /home/git/repos
مخزن را با دستور زیر ایجاد میکنیم:
git init --bare myproject.git
حالا روی سیستم محلی در مسیر پروژه myproject با دستور زیر این مخزن Remote را اضافه میکنیم(فرض بر این است که شما قبلاً مخزن محلی پروژه را ایجاد کردهاید و پروژه آماده Push شدن است):
git remote add origin ssh://git@remote-server-ip:port/home/git/myproject.git
در این مرحله با دستور زیر پروژه را روی مخزن Remote برای اولین بار اینطوری Push میکنیم:
git push -u origin master
سوئیچ u- به push میگه Tracking Information را Set کن تا در زمان Pull و Fetch نیاز به نام بردن از Branch نباشه. اگه توی دستوراتتون Branch را میزنین نیاز به این سوئیچ نیست.