منوهای نصب در پنل مدیریت

  • ورود
  • هیچ محصولی در سبد خرید نیست.

گیت (git) چیست؟

آشنایی و کار با گیت

گیت (git) یک ورژن کنترلر (version controller) است، گیت متن باز (open source)  و برای پیگیری تغییراتی است که روی سورس کدهای (source code) توزیع شده اعمال شده است.

برای درک بهتر از تعریف بالا بهتر است ابتدا مفهوم ورژن کنترلر را بدانیم و بدانیم که اصلا چرا باید از گیت استفاده کنیم و دلیل ساخته شدن گیت چه چیزی هست؟

ورژن کنترل (version control) چیست؟

VCS
نمونه یک vcs

در مهندسی نرم افزار، کنترل نسخه (version control) مجموعه ای از سیستم هاست که میتواند مدیریت تغییرات برنامه ها، فایل های متنی، وب سایت ها یا سایر کالکشن های اطلاعاتی را به عهده بگیرد.

در پروژه های بزرگ که چند برنامه نویس بر روی یک پروژه کار میکنند اهمیت داشتن کنترل نسخه  (version control) نمایان میشود زیرا که مدیریت پیگیری تغییرات انجام شده بر عهده ورژن کنترل است عملیاتی مانند تغییر سورس، راهنمای برنامه، اشیاء (object) نرم افزاری  و …

در حال حاضر محبوب ترین و معروفترین ورژن کنترلر git است؛ در ادامه لیستی از ورژن کنترلرها را مشاهده میکنید.

  • Git
  • CVS
  • SVN
  • Mercurial
  • Monotone
  • Bazaar
  • TFS
  • VSTS
  • Perforce Helix Core
  • IBM Rational ClearCase
  • Revision Control System (RCS)
  • Visual SourceSafe (VSS)
  • PVCS
  • darcs
  • Vault

اصطلاحات رایج در کنترل نسخه (version control)

مخزن (repository): به محلی که دیتای فعلی و فایل های قدیمی تر که معمولا روی یک سرور ذخیره میشوند مخزن (repository)  میگویند.(گاهی depot نیز نامیده میشود)

init: ساخت مخزن (repository)  جدید برای ذخیره تغییرات.

Status: نمایش وضعیت حال حاضر پرونده های پروژه

Log: نمایش تغییرات انجام شده

Commit: ذخیره تغییرات روی فایل های که توسط version control  کنترل میشود.

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


دلایل استفاده از git:

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

یا وقتی برنامه ای نوشته اید که تا دیروز درست کار میکرد اما بعد از اضافه کردن چند فیچر اضافی کل برنامه به هم ریخته و…

در مثالی دیگر میتوان به اتفاقات ناگهانی اشاره کرد که باعث از بین رفتن فایل های پروژه ما میشود و حتی وقتی که به مسافرت میریم  و به فایل های پروژه دسترسی نداریم!

گیت راه حلی برای تمامی این مشکلاست
اما قبل اینکه سراغ کار با گیت بریم اول یه سری به تاریخچه این ورژن کنترل بزنیم.

تاریخچه git:

چیزی که باعث ساخته شدن این سیستم کنترل نسخه (CVS) شد پروژه لینوکس بود!
اما چطور؟ قبل از سال 2002 از ورژن کنترل ها برای توسعه پروژه لینوکس استفاده نمیشد و  برنامه نویسان کرنل لینوکس هر کدام به صورت خصوصی و انفرادی از برنامه های مثل SVN و CVS(Concurrent Versions System) استفاده میکردند.
لازم به ذکر است که دلیلی که باعث شده بود توسعه دهندگان لینوکس از ورژن کنترل های توزیع شده استفاده نکنند عدم پشتیبانی از حجم گسترده تغییراتی بود که روی کرنل انجام میشد.

سال 2002 خالق لینوکس لینوس توروالدز از Bitkeeper به عنوان ورژن کنترل رسمی لینوکس استفاده کرد بیت کیپر این اجازه را به توسعه دهندگان پروژه های متن باز اجازه میداد که به صورت رایگان از سرویس ها استفاده کنند.

Linus-Torvalds
خالق لینوکس Linus-Torvalds

بعد از یک سری مسائل روند ساخت و توسعه گیت آغاز شد و دقیقا این اتفاق از جایی رقم خورد که بیت کیپر سرویس خود را دیگه به صورت رایگان ارائه نداد.
سال 2005 اجازه استفاده رایگان از بیت کیپر محدود شد که دلیل آن مهندسی معکوس روی BitKeeper بود توسط فردی به اسم Andrew Tridgell لینوس شروع به جست و جوی جایگزین مناسب کرد که موفق نشد و به این نتیجه رسید که باید یک control version خلق کند! در همان سال و هفته های اول توسعه گیت قادر به ادغام کردن (merge) شاخه (branch) بود و بعد از گذشت دو ماه از توسعه git به عنوان نرم افزار کنترل نسخه رسمی لینوکس معرفی شد.


نصب git:

برای نصب گیت بر روی ویندوز میتوانید از این لینک استفاده کنید.

سپس مانند هر برنامه ویندوزی دیگری با دنبال کردن مراحل نصب گیت را نصب کنید.

برای نصب بر روی لینوکس میتونید به این لینک مراجعه کنید  و با توجه به نسخه ای که از آن استفاده میکنید دستور وارد کنید. هممچنین برای نصب git بر روی مک میتوانید از این لینک استفاده کنید


شروع کار با گیت در cli:

برای دسترسی به گیت ابتدا لازم است که وارد محیط خط فرمان (command line) سیستم عامل خود بشوید.

در ویندوز به cmd، در لینوکس و مک به ترمینال مراجعه کنید.

برای اینکه بدانیم که git بر روی سیستم ما نصب شده یا نه دستور زیر را تست میکنم

git --version

اگر کامپیوتر شما نتوانست این دستور را بشناسد باید گیت را نصب کنید و path این نرم افزار را هم به environment variables اضافه کنید.

برای شروع کار با گیت ابتدا باید مشخصات خود را وارد کنید برای این کار باید از دستورات زیر استفاده کنید.

برای اضافه کردن نام کاربری (username) دستور زیر را بزنید.

git config --global  user.name “mohammadHejazi”

برای اضافه کردن ایمیل نیز دستور زیر را بزنید.

git config --global  user.email “[email protected]

برای دیدن کانفیگ گیت هم میتونید از این دستور استفاده کنید

git config --global  --list

لازم به ذکر است گزینه –global  درواقع به گیت میگوید که شما میخواهید از این کانفیگ برای تمام کارهای که روی سیستمتان انجام میدهید استفاده کنید اگر شما میخواهید تنظیماتی که اعمال میکنید فقط بر روی مخزن فعلی انجام بشود میتوانید از گزینه –local به جای –global   استفاده کنید یا این گزینه را حذف کنید که به صورت پیش فرض –local  در نظر گرفته میشود.

شما میتوانید اطلاعات بیشتری در مورد چگونگی کانفیگ و گزینه ها از این لینک به دست آورید.

اصطلاحات و واژه ها در گیت:

Nampespace یا فضای نامی:

Namespace نام کاربری یا نام گروه است.

برای مثال در گیت هاب https://github.com/pythoniha مسیری است که پروژه ها و پروفایل github پایتونی ها در آن قرار دارد در این مثال پایتونی ها یک فضای نامی (Namespace) است.

Repository  یا مخزن:

همانطور که پیش تر گفتیم مخزن مکانی است که دیتا و فایل های ما در آن قرار میگیرد و همانطور که ما در سیستم خود فایل ها را در پوشه ها قرار میدهیم میتوانیم این کار را در هاست های سیستم کنترل ورژن گیت مانند گیت هاب و گیت لب انجام بدهیم. به مخزن های که بر روی هاست هستند remote repository میگویند؛ ما میتوانیم یک کپی از فایل ها را در سیستم خود داشته باشید که به آن local copy میگویند

Fork:

وقتی میخوایم مخزن فرد دیگری را کپی کنیم باید پروژه را فورک (fork) کنیم، با فورک کردن یک کپی کامل از آن پروژه در فضای نامی  (namespace)  شما ایجاد خواهد شد که به این ترتیب شما میتوانید تمام دسترسی ها برای اعمال تغییرات را داشته باشید.

برای مثال اگر من پروژه بررسی رنک الکسا را از گیت هاب پایتونی ها فورک کنم که در آدرس https://github.com/Pythoniha/Alexa_Rank_Checker_Selnium قرار دارد تمامی محتوایات این پروژه به namespace من منتقل میشود https://github.com/iammohammadhejazi/Alexa_Rank_Checker_Selnium

حالا من میتونم این پروژه را از namespace خودم clone کنم و تغییراتی را که میخواهم روی پروژه اعمال کنم در آخر در صورت تمایل تغییراتی را که انجام دادم برای مخزن اصلی ارسال کنم.

Clone  و Download:

شما میتوانید از طریق دانلود (download) و یا کلون (clone) کردن از فایل های یک remote repository کپی بگیرید. اما این دو با هم متفاوت هستند اگر شما پروژه ای را دانلود کنید، نمیتوانید آن را با remote repository همگام سازی کنید در صورتی که اگر پروژه را clone کنید شما همچنمان یک کپی از فایل ها دارید اما در عین حال هنوز اتصالتان با پروژه اصلی  یا همان remote repository برقرار است؛ شما میتوانید روی فایل ها در کامپیوتر خود کار کنید و در اخر تغییرات را آپلود کنید.

Pull و push:

بعد اینکه شما یک پروژه را روی سیستم خود کپی کردید و تغییرات را روی آن اعمال کردید میتوانید تغییرات را روی سرور آپلود کنید و این کار را با push کردن انجام میدهید که در ادامه دستور آن را آورده ایم:

git push

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

دستورات پایه گیت:

ما در این قسمت مثال های خود را با پروژه ساده بررسی رنک الکسا  که در گیت هاب داریم به شما نشان میدهیم.

مسیر این مخزن در این لینک است.

همانطور که در قسمت بالای در مورد fork کردن صحبت کردیم بهتر است شما وارد حساب کاربری خود در github بشوید و پروژه را fork کنید بعد از مسیر زیر به پروژه خود دسترسی داشته باشید:

https://github.com/<نام کاربری شما در گیت هاب>/Alexa-Checker

کلون (clone) کردن:

برای کار کردن به صورت local روی پروژه باید آن را در سیستم خود کلون کنیم این کار را معمولا از طریق https انجام میدهند  برای مثال من میخوام repository  خود را کلون کنم این کار را با دستور زیر انجام میدهم:

git clone https://github.com/IAmMohammadHejazi/Alexa-Checker.git

تبدیل یک فولدر به مخزن:

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

دستور git init را باید در پوشه ای بزنید که میخواهید به عنوان مخزن شناخته بشود. با این کار یک پوشه با نام .git در همان مسیر ساخته میشود .

در پوشه .git ما میتوانیم فایل های مربوط به کانفیگ را پیدا کنیم.

در مرحله بعد ما میخواهیم فایل ها را به remote repository منتقل کنیم برای این کار باید مسیر مخزن ریموت خود را اضافه کنیم که تغییرات روی پروژه درستی اعمال شود.

اضافه کردن یک remote repository

با اضافه کردن یک remote repository به پوشه local خودتون به گیت می فهمانید که مسیر این دو پروژه در هاست و سیستم شما یکی است این عمل باعث میشود که پروژه شما در سیستم خودتون به عنوان local copy پروژه در remote repository باشد.

 برای اضافه کردن یک مخزن ریموت به local copy  طبق مراحل زیر عمل کنید:

  1. یک مخزن در حساب کاربری خود بسازید
  2. اگر به صفحه مخزن رفته و اسکرول کنید به سمت پایین راهنمای ها را میبینید.
  3. کد مربوط به اضافه کردن remote repo مانند زیر است
git remote add origin https://github.com/IAmMohammadHejazi/test.git

دانلود اخرین تغییرات پروژه:

برای اینکه بتوانید از آخرین نسخه برنامه استفاده کنید شما باید تمامی اطلاعات را pull کنید (این مسئله مهم است که هر بار که میخواهید کار خود را شروع کنید این عمل را انجام دهید) با این کار تمامی اطلاعات پروژه pull یا clone شده بروزرسانی میشود.

با دستور زیر میتوانید.

git pull <REMOTE> <name-of-branch>

وقتی شما یک مخزن را کلون میکنید، REMOTE معمولا origin است و اشاره به آدرسی دارد که مخزن از آن کلون شده این آدرس https و یا SSH است. Name of branch نیز معمولا master نام دارد البته شما میتوانید شاخه ای که تغییرات را در آن انجام میدهید جایگزین کنید در این مورد من از حالت پیشفرض و معمول استفاده کردم پس با دستور زیر اطلاعات را به روز میکنم.

git pull origin master 

مشاهده مخازن remote:

با دستور زیر نیز میتوانید به راحتی سرور های remote خود را مشاهده کنید.

git remote -v

گزینه -v به معنای verbose است.

خروجی این دستور در گیت من :

$ git remote -v
origin  https://github.com/IAmMohammadHejazi/test.git (fetch)
origin  https://github.com/IAmMohammadHejazi/test.git (push)

به وبلاگ پایتونی ها سر بزنید.

۰ پاسخ به "گیت (git) چیست؟"

ارسال یک پیام

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

X