راهنمای git قسمت دوم

6 12 2010

این قسمت دوم این راهنما هست برای دیدن قسمت اول به اینجا بروید.

توی این مدت ۲ تا کنفرانس خیلی خوب در مورد گیت که توسط google پر شده پیدا کردم که به دردتون میخوره و حتما پیشنهاد می کنم ببینید: اولیش اینجا هست که لینوس توروالدز (آغاز کننده ی پروژه ی گیت و کرنل لینوکس) صحبت می کنه دومی هم اینجا هست.

برای کار گروهی نیاز به یک سرور دارین که یه گیت رو به عنوان repository روی اون نصب کنین و بقیه ی افراد تغییرات مورد نظرشون رو روی اون بذارن. برای این کار در سرور یه فولدر بسازین و دستور زیر رو توش بزنین: git init --bare توجه کنین که برای repository حتما باید bare رو استفاده کنید.

حالا توی لوکال باید از پروژه یه clone بگیرین:به فولدر مورد نظر در لوکال بروید و دستور زیر رو بزنید: git clone ssh://USER@HOST/PATHTOGIT و پس از اتمام مراحل فایل هایی که می خواهین توی پروژه بذارین رو در همین فولدری که ساخته شد قرار دهید. سپس commit کنید و با دستور زیر اون ها رو به سرور بفرستید: git push origin master حالا به طور گروهی هر نفر از گروه می تونه از پروژه clone کنه و روی اون کار کنه. ممکنه وقتی شما اقدام به push کردن می کنین با خطای زیر مواجه بشین: ! [rejected] branchname -> branchname (non-fast forward) error: failed to push some refs to 'user@HOST:FOLDERTOGIT'

شما باید قبلا از push تغییرات رو از سرور دریافت کنین: git pull origin master

اگر طراحی وب کار میکنید و میخواین سایت هاتون رو روی وب بذارین و با git اون ها رو آپدیت کنین(البته به طور کلی اگه میخواین یه work dir بسازین که سورس کد هاتون توی سرور توی یه فولدر نشون داده بشن)مراحل زیر رو انجام بدین:

پس از این که گیت رو روی سرور نصب کردین و ریپوزیتوری را ایجاد کردید باید آن را کانفیگ کنید:

با استفاده از دستور git config مقادیر زیر را سِت کنید:

git config core.bare false
git config core.worktree /PATHTOWORKTREE/.

git config receive.denyCurrentBranch ignore

git config core.logAllRefUpdates true

PATHTOWORKTREE آدرس فولدری هست که میخواین تو سرور فایل ها قرار بگیرن مثلا /var/www/project .

مهم: به نقطه ‹.› بعد آخر خط اول دقت کنید. این نقطه فراموش نشود.

تمام تنظیماتی که انجام می دهید در فایل config درون ریپوزیتوری تان ذخیره میشود که میتوانید در صورت اشتباه انجام دادن کانفیگ آن را ویرایش کنید.

الآن باید کاری کنیم که وقتی به سرور push کردیم به طور خودکار git دایرکتوری مورد نظر توی سرور رو آپدیت کنه.

git دارای hook هایی هست که برای اعمال مختلفی از جمله وقتی push رو انجام میدیم تعریف شده. ما تنها کاری که باید بکنیم باید بریم اون hook رو دستکاری کنیم.

فایل hooks/post-receive رو در ریپوزیتوری بسازید و آن را به صورت زیر ویرایش کنید: #!/bin/sh
git checkout -f master
خوب حالا باید این فایل رو با دستور زیر executable کنیم: chmod +x hooks/post-receive الآن هر باری که به سرور push کنید دایرکتوری آپدیت میشه. فقط نکته ای که هست باید دایرکتوری مورد نظرتون وجود داشته باشه و git بتونه توش بنویسه

برای استفاده ی گیت بر روی ویندوز از برنامه ی msysgit می تونید استفاده کنید. نرم‌افزار های مدیریت گیت: برای مدیریت گیت به صورت گرافیکی نرمافزار های متفاوتی نوشته شده از جمله ی اون ها می توان به qgit , gitk, gitview اشاره کرد. این برنامه ها واسط های گرافیکی شما با گیت هستند که به راحتی می تونید تغییرات ثبت شده در پروژه رو مشاهده کنین. من توی این مقاله سعی کردم کلیات ماجرا رو بگم و یه راهنمایی مختصری کرده باشم به هر حال شما برای کار با برنامه باید کتابش رو بخونین.

Advertisements




راهنمای git – قسمت اول

27 08 2010

اول اینکه باز هم سلام البته بعد از یک سال و دوم این که خیلی دنبال یه مقاله فارسی گشتم ولی چیز درست حسابی پیدا نکردم! برا همین تصمیم گرفتم انگلیسی ها رو بخونم و تا جایی که می تونم داکیومنت کنم. پس بفرما:

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

تا قبل از استفاده از برنامه های کنترل ورژن حتما مثل من از فولدر های درون پرژه بک آپ می گرفتید. ولی با گیت این مشکل به راحتی حل میشه! کافیه شما بعد از انجام هر کاری به گیت بگید که تغییرات انجام شده رو ذخیره کنه! مثلا هر بار که یه ماژول نوشتید یا یه قابلیت جدیدی رو اضافه کردین این کار رو انجام میدین.

قبل از ادامه دادن برای دانلود برنامه به git-scm مراجعه کنید. یه کتاب خیلی خوب هم هست که در اینجا می تونید بخونیتش.
برای نصب هم می تونید از پکیج لیست هاتون git-core رو نصب کنید.
برای تعریف پروژه با خط فرمان به پوشه ی پروژه برین و دستور زیر رو بزنین:
git init

با این دستور یه دایرکتور .git توی پروژه میسازه و اطلاعات پروژه رو توی اون نگه میداره.
توی خط فرمان دستور های زیر رو بزنید:
git config --global user.name "YOUR NAME"
git config --global user.email "YOUR EMAIL ADDRESS"
git config --global core.editor vim

خط اول و دوم که مشخصاتتون رو وارد می کنین و خط سوم هم ادیتور مورد علاقتون رو میذارین که فایل ها پیش فرض با این ادیت بشه. –global هم برای تمام پروژه های سیستم اعمال می کنه. این کار رو کردیم تا وقتی ورژنی رو ثبت می کنین به نام و ایمیل خودتون ثبت بشه.
حالا می تونین فایل های پروژه رو به مخزن با دستور زیر اضافه کنین:
git add .

وقتی فولدر یا فایلی رو در پروژه ساختین باید اون رو به مخزن اضافه کنین! نقطه ای که در آخر خط نوشتیم به این معنیه که تموم فایل های توی دایرکتوری رو به مخزن اضافه کنه. اصطلاحا اون ها رو track می کنه.
خوب حالا یه دستور در git هست به نام commit ! با commit شما تمام کار هایی رو که انجام دادین رو ثبت می کنین. به طور مثال وقتی یه قابلیت اضافه کردیم یه کامیت میزنیم و بعد کار بعدی رو انجام میدیم!‌با این کار اگه در هنگام ادامه دادن پروژه فایل ها خراب شدند به راحتی می تونیم برگردیم به حالتی که کامیت کرده بودیم.
با دستور زیر می تونین کارهایی که از کامیت قبلی تا الآن انجام دادین رو مشاهده کنین:
git status
با دستور زیر هم یه کامیت جدید میسازین:
commit -a
-a باعث میشه همه ی فایل هایی که track کرده بوده رو چک کنه ببینه چه اتفاقی براشون افتاده . دقت کنین که فایل هایی که جدید ساختین رو باید دستی با دستور add به مخزن اضافه کنین. بعد از زدن دستور بالا یه کامنت برای عمل انجام شده میذارین و از ادیتور خارج میشین.
دستور log هم تمام کامیت های ثبت شده رو لیست می کند:
git log
هر کامیتی که ثبت می کنین یه کد چند رقمی بزرگ میده که نشون دهنده ی آی دی کامیت هست! وقتی می خواهیم سیستم رو به وقتی که کامیتی رو ثبت کرده بودیم برگردونیم باید این آی دی رو در git checkout وارد کنیم:
git reset --hard COMMIT ID

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

در قسمت بعدی کمی از branch و کار با remote repository خواهم نوشت