آموزش اصول مقدماتی گیت به زبان ساده

avatar
محدثه گنجعلی نیا ۰۶ مرداد ۱۴۰۱icn_time زمان مورد نیاز برای مطالعه : 11 دقیقه

مقدمه

فرض کنید یک گزارش نوشته ­اید، بعداً می­ خواهید تغییراتی در نوشتار بدهید، اما نمی­ خواهید که گزارش قبلی را از دست بدهید. اگر هم کسی خواست بتواند روی آن تغییراتی انجام دهد بدون اینکه گزارش شما از بین برود. برای این کار بهتر است از گیت استفاده کنید؛ یعنی نسخه‌های متفاوت گزارش‌ها را بایگانی می‌کند. هر بار که گزارشی سپارش (commit) می‌شود، مخزن به هنگام می‌شود.

گیت git

1-  چرا باید از گیت استفاده کنیم؟

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

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

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

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


2-  چگونه از گیت استفاده کنیم؟


ساخت مخزن لوکال برای گیت :

مخزن گیت reposiroty

یک پوشه در کامپیوترتان را انتخاب کنید. وارد پوشه مد نظر خود شوید و کلیک راست کرده، از منوی باز شده Git Bash را انتخاب کنید.

سپس در  آن توسط دستور زیر یک مخزن لوکال اضافه کنید:

git init

این دستور یک مخزن Git  لوکال به پروژه شما اضافه می­ کند. اگر  به پوشه مراجعه کنید مشاهده می­ کنید که یک فایل git. پنهان (hidden) ایجاد شده است.

گیت .git headen file

ساخت فایل توسط گیت:

برای ساختن فایل ­ها در پوشه کامپیوتر کافی است از دستور زیر استفاده کنید:

touch FileName

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

ناحیه stage، یک مرحله واسط است که بین فولدر پروژه ما (سمت چپ تصویر زیر) و  repository گیت (سمت راست تصویر زیر) قرار دارد.

گیت stage area

بردن فایل­ ها به Staging area :

Commiting  هنگامی اتفاق می­ افتد که کد به مخزن لوکال اضافه می­شود. قبل از commit کدها باید در staging area باشند. هر فایلی که در staging area  نباشد commit نخواهد شد.

برای بردن فایل­ ها به staging area از دستور زیر استفاده کنید:

git add FileName

اگر چند فایل دارید در ادامه همان دستور بالا نام آن­ ها را بنویسید.

و اگر  می­خواهید از تمامی فایل­ های موجود در پوشه را اضافه کنید، توسط دستور زیر این کار را انجام دهید:

git add .  /  git add –A

 

اطلاع از وضعیت فایل­ ها :

هنگامی که می­ خواهید از وضعیت فایل ­های خود مطلع شوید دستور زیر را اجرا کنید:

git status

اگر فایل­ ها در staging area نباشند به رنگ قرمز  و در غیر این صورت به رنگ سبز در خروجی نشان داده خواهند شد. پس در مرحله بعد باید کد­ها را  commit کنیم.گیت وضعیت git status

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

و برای ساخت یک شاخه جدید کد زیر را اجرا کنید:

git branch BranchName

برای رفتن  روی شاخه جدید از کد زیر استفاده کنید:

git checkout BranchName

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

git merge BranchName

نکته: در این کد اسم برنچ ای که می­ خواهید تغییرات را از آن بگیرید باید بنویسید.

 

و اگر خواستید شاخه را حذف کنید این کار را با دستور زیر انجام دهید:

git branch –d BranchName

گیت برنچ شاخهgit branch

کاربرد stash :

گاهی شرایطی پیش می آید که شما مجبور می شوید پروژه خود را ناتمام رها کنید اما نمی خواهید آن را ناتمام commit کنید، برای این کار می توانید از دستور زیر استفاده کنید:

git stash

در اینجا تمام فایل هایی که در local هستند (فایل ها track شده) ذخیره می شوند و هر زمان فرصت کافی داشتید آن ها را restore می کنید. اگر خواستید فایل های track نشده را هم stash کنید از -u در آخر دستور بالا استفاده کنید.

اگر خواستید لیست stash های موجود را بدانید از دستور زیر استفاده کنید:

git stash list

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

git stash pop

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

git stash apply

گیت استش git stashبرای حذف کردن یک 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 مورد نظر خود را به برنچ جدید انتقال دهید.

گیت استش git stash

ریموت زدن :

برای اینکه بتوانید تغییراتی را روی یک پروژه توسط گیت اعمال کنید، لازم است clone کنید یا remote بزنید:

git clone [website address]   /  git remote add [ website address]

سپس با وارد کردن نام و رمز عبور می­ توانید روی پروژه تغییرات را اعمال کنید.

اگر می­ خواهید محتوا را از یک سایت بگیرید از دستور زیر استفاده کنید:

git pull


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

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

git fetch

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

git merge

این دو دستور معادل git pull هستند .


و برای درج کردن تغییرات از دستور زیر استفاده کنید:

git push

 گیت git pull

مشاهده تاریخچه کد­های نوشته شده در پروژه:

برای مشاهده تاریخچه کدهای نوشته شده، اینکه چه کسی آنرا برای اولین بار نوشته یا چند بار ویرایش شده و توسط چه کسانی، از دستور 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]

گیت git bisect

در این جا گیت مدام به شما هش ­هایی بین این دو ناحیه پیشنهاد می ­کند ( هش های دایره(کامیت) های طوسی در شکل بالا) و شما باید وضعیت آن commitها را بررسی کنید.

اگر کامیت  پیشنهادی مشکل داشت :                                                                                                                                                                  git bisect bad

اگر کامیت پیشنهاد شده بدون هیچ خطایی بود :                                                                                                                                                    git bisect good                                                                                                                                                           

را اجرا کنید.

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

 

نتیجه گیری :

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

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

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

  • favourite0 پسندیده
  • chat0 نظر

دیدگاه خود را در مورد این مطلب بنویسید
نظرات (0 نفر)
icon-chat-addافزودن نظر

چت آنلاین با پشتیبانی ردمنت

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