نوشته‌های من

درباره برنامه‌نویسی، بازی، کتاب و هر چیزی که دوست داشته باشم

نوشته‌های من

درباره برنامه‌نویسی، بازی، کتاب و هر چیزی که دوست داشته باشم

نوشته‌های من
طبقه بندی موضوعی

۲ مطلب با کلمه‌ی کلیدی «گیت» ثبت شده است

دریافت یک مخزن گیت

همانطور که می‌دانید برای دریافت یک مخزن گیت بایستی از فرمان git clone  استفاده کرد. به عنوان مثال برای دریافت سورس لینوکس می‌توان فرمان زیر را اجرا کرد.

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

مخزن گیت سورس لینوکس حجم نسبتا زیادی دارد (حدود ۹۰۰ مگابایت) و چنانچه سرعت اینترنت خوبی نداشته باشید و یا ارتباط اینترنت قابل اطمینانی نداشته باشید ممکن است نتوانید به راحتی این مخزن گیت را دریافت کنید. چرا که گیت در صورت قطع شدن اینترنت تمامی مراحل دریافت را از ابتدا انجام می‌دهد.


دریافت یک مخزن گیت حجیم

چنانچه به هر دلیلی نتوانید مخزن گیت مورد نظر خود را با استفاده از فرمان بالا دریافت کنید، می‌توانید این روش را امتحان کنید.

از آنجایی که تقریبا تمامی مخازن گیت علاوه بر پروتکل git از پروتکل‌های دیگر مثل http پشتیبانی می‌کنند، می‌توانید فایل‌های مخزن را با استفاده از یک نرم‌افزار دانلود، دریافت کنید و سپس آن را به یک مخزن معمولی تبدیل کنید.

مخزن گیت سورس لینوکس، علاوه بر پروتکل‌های ذکر شده از پروتکل rsync نیز پشتیبانی می‌کند که به ما امکان دریافت فایل‌های مخزن را به راحتی می‌دهد. برای این کار می‌توانید فرمان زیر را اجرا نمایید.

$ rsync -arvzP rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/ linux.git/

چنانچه این فرمان به دلیل قطع شدن ارتباط اینترنت، قطع شد و یا به خواست خودتان اجرای آن را  قطع کردید. می‌توانید مجددآن را اجرا کنید تا دریافت فایل‌ها ادامه پیدا کند.

پس از اتمام اجرای فرمان بالا و دریافت تمامی فایل‌های مخزن سورس لینوکس، بایستی این مخزن را که در وضعیت bare قرار دارد به یک مخزن معمولی تبدیل کنید تا بتوانید از آن استفاده کنید. انجام این کار با اجرای فرامین زیر امکان پذیر است.

$ mkdir linux
$ mv linux.git linux/.git
$ cd linux
$ git remote add remote git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
$ git config --bool core.bare false
$ git checkout master

به این دلیل که دایرکتوری مخزن در حالت معمولی با نام .git مشخص می‌شود، دو فرمان اول و دوم، دایرکتوری دریافت شده را به این نام تغییر  ‌می‌دهند.  فرمان چهارم ارتباط بین مخزن دریافت شده و مخزن اصلی را مشخص می‌کند تا برای به‌روزرسانی‌های بعدی بتوان از همان فرامین گیت استفاده کرد. فرمان بعدی مخزن دریافت شده را از حالت bare خارج کرده و به یک مخزن معمولی تبدیل می‌کند و در نهایت آخرین فرمان فایل‌های مربوط به شاخه master را از مخزن بیرون می‌کشد تا بتوان از آن‌ها استفاده کرد.


شاد و پیروز باشید.

  • حامد ذقاقی

همانطور که احتمالا می‌دانید «گیت» یا همان "git" یک «سیستم کنترل نسخه» توزیع شده است. تا دیروز تمامی پروژه‌هایم توسط "svn" کنترل می‌شد اما برای پروژه‌ی اخیر تصمیم گرفتم که از گیت استفاده کنم. در ادامه مراحل مختلف نصب و راه اندازی گیت را توضیح می‌دهم به امید اینکه بتواند مورد استفاده واقع شود.

تمامی دستورات بر روی سیستم اوبونتو و سرور دبیان انجام شده است. برای استفاده از این دستورات در سیستم عامل ویندوز ابتدا نرم‌افزار گیت را از سایتش (http://www.git-scm.com) دریافت کرده و پس از نصب از git bash استفاده نمایید.

برای دسترسی به یک سرور گیت می‌توان از سه پروتکل ssh، git و http استفاده کرد که در اینجا نحوه راه‌اندازی و استفاده ssh توضیح داده خواهد شد.

اولین قدم ایجاد یک کاربر جدید در سرور است. دیگر سیستم‌ها از طریق این کاربر به سرور دسترسی خواهند داشت. چنانچه نمی‌خواهید از یک کاربر مجزا برای گیت استفاده کنید می‌توانید این مرحله را انجام ندهید.

server$ sudo adduser git

پس از پاسخگویی به سوالات مربوط به کاربر git نوبت به نصب گیت میرسه.

server$ sudo apt-get install git-core

بعد از اتمام مراحل نصب گیت پوشه‌ای برای پروژه خود ایجاد می‌کنیم و در آن پوشه یک مخزن گیت راه‌اندازی می‌کنیم. دقت نمایید که دستورات زیر باید توسط کاربر git و یا هرکاربری که برای این امر تعریف کرده‌اید انجام شود.

server$ mkdir /Projects/ProjectName
server$ cd /Projects/ProjectName
server$ git --bare init

اکنون تقریبا راه‌اندازی گیت در سرور به اتمام رسیده است. به سیستمی که قرار است از این سرور استفاده نماید می‌رویم و تنظمیات آن را نیز بدین شکل انجام می‌دهیم:

client$ sudo apt-get install git-core

با اجرای مرحله بالا گیت را روی سیستم مورد نظر نصب می‌کنیم. چنانچه قبلا این کار را انجام داده‌ایم نیازی به اجرای دوباره‌ی آن نیست.

سپس تنظیمات گیت را برای کاربر این سیستم انجام می‌دهیم. که شامل نام و ایمیل کاربری است که از سرور استفاده می‌کند. تمامی تغییراتی که این کاربر انجام میدهد با این نام و ایمیل به ثبت می‌رسد.

client$ git config --global user.name "Hamed Zaghaghi"
client$ git config --global user.email "hamed.zaghaghi@gmail.com"

در مرحله بعد به پوشه حاوی کدهای اولیه می‌رویم و یک مخزن گیت محلی در آن پوشه ایجاد می‌کنیم.

client$ cd ProjectPath
client$ git init

پس از ایجاد یک مخزن گیت محلی، فایل‌های پروژه را به مخزن اضافه می‌کنیم. به عنوان مثال

client$ git add *.cpp
client$ git add *.h
client$ git add Makefile

چنانچه در حال حاضر پروژه حاوی هیچ فایلی نیست، یک فایل خالی ایجاد کنید و آن را به مخزن اضافه نمایید.

در ادامه فایل‌های اضافه شده در مخزن را به مخزن تحویل می‌دهیم به عبارت دیگر این تغییرات را commit میکنیم.

client$ git commit -m "Initial commit"

عبارتی که در انتهای دستور آمده است توضیحاتی است که برای این تحویل می نویسیم و می‌تواند هر متن دیگری باشد.

در آخرین مرحله از راه‌اندازی گیت. بین مخزن محلی و مخزن اصلی که در سرور واقع شده است دستور زیر را اجرا می‌کنیم.

client$ git remote add origin git@server:/Projects/ProjectName
دقت نمایید که آخرین قسمت از دستور بالا حاوی کاربر تعریف شده در سرور (git)، نام و یا آی‌پی سرور (server) و مسیر پروژه روی سرور (/Projects/ProjectName) می‌باشد.
بعد از برقراری این ارتباط تغییراتی را که به مخزن محلی تخویل داده‌ایم را برای مخزن اصلی ارسال می‌کنیم.
client$ git push origin master
بعد از اجرای فرمان بالا گیت برای ارسال تغییرات به سرور از پروتکل ssh استفاده می‌کند و به همین دلیل در این مرحله رمزعبور کاربر git پرسیده می‌شود.

کاربران دیگر برای استفاده از این سرور تنها کافی است پس از نصب گیت و اعمال تنظیمات مربوط به نام کاربر و ایمیل کاربر که در بالا گفته شد یک نسخه از آخرین وضعیت سرور را دریافت کنند.

other-client$ git clone git@server:/Projects/ProjectName

اگر می خواهید که از محیط تحت وب گیت استفاده کنید می‌توانید با اجرای فرمان زیر در سرور به این محیط تحت وب در آدرس سرور پورت 1234 دسترسی داشته باشید.

server$ git instaweb --httpd=apache2

چنانچه روی سرور، وب‌سروری غیر از apache نصب کرده‌اید مانند webrick و یا lighttpd. برای اجرای فرمان بالا از نام وب سرور به جای apache2 استفاده کنید.

با فرمان زیر نیز می‌توانید این محیط تحت وب را غیر فعال نمایید.

server$ git instaweb --httpd=apache2 --stop

بیشتر بخوانید، بیشتر بدانید

  • برای یادگیری مفاهیم کار با گیت خواندن این کتاب را توصیه می‌کنم.
  • برای تمرین دستورات گیت حتما به اینجا سر بزنید.
  • چنانچه پروژه شما متن باز است می‌توانید از سرویس رایگان github.com استفاده کنید.
  • حامد ذقاقی