بررسیفناوری

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

با گیت چه کارهایی می توان انجام داد ؟

گیت ( git ) برنامه ای است که برای هماهنگی کار در میان برنامه نویسان به جهت افزایش سرعت و یکپارچگی داده ها طراحی شده است اما بدون گیت هم می شود برنامه نویسی کرد ولی می توان با اطمینان مدعی شد که هیچ برنامه بزرگی در جهان بدون استفاده از یک ورژن کنترل ، نوشته نشده است .

پروژه‌های نرم‌افزاری و فایل‌های مربوطه به صورت دائم در حال تغییر هستند و هدف گیت در این بین این است که این تغییرات را به روشی کار‌آمد مدیریت کند.

سرویس های مثل GitHub و GitLab با استفاده از Git این امکان را برای ما فراهم میکنند که بتوانیم پروژه هایمان را با افراد دیگر به اشتراک بگذاریم و آن ها میتوانند در توسعه پروژه با شما همکاری داشته باشند.

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

گیت ها و گیت لب
گیت ها و گیت لب

گیت‌هاب و گیت‌لب هر دو نسخه‌های مبتنی بر وب مخازن گیت‌ هستند. 

Git نرم افزار رایگان و متن باز است که تحت شرایط GNU General Public License Version 2 توزیع شده است.

چرا باید از یک نرم افزار کنترل نسخه استفاده کنیم؟

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

تاریخچه گیت

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

هسته لینوکس یک پروژه نرم افزاری منبع باز با دامنه نسبتا وسیع است. برای بیشتر عمر تعمیر و نگهداری هسته لینوکس (1991-2002) ، تغییرات در نرم افزار به عنوان تکه ها و فایل های بایگانی منتقل شد. در سال 2002، پروژه کرنل لینوکس با استفاده از DVCS اختصاصی به نام BitKeeper شروع شد.

در سال 2005، ارتباط بین جامعه که هسته لینوکس و شرکت تجاری که BitKeeper را توسعه داده بود، شکست خورد و وضعیت رایگان این ابزار لغو شد. این باعث شد که جامعه توسعه لینوکس (و به ویژه لینوس توروالدز، خالق لینوکس) ابزار خود را بر اساس برخی از درسهایی که در هنگام استفاده از BitKeeper آموخته بودند، توسعه دهند. برخی از اهداف سیستم جدید عبارت بودند از:

  • سرعت و طراحی ساده
  • قادر به پردازش پروژه های بزرگ مانند هسته لینوکس موثر (سرعت و اندازه داده ها)
  • پشتیبانی قوی برای توسعه غیر خطی (هزاران شاخه موازی)
  • کاملا توزیع شده

گیت توسط لینوس توروالدز در سال 2005 برای توسعه هسته لینوکس، با دیگر توسعهدهندگان هسته ای که به توسعه اولیه خود کمک می کنند، ایجاد شده است. نگهدارنده فعلی آن از سال 2005، Junio ​​Hamano است.

قبل از کارکردن با گیت بدانید

○ چند شاخه شدن (Forking & Branching)

این موارد از مفاهیم پایه ای گیت می باشند.زمانی که پروژه ها بصورت کد باز تعریف می شوند ، شما می توانید سورس پروژه را برداشته و تغییرات دلخواه خود را در آن اعمال نمایید. اگر احساس کردید تغییرات شما برای پروزه مفید بوده است می توانید توسط Git درخواست اعمال تغییرات خود را به سازنده اصلی آن کد بفرستید و در صورت تائید سازنده کد ، تغییرات شما به عنوان نسخه جدید در صفحه اصلی پروژه درج می گردد.
این امکان به شما اجازه می دهد تا ده ها یا شاید صدها برنامه نویس در لحظه بر روی پروژه شما کار کند و نسخه بهبود یافته را برای شما ارسال کند.
پس از آن دیگر به شما بستگی دارد که آن نسخه از تغییرات را بپذیرید یا خیر.

توسط Branching نیز توسعه دهندگان تائید شده می توانند بدون اینکه به کد اصلی آسیبی برسد مشکلات آن را برطرف کنند و پس از برطرف کردن آن نسخه اصلاح شده را در نسخه اصلی اعمال کنند.
امیدوارم بصورت کلی با مفاهیم گیت(Git) آشنا شده بشید. از این پس تنها کافیست در وب سایت github.com عضو شوید و مقداری با این سرویس کار کنید تا با جزئیات آن در عمل آشنا شوید.
در ضمن اگر یک سرویس گیت که مخزن محرمانه (Private Repository) را بصورت رایگان در اختیار شما قراردهد ، هستید می توانید به سرویس bitbucket.org سری بزنید.
البته این سرویس متاسفانه تا این زمان که در حال نوشتن این مقاله هستم در ایران فیلتر است و تنها با فیلتر شکن در دسترس است.

○ اصطلاحات

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

شاخه‌ (Branch)

چطور چند نفر به صورت هم‌زمان روی یک پروژه کار می‌کنند بدون اینکه گیت اون‌ها رو قاتی کنه؟ معمولا اون‌ها شاخه‌ای از پروژه اصلی هستند با همه تغییراتی که خودشون اعمال کرده‌اند. وقتی که کارشون تموم شد، زمان اون خواهد بود که با “master”، پوشه‌ی اصلی پروژه،  ترکیب شوند.

خط فرمان (Command Line)

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

مخزن (Repository)

 پوشه یا فضای ذخیره‌سازی که پروژه شما داخل اون وجود دارد. بعضی وقت‌ها کاربران گیت‌هاب از اون با عنوان “repo.” نام می‌برند. اون می‌تونه یه پوشه‌ روی کامپیوتر شما باشه یا فضایی روی گیت‌هاب یا هر سرویس میزبانی آنلاین دیگری. شما می‌تونید فایل‌های برنامه نویسی، متنی، عکس و هرچیزی رو داخل مخزن ذخیره کنید.

سپردن (Commit)

این دستوری هست که به گیت قدرت می‌دهد. وقتی که Commit می‌کنید، اسنپ‌شاتی از وضعیت فعلی پروژه‌تون رو در نقطه‌ی زمان فعلی ایجاد می‌کنید، که به شما نقطه‌ی بررسی برای تجدید نظر یا بازگرداند پروژه به این نقطه رو خواهد داد.

کنترل نسخه (Version Control)

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

○ دستورات گیت

همه این دستورات به یک شکل و با با کلمه‌ی “git” شروع می‌شوند.

git init  

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

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

در مقایسه با SVN، دستور git init یک راه فوق العاده آسان برای ایجاد پروژه های جدید کنترل نسخه است. در Git شما نیازی ندارید که یک مخزن جدید ایجاد کنید یا فایلی را import کنید یا کپی از کار را بررسی کنید. تمام کاری که لازم است انجام دهید با استفاده از cd وارد دایرکتوری پروژه خود شوید و دستور git init را اجرا کنید، و شما خواهید دید که یک مخزن کاملا کاربردی را در اختیار دارید.
با این حال، برای بسیاری از پروژه ها، دستور git init فقط یک بار اجرا می شود تا مخزن مرکزی را ایجاد کند، توسعه دهنده ها به طور معمول از دستور git init برای مخزن های محلی خود استفاده نمی کنند. در عوض، آنها از git clone برای کپی کردن از مخزن موجود در سیستم خود استفاده می کنند.

git config

مخفف “configure”، بیشتر زمانی کاربرد دارد که برای اولین بار مشغول راه‌اندازی و تنظیم گیت هستید.

git help

اگر دستوری رو یادتون رفته است این دستور رو در خط فرمان تایپ کنید و ۲۱ دستور متداول گیت را فراخوانی کنید. همچنین می‌توانید خاص تر عمل کنید و “git help init” رو تایپ کنید. یا اصطلاح دیگری را تا بفهمید چطوری اون دستور خاص استفاده و تنظیم می‌شود.

git status

وضعیت مخزن خود را بررسی کنید. ببینید چه فایل‌هایی داخل اون هستند. چه تغییراتی نیازمند Commit شدن هستند. و همچنین هم‌اکنون توی چه شاخه‌ای مشغول کار هستید.

git add

این دستور فایلی را به مخزن شما اضافه نخواهد کرد. در عوض، گیت را از وجود فایل‌های جدید خبردار می‌کند. بعد از اینکه فایل‌ها را add کردید، آن‌ها به “اسنپ‌شات‌های” مخزن‌تون اضافه خواهند شد.

git commit

مهم‌ترین دستور گیت. بعد از اینکه تغییرات مختلفی را اعمال کردید، این دستور را برای گرفتن یک اسنپ‌شات از مخزن وارد می‌کنید. معمولا به این شکل استفاده می‌شود:

git commit -m “Message here

-m تعیین می‌کند که قسمت بعدی دستور به عنوان پیام در نظر گرفته شود.

git branch

زمانی که با همکارانتان روی یک پروژه کار می‌کنید و مایلید تغییرات مختص به خودتون رو داشته باشید این دستور به شما اجازه‌ی ساختن یه شاخه‌ی جدید، یا خط زمانی از Commitها، یا تغییرات و اضافات فایل‌ها را مختص خودتات می‌دهد. عنوان شما بعد از دستور می‌آید. اگر می‌خواهید شاخه جدید به نام cats باشد از این دستور استفاده کنید.

git branch cats

git checkout

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

git checkout master

برای بررسی‌ شاخه‌ی master و یا برای بررسی شاخه‌ای دیگر

git checkout cats

git merge

زمانی‌که کارتون با یک شاخه تموم شد، می‌توانید تغییرات‌تون رو به شاخه master منتقل کنید. تا برای همه همکاران‌تون قابل دسترسی باشد.

git merge cats

همه تغییراتی که شما در شاخه‌ی “cats”  داده‌اید را گرفته و به شاخه‌ی master اضافه می‌کند.

git push

اگر روی کامپیوتر شخصی‌ خودتون کار می‌کنید و می‌خواهید commit هاتون روی گیت‌هاب در دسترس باشه، تغییرات‌تون رو با این دستور به روی گیت‌هاب هُل میدین.

git pull

اگر روی کامپیوتر شخصی خودتون کار می‌کنید و جدید‌ترین نسخه‌ی مخزن‌تون رو برای کار کردن می‌خواهید، آخرین نسخه را با این دستور از گیت‌هاب به روی کامپیوتر خودتون می‌کشید.

git clone

دستور git clone یک کپی از مخزن Git موجود تهیه می کند. این همانند svn checkout است، به جز “کپی کار” یک مخزن کامل Git است. دارای تاریخچه مجزا خودش می باشد، تمام فایل های خود را مدیریت می کند، و یک محیط کاملا مستقل از مخزن اصلی در اختیار می گذارد.

به عنوان راحتی در کار، شبیه سازی یا همان cloning بطور خودکار یک ارتباط از راه دور به نقطه منشاء به مخزن اصلی ترتیب می دهد. این کار باعث می شود به راحتی با مخزن اصلی تعامل داشته باشید.

آموزش کار با گیت

1. دانلود و نصب گیت

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

2. پیکربندی گیت

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

حالا وقتشه که وارد خط فرمان بشیم. روی ویندوز باید برنامه‌ی Git Bash را که نصب کردید اجرا کنید، روی مک و لینوکس هم از برنامه‌ی ترمینال خود سیستم عامل استفاده خواهیم کرد.

 git config --global user.name "Jane Doe"
 git config --global user.email jane.doe@example.com 

3. پیاده‌سازی یک مخزن گیت

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

خط فرمان یا ترمینال خود را باز کرده و با استفاده از دستورات Change Directory یا cd وارد دایرکتوری مورد نظرتان شوید. بعد از اینکار دستور زیر را وارد نمایید:

git init 

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

4. کلون یا کپی کردن یک مخزن

راه دیگری برای دسترسی به مخزن وجود دارد که به کلونینگ مشهور است. درست مثل بررسی مخزن در سایر سیستم‌ها، اجرای کد git clone <repository URL> یک کپی کامل از مخزن مورد نظر به سیستم شما منتقل خواهد کرد. سپس، می‌توانید تغییرات دلخواه را در آن اعمال کنید. روند اعمال تغییرات ساخت تغییرات، اعمال موقت آن‌ها بدون وارد کردن در مخزن اصلی (staging)، اعمال تغییر در مخزن یا کامیت (commit) را شامل می‌شود.

5. بررسی وضعیت مخزن

می‌توانید وضعیت مخزن گیت را هر زمان که می‌خواهید با استفاده از دستور زیر بررسی کنید:

git status

6. دنبال کردن یک مخزن

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

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

git add file.txt

در این حالت گیت فایلی را با نام file.txt دنبال می‌کند. البته می‌توانید چندین فایل دیگر را نیز وارد کنید، برای جداسازی آن‌ها نیز کافی‌ست که از یک ویرگول استفاده نمایید. با این حال اگر بخواهید که تمام محتوای داخل یک مخزن را دنبال کنید کافی‌ست به صورت زیر عمل نمایید:

git add .

یک دستور دیگر نیز وجود دارد که دقیقا همین کار را انجام می‌دهد:

git add –A

7. تنظیمات

در این مرحله همه‌چیز آماده‌ی اعمال تغییرات یا commit است؛ اما قبل از این‌کار باید با تنظیمات ویرایشگر که گیت هنگام نوشتن پیام‌های کامیت مورد استفاده قرار می‌دهد آشنا شوید.

اگر از لینوکس استفاده می‌کنید گیت به‌طور پیش‌فرض، از برنامه‌‌هایی مانند pico، vi، vim یا emacs استفاده خواهد کرد. اگر با این برنامه‌ها آشنایی ندارید، ممکن است بخواهید آن‌ها را با نرم‌افزاری مثل Notepad، TextEdit یا Gedit عوض کنید. برای این‌کار دستور زیر را از ترمینال اجرا کنید:

git config --global core.editor <your app's name

در قسمت آخر کد به جای your app’s name نام نرم‌افزار مورد نظر خود را وارد کنید.

تنظیمات دیگری مانند تغییر نام و ایمیل و چگونگی نمایش پیام کامیت نیز قابل انجام است. ما در این آموزش از vim به‌عنوان ادیتور استفاده می‌کنیم؛ اما شما می‌توانید انتخاب متفاوت خود را داشته باشید.

اعمال اولین تغییر

کامیت در گیت شباهت بسیار زیادی با کامیت در سایر سیستم‌های کنترل نسخه مانند ساب‌ورژن دارد. روند کار به این شکل است که کار را آغاز می‌کنید و پیامی جهت توضیح اینکه دلیل تغییر انجام گرفته چیست وارد می‌کنید و فایل تغییر می‌یابد. پس دستور git commit را اجرا کنید. با این کار ویرایشگر به‌صورت خودکار باز می‌شود و الگوی زیر را نمایش می‌دهد.

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
#
# Initial commit
#
# Changes to be committed:
#       new file:   index.php
#
# Untracked files:
#       README.md
#


با بررسی مداوم وضعیت تغییرات اعمال‌شده توسط دستور git status از شرایط مخزن خود آگاهی پیدا خواهید کرد. با این‌کار همواره خواهید دانست چه تغییری را اعمال کرده و چه تغییری را هنوز اعمال نکرده‌اید. یک پیام کامیت خوب باید شامل دو بخش باشد؛ اول این‌که کوتاه و در حد ۷۲ کاراکتر باشد و به‌طور خلاصه تغییر اعمال‌شده را اعلام کند. دیگر این‌که دارای توضیحی بلندتر باشد که به‌طور مجزا در سطری دیگر جزئیات تغییر اعمال‌شده را توضیح دهد. البته مورد دوم اختیاری است و الزامی برای نوشتن آن وجود ندارد.

ما در این مرحله نیاز به نوشتن توضیح پیچیده‌ای نداریم؛ چرا که تنها یک فایل را به مخزن اضافه کرده‌ایم؛ اما چنان‌چه تغییری که اعمال می‌کنید دارای الگوریتم‌های پیچیده‌ای باشد، لازم است توضیحاتی در این بخش برای مطالعه‌ی سایر توسعه‌دهندگان بنویسید و آن‌ها را از چرایی اعمال این تغییر آگاه سازید. بنابراین، پیام ساده‌ی زیر را در ویرایشگر وارد و ذخیره کنید و خارج شوید.

“Adding the core script file to the repository”

حالا که تغییرات اعمال شدند. وضعیت گیت را مجددا بررسی کنید. خواهید دید که REDME.md همچنان در قسمت untracked قرار دارد.

تاریخچه کامیت‌های من نامرتب است، چگونه آن را مرتب کنم؟

بیایید تصور کنیم که شما روی یک قطعه کد مشغول کار کردن هستید. شما می‌دانید که برای کامل کردن این پروژه تقریبا به ۱۰ روز زمان نیاز دارید. در طی این ۱۰ روز نیز توسعه دهندگان دیگری روی کدها در یک مخزن ریموت، کامیت می‌کنند.

همیشه باید در نظر داشته باشید که بروزرسانی کردن مخازن محلی با مخازن ریموت کار خوبی است و باید به صورت مرتب انجام شود. این کار باعث می‌شود که با زیاد شدن درخواست‌های pull مشکل Merge Conflict کمتری داشته باشید.

هر وقت که شما از مخازن ریموت کدهایی را به سمت مخازن محلی pull می‌کنید، یک کامیت ادغام شده جدید نیز در مخزن محلی‌تان ایجاد می‌شود. این بدان معناست که کامیت‌های مخزن محلی شما قرار است تاریخچه بسیار نامرتبی داشته باشد.

دستورات مفید Git


دستورات گیت برای مشاهده لاگ ها و تفاوت های بین فایل ها

برای مشاهده تاریخچه commit های مختلف در گیت از دستور log استفاده می شود. همین طور برای مشاهده و مقایسه آخرین تغییرات انجام شده و تفاوت فایل ها باهم، از دستور git diff می باید استفاده کنید.

این دستور ها، از دستورات گیت هستند که بسیار پر کاربرد بوده و در زیر به تفکیک در مورد هر کدام از آن ها به صورت خلاصه توضیح داده شده است:

مشاهده تاریخچه commit های صورت گرفته در پروژه:برای مشاهده همه commit های انجام شده در پروژه می توانید از دستور git log استفاده کنید. با اجرای این دستور، آیتم های مربوط به commit به نمایش در می آیند. این آیتم ها که در هر لاگ به نمایش در می آیند عبارتند از:

Commit ID : که ID مربوط به هر کامیت می باشد که عددی منحصر به فرد است.

Author : کسی که commit را انجام داده است (شامل نام او به همراه آدرس ایمیل فرد)

Date : تاریخ انجام commit را نمایش می دهد.

Message : پیامی را که در هر commit ثبت می شود را نمایش می دهد.

نمایش لاگ به همراه فایل هایی که در هر commit تغییر یافته اند:برای نمایش اینکه در هر commit چه فایل هایی تغییر کرده اند، از دستور git log –stat  به صورت زیر استفاده می کنید.

نمایش help مربوط به دستور log:برای نمایش help برای دستور log در گیت می توانید از دستور git log –help به صورت زیر استفاده کنید.

نمایش commit ها به صورت گراف:برای نمایش  به صورت گراف، از دستور git log –graph استفاده می شود. از این دستور برای نمایش branch ها و همین طور commit ها به شکل گراف استفاده می شود.

نمایش commit ها به صورت خطی:برای نمایش  commit ها به شکل خطی، از دستور git log –oneline استفاده می شود. با این دستور کل commit ها به صورت خطی و پشت سر هم در صفحه به نمایش در می آیند.

نمایش n کامیت آخربه صورت خطی:برای نمایش n کامیت آخر (مثلا 5 کامیت آخر در پروژه) می توانید از دستور git log -n –oneline استفاده کنید. با این دستور n تا commit آخر فقط به نمایش در می آیند.

نمایش فقط commit های مرتبط با merge:برای نمایش commit هایی که فقط در merge شدن branch ها اضافه شده اند، می توانید از دستور git log –merge به صورت زیر استفاده کنید.

مشاهده جزئیات کامل هر commit:جهت نمایش جزئیات کامل هر commit و تغییرات انجام شده در آن، می توانید از دستور git log -p استفاده کنید.

نمایش لاگ های با فرمت دلخواه:شما می توانید از فرمت خاص برای نمایش لاگ های commit های خود در گیت استفاده کنید. برای نمایش خلاصه و منظم ، عموما از دستور git log –pretty=format به همراه فرمت دلخواه خود، استفاده می شود.به عنوان نمونه یکی از این دستورات در زیر برای شما آمده است:

  1. //Show log without any format
  2. git log
  3. //Show log with files which are changed in each commit
  4. git log –stat
  5. //show log as a graph
  6. git log –graph
  7. //show log as one line
  8. git log –oneline
  9. //show last 5 commits as oneline
  10. git log -5 –oneline
  11. //show only log related to branches merge
  12. git log –merge
  13. //show log with each specification in each commit
  14. git log -p
  15. //Show log with pretty format
  16. git log –graph –pretty=format:’%Cred%h%Creset -%C(green)%d%Creset %s %Cgreen(%cr) %C(bold red)<%an>%Creset’ –abbrev-commit

git diff -w

دستور fit diff تغییرات بین دو کامیت, دو درخت درحال کار یا دو فایل در دیسک رو نشون میده. وقتی چندین نفر روی یک پروژه کار می کنند, معمولا تغییراتی به واسطه ی تب ویرایشگر و تنظیمات فضا وجود داره. تفاوت هایی که در زمان مقایسه خطوط و توسط فاصله های سفید بوجود اومده رو توسط دستور ذکر شده به همراه تگ w- نادیده می گیرید.

آشنایی با Branch ها و نحوه ترکیب آن ها با دستور merge

در صورتی که بخواهید شاخه های متفاوتی را در توسعه کدهای خود داشته باشید، از مفهومی به نام branch در گیت استفاده می کنید. در واقع با استفاده از branch شما از شلوغی ها و بی نظمی هایی که در هنگام کار تیمی ممکن است پیش بیاید، جلوگیری می کنید.

برای اینکه پس از توسعه، هر branch را با ویژگی های اصلی به شاخه اصلی خود یا همان master اضافه کنید، کافی است از دستورات گیت با نام های merge و rebase استفاده کنید.

در ادامه به نکات مربوط به این زمینه خواهیم پرداخت:

Branch
Branch
  • نحوه ساخت یک branch جدید و وارد شدن در آن:برای ساخت یک branch جدید و وارد شدن به آن یا همان checkout کردن به آن از دستور git checkout -b به همراه نام branch استفاده می کنیم.همچنین برای ساخت و ایجاد یک branch می توانید از دستور git branch به همراه نام آن شاخه استفاده کنید.
  • رفتن به یک شاخه دیگر در گیت:برای جابجایی از یک شاخه به شاخه دیگر کافی است از دستور git checkout به همراه نام branch مربوطه استفاده کنیم.
  • دیدن راهنمای کامل دستورات مربوط به branch:برای دیدن کلیه دستورات مربوط به branch  می توانید از دستور git branch –help استفاده کنید.
  • دیدن راهنمای کامل دستورات مربوط به branch در داخل کنسول:برای دیدن کلیه دستورات مربوط به branch  در داخل کنسول خود، می توانید از دستور git branch –h استفاده کنید.
  • نمایش کلیه شاخه های موجود در یک پروژه:برای دیدن کلیه branch های موجود در یک پروژه می توانید از دستور git branch -a استفاده کنید.
  • پاک کردن یک شاخه در گیت:جهت حذف نمودن یک branch در گیت کافی است از دستور git branch -d به همراه نام branch استفاده کنید.
  1. //Create a new branch
  2. git branch new1
  3. //Create a new branch and checkout in new branch
  4. git checkout -b new1
  5. //Checkout to master
  6. git checkout master
  7. //Show helps for branch
  8. git branch –help
  9. git branch -h
  10. //Show all branches in a project
  11. git branch -a
  12. //Remove new1 branch
  13. git branch -d new1

دستور Stash و کاربرد آن

خود سیستم گیت برای رفع این مشکل استفاده از دستور stash را پیشنهاد می کند. بنابراین دستور git stash –help را در گیت اجرا کنید تا راهنمای کامل استفاده از دستور stash را در وب سایت گیت مشاهده کنید.

دستور Stash
دستور Stash

روش اجرای دستور stash

 روش کار بدین صورت است که پس از انجام تغییرات در شاخه develop دستور git stash را اجرا کنید. با اجرای این دستور، تمام تغییرات شما در stash ذخیره می شوند. خود گیت برای هر stash یک نام و آیدی منحصر بفرد در نظر می گیرد. اکنون اگر git status بگیریم، پیغام “nothing to commit, working tree clean” را مشاهده خواهید کرد.

روش اجرای دستور stash
روش اجرای دستور stash

مشاهده لیست Stash ها و حذف آنها

 حال برای مشاهده لیست stash ها دستور git stash list را اجرا کنید. برای حذف یک stash نیز دستور git stash drop stash@{0} را اجرا کنید.

لیست Stash ها
لیست Stash ها

 در اینجا، stash@{0} نام استش موردنظر شما می باشد که توسط دستور git stash list بدست آورده اید.

لیست Stash ها
لیست Stash ها

همچنین شما می توانید در هنگام ذخیره تغییرات در یک stash یک پیغام دلخواه نیز برای آن تعریف کنید. پس نیاز است دستور git stash save “your message here” را اجرا کنید.

ایل‌های Stage

می‌توانید فایل‌ها را به دایرکتوری مربوط به پروژه یا همان مکان Stage با استفاده از دستور زیر وارد کنید:

git add index.html style.css images

این دستور فایل‌های index.html و style.css و پوشه images را به وضعیت Stage در می‌‌آورد. اگر می‌خواهید تمام موارد قرار گرفته در پوشه‌ای که در حال کار هستید را به حالت stage در بیاورید، کافی است دستور زیر را وارد کنید:

git add .

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

۵. فایل‌های Unstage

می‌توانید به سادگی فایل‌ها را از قسمت stage نیز حذف کنید:

git rm --cached index.html style.css

اگر می‌خواهید پوشه‌ها را نیز حذف کنید به یک پرچم -r نیازمندید:

git rm --cached -r images

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

برای اینکه تمام فایل‌ها و دایرکتوری‌ها را یکجا حذف کنید می‌توانید به صورت زیر عمل کنید:

git rm --cached -r .

منبع
git-scm

موسوی پوران

هم‌بنیانگذار مجله ماگرتا ، زندگی ۲۴ ساعته روی خط آنلاین دهکده جهانی وب . تحلیلگر و متخصص تولید محتوای با ارزش و با کیفیت هستم و ۸ سالی می شود که وارد دنیای دیجیتال شدم. مدیر تیم تحقیق و توسعه شرکت هستم. بالاترین لذت برای من انجام کار تیمی ست.

دیدگاهتان را بنویسید

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

11 + 1 =