مقدمه
فرض کنید یک گزارش نوشته اید، بعداً می خواهید تغییراتی در نوشتار بدهید، اما نمی خواهید که گزارش قبلی را از دست بدهید. اگر هم کسی خواست بتواند روی آن تغییراتی انجام دهد بدون اینکه گزارش شما از بین برود. برای این کار بهتر است از گیت استفاده کنید؛ یعنی نسخههای متفاوت گزارشها را بایگانی میکند. هر بار که گزارشی سپارش (commit) میشود، مخزن به هنگام میشود.
1- چرا باید از گیت استفاده کنیم؟
تمامی پروژهها در شرکتهای مختلف توسعه دهندگان متفاوتی دارند که این توسعه دهندگان به صورت موازی روی پروژهها کار میکنند.
نیاز به داشتن یک سیستم کنترل برای جلوگیری از تداخل بین کدهایی که توسط توسعه دهندگان تولید میشود، همواره در این شرکتها امری حیاتی است.
چرا که نیازها در شرکتها متفاوت هستند و توسعه دهندگان بنا به این نیازهای تعریف شده، تغییرات را اعمال میکنند.
سیستم کنترل ورژن به توسعه دهندگان اجازه میدهد اگر به ورژنهای قبلی نیاز داشتند به راحتی به آنها دسترسی پیدا کنند.
2- چگونه از گیت استفاده کنیم؟
ساخت مخزن لوکال برای گیت :
یک پوشه در کامپیوترتان را انتخاب کنید. وارد پوشه مد نظر خود شوید و کلیک راست کرده، از منوی باز شده Git Bash را انتخاب کنید.
سپس در آن توسط دستور زیر یک مخزن لوکال اضافه کنید:
git init
این دستور یک مخزن Git لوکال به پروژه شما اضافه می کند. اگر به پوشه مراجعه کنید مشاهده می کنید که یک فایل git. پنهان (hidden) ایجاد شده است.
ساخت فایل توسط گیت:
برای ساختن فایل ها در پوشه کامپیوتر کافی است از دستور زیر استفاده کنید:
touch FileName
اما در اینجا شما فقط یک فایل آن هم در کامپیوتر خود ساخته اید ، برای اینکه بتوانید از فایل ها در گیت استفاده کنید باید آن ها را به ناحیه stage ببرید.
ناحیه stage، یک مرحله واسط است که بین فولدر پروژه ما (سمت چپ تصویر زیر) و repository گیت (سمت راست تصویر زیر) قرار دارد.
بردن فایل ها به Staging area :
Commiting هنگامی اتفاق می افتد که کد به مخزن لوکال اضافه میشود. قبل از commit کدها باید در staging area باشند. هر فایلی که در staging area نباشد commit نخواهد شد.
برای بردن فایل ها به staging area از دستور زیر استفاده کنید:
git add FileName
اگر چند فایل دارید در ادامه همان دستور بالا نام آن ها را بنویسید.
و اگر میخواهید از تمامی فایل های موجود در پوشه را اضافه کنید، توسط دستور زیر این کار را انجام دهید:
git add . / git add –A
اطلاع از وضعیت فایل ها :
هنگامی که می خواهید از وضعیت فایل های خود مطلع شوید دستور زیر را اجرا کنید:
git status
اگر فایل ها در staging area نباشند به رنگ قرمز و در غیر این صورت به رنگ سبز در خروجی نشان داده خواهند شد. پس در مرحله بعد باید کدها را commit کنیم.
Committing :
از دستور زیر برای commit فایل ها استفاده می کنیم:
git commit -m 'initial commit'
عبارت داخل ‘ ‘ تنها یک توضیحی است در رابطه با فایل های کامیت شده.
نکته : بهتر است توضیحی متناسب قرار دهید تا بعداً بتوانید commitها را از هم تشخیص دهید.
اطلاع از وضعیت commitها :
از دستور زیر برای نمایش تمامی commitهای انجام شده تا حال استفاده کنید :
git log
این دستور همچنین نشان می دهد چه کسی دستورات را وارد کرده، در چه تاریخی و با چه توضیحی آنها را commit کرده است.
نمایش تغییرات فایل ها در طی پروژه :
اگر می خواهید تغییرات کدهای ذخیره شده نسبت به کدهای قبلی را متوجه شوید از دستور زیر استفاده کنید:
git diff HEAD
نمایش محتوای یک فایل :
برای نمایش محتوای فایل ها در پروژه از دستور زیر استفاده کنید:
Cat FileName
نمایش فایل های موجود در مخزن گیت:
برای نمایش فایل های موجود در مخزن گیت (فایل هایی که به مخزن گیت add شده اند) دستور زیر را تایپ کنید:
ls / git ls-files
حذف یک فایل از مخزن گیت :
برای حذف کردن فایل ها از گیت از دستور زیر استفاده کنید :
git rm FileName
ساخت شاخه (branch) در مخزن گیت :
برای پشتیبانی از توسعه ی موازی به چندین شاخه نیاز است.
می توانید کدهای خود را روی یک شاخه جدید بزنید و اگر از درستی آنها و عدم ایجاد مشکل اطمینان داشتید، آنها را روی شاخه اصلی انتقال دهید.
برای اینکه بدانید چند شاخه در مخزن گیت خود دارید و همچنین روی کدام شاخه در حال اعمال تغییرات هستید از کد زیر استفاده کنید:
git branch
و برای ساخت یک شاخه جدید کد زیر را اجرا کنید:
git branch BranchName
برای رفتن روی شاخه جدید از کد زیر استفاده کنید:
git checkout BranchName
سپس هنگامی که تغییرات خود را روی شاخه جدید انجام دادید و خواستید روی برنچ اصلی آن را اعمال کنید، کافی است به برنچ اصلی برگردید آنگاه با استفاده از کد زیر تغییرات را به برنچ اصلی انتقال دهید:
git merge BranchName
نکته: در این کد اسم برنچ ای که می خواهید تغییرات را از آن بگیرید باید بنویسید.
و اگر خواستید شاخه را حذف کنید این کار را با دستور زیر انجام دهید:
git branch –d BranchName
کاربرد stash :
گاهی شرایطی پیش می آید که شما مجبور می شوید پروژه خود را ناتمام رها کنید اما نمی خواهید آن را ناتمام commit کنید، برای این کار می توانید از دستور زیر استفاده کنید:
git stash
در اینجا تمام فایل هایی که در local هستند (فایل ها track شده) ذخیره می شوند و هر زمان فرصت کافی داشتید آن ها را restore می کنید. اگر خواستید فایل های track نشده را هم stash کنید از -u در آخر دستور بالا استفاده کنید.
اگر خواستید لیست stash های موجود را بدانید از دستور زیر استفاده کنید:
git stash list
برای اینکه بتوانید فایل ها را برگردانید از دستور زیر استفاده کنید:
git stash pop
این دستور فایل شما را برگردانده و شما می توانید آن را تغییر دهید و کامیت کنید. برای این کار از دستور زیر هم می توانید استفاده کنید اما فرق آن با دستور بالا در این است که فایل را از لیست stash های شما پاک نمی کند.
git stash apply
برای حذف کردن یک stash به کمک ID آن، از دستور زیر استفاده کنید :
git stash drop IDstash
اگر می خواهید تمام stash ها را حذف کنید دستور زیر را اجرا کنید:
git stash clear
برای دیدن تغییرات stash از دستورهای زیر استفاده کنید:
git stash show
این دستور تغییرات آخرین stash را به ما می دهد.
git stash show IDstash
با استفاده از دستور بالا می توانید تغییرات stash مد نظر خود را ببینید.
git stash show -p
توسط دستور بالا تغییرات تمام stash ها را می توانید ببینید.
شما همچنین می توانید یک شاخه توسط stash بسازید:
git stash branch BranchName
توسط دستور بالا یک شاخه(برنچ) ساخته می شود، گیت به صورت خودکار روی این برنچ switch کرده، و آخرین stash را به آن برنچ انتقال می دهد؛ سپس stash را از لیست stash ها پاک می کند.
git stash branch BranchName IDstash
توسط دستور بالا همان اتفاقات در دستور قبلی رخ می دهد فقط می توانید به جای آخرین stash ، stash مورد نظر خود را به برنچ جدید انتقال دهید.
ریموت زدن :
برای اینکه بتوانید تغییراتی را روی یک پروژه توسط گیت اعمال کنید، لازم است clone کنید یا remote بزنید:
git clone [website address] / git remote add [ website address]
سپس با وارد کردن نام و رمز عبور می توانید روی پروژه تغییرات را اعمال کنید.
اگر می خواهید محتوا را از یک سایت بگیرید از دستور زیر استفاده کنید:
git pull
گاه پیش می آید که فایلی که می خواهید دریافت کنید حاوی باگ است، اگر شما روی شاخه اصلی (master) کار می کنید و از دستور بالا استفاده کنید باگ را به راحتی در برنچ خود اضافه کرده اید.
برای جلوگیری از این اتفاق می توانید از دستورات زیر استفاده کنید:
git fetch
با این دستور شما در ابتدا فایل را در مخزن لوکال دریافت خواهید کرد. می توانید آن را بررسی کنید و در نهایت وقتی هیچ باگی وجود نداشت و مشکلی پیش نمی آمد توسط دستور زیر آن را روی برنچ master دریافت کنید.
git merge
این دو دستور معادل git pull هستند .
و برای درج کردن تغییرات از دستور زیر استفاده کنید:
git push
مشاهده تاریخچه کدهای نوشته شده در پروژه:
برای مشاهده تاریخچه کدهای نوشته شده، اینکه چه کسی آنرا برای اولین بار نوشته یا چند بار ویرایش شده و توسط چه کسانی، از دستور blame به صورت زیر استفاده کنید:
git blame FileName
اگر بخواهید تاریخچه یک خط کد را فقط بررسی کنید :
git blame FileName –LineNumber (exp git blame test –L1)
یافتن باگ در گیت :
در اینجا به هش commitها نیاز دارید (توسط git log میتوانید هش هر commit را بیابید) تا بدانید یک باگ در کدام commit اتفاق افتاده.
برای شروع عملیات پیدا کردن کامیت ای که باگ دارد، دستور زیر را وارد کنید :
git bisect start
هر جایی که احساس کردید باگ به وجود آمده دستور زیر را وارد کنید، به این صورت گیت از اولین کامیت تا آخرین کامیت قبل از نوشتن این دستور را در نظر می گیرد تا کامیت اشتباه را پیدا کند.
git bisect bad
کد بالا نشان می دهد که در حال حاضر (اینجایی که هستید) باگ وجود دارد.
شما حتی میتوانید با دادن هش commitای که مطمئن هستید در آن باگ وجود ندارد، در داخل [ ] ، بازه کوتاه تری را برای این عملیات مشخص کنید. این کار باعث می شود گیت زودتر بتواند کامیت را پیدا کند. به این صورت:
git bisect good [hash of the commit without bug]
در این جا گیت مدام به شما هش هایی بین این دو ناحیه پیشنهاد می کند ( هش های دایره(کامیت) های طوسی در شکل بالا) و شما باید وضعیت آن commitها را بررسی کنید.
اگر کامیت پیشنهادی مشکل داشت : git bisect bad
اگر کامیت پیشنهاد شده بدون هیچ خطایی بود : git bisect good
را اجرا کنید.
به این صورت شما قادر خواهید بود توسط گیت متوجه شوید که دقیقا در کدام کامیت باگ به وجود آمده بود و آن را از بین ببرید.
نتیجه گیری :
گیت ابتدا برای توسعه ی لینوکس به وجود آمد و اکنون پروژههای فراوانی از آن الهام گرفتهاند. هر دایرکتوری کاری در گیت یک مخزن کامل با تاریخچه ی کامل تغییرها و قابلیت بازنگری آنها است و برای کار با آن نیازی به دسترسی به شبکه یا سرور مرکزی وجود ندارد.
آشنایی با گیت در شرکت ها مخصوصاً شرکت های برنامه نویسی از اهمیت زیادی برخوردار است. در این مقاله با تمامی مراحل ساخت و استفاده از گیت آشنا شدید و آماده هستید که بتوانید به راحتی از این دستورات استفاده کنید.
در وب سایت ردمنت قسمت بلاگ هر آنچه به عنوان یک برنامه نویس در خصوص گیت نیاز دارید بدانید را قرار داده ایم.