Staging در Git چیست؟

Git دارای یک منطقه صحنه سازی که تغییرات فایلی را که هنوز انجام نشده اند ذخیره می کند.

این مرحله ای است که به شما امکان می دهد به ایجاد تغییرات ادامه دهید و تغییرات را در commit های کوچک ثبت کنید.

شروع با استیجینگ

با مرحله بندی، می توانید تغییری را در یک فایل در رایانه خود ذخیره کنید، اما اگر متعهد نباشد، git نسخه ای از آن را ذخیره نمی کند.

قبل از اینکه فایلی را با git commit کنید، ابتدا باید تغییر را مرحله بندی کنید.

سپس، می توانید متعهد شوید.

به این ترتیب می توانید چندین تغییر را در یک کامیت انجام دهید.

مرحله بندی در ترمینال در مقایسه با مرحله بندی در VSCode

اگر هنگام برنامه نویسی از یک IDE مانند VSCode استفاده می کنید، چیزی مانند کنترل پنل منبع دارید که به شما امکان می دهد ادغام Git را آسان کنید.

در آن پنل، می توانید تغییرات بدون مرحله (یا پیگیری نشده) و مرحله ای خود را مشاهده کنید.

اگر الان کامیتی انجام می دادم، فقط تغییرات مرحله ای انجام می شد.

بیایید ببینیم چگونه تغییرات خود را مرحله بندی کنید.

Git Init: یک مخزن Git را راه اندازی کنید

بیایید با یک پروژه خالی شروع کنیم و ببینیم که مراحل git چگونه کار می کند.

با استفاده از عبارت می توانید یک مخزن git را مقداردهی اولیه کنید git init فرمان

با این کار یک مخزن git مخفی (پوشه ای به نام .git در ریشه پروژه شما).

هیچ چیزی در پروژه تا کنون تغییر نکرده است، بنابراین شما یک فایل جدید ایجاد خواهید کرد:

Git add: افزودن یک فایل به Staging با Git Add

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

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

می توانید با استفاده از علامت + در کنترل پنل منبع، تغییر را انجام دهید. اما در این صورت دستور git add را در ترمینال به شما نشان خواهم داد.

استفاده کنید git add دستور مرحله بندی فایل در Git. در نوع ترمینال:

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

وضعیت Git: نمایش فایل های مرحله بندی شده

را git status دستور فایل هایی را که در ناحیه مرحله بندی هستند را نشان می دهد.

در اینجا می توانیم تغییرات مرحله ای را مشاهده کنیم.

اگر هیچ فایل مرحله‌ای و/یا هیچ فایل تغییر یافته‌ای وجود نداشته باشد، خروجی مشابه اما متفاوت خواهد بود.

بیایید یک فایل جدید ایجاد کنیم و آن را مرحله بندی نکنیم.

$ touch new-file2.txt
$ git status

فایل های ردیابی نشده فایل های “بدون مرحله” هستند.

اگر تغییرات جدیدی وجود نداشته باشد و تغییرات مرحله‌ای وجود نداشته باشد، خروجی مختصرتر خواهد بود.

$ git status

On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

Git Diff: ببینید چه چیزی در فایل تغییر کرده است

استفاده کنید git diff دستور دهید ببینید چه چیزی تغییر کرده است.

Git diff فایل موجود را با آخرین نسخه ذخیره شده مقایسه می کند.

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

شما می توانید استفاده کنید git diff بدون هیچ چیز بعد این همه تغییرات در مخزن را به شما نشان می دهد.

همچنین می توانید استفاده کنید git diff به همراه نام دایرکتوری این همه تغییرات ایجاد شده در دایرکتوری را به شما نشان می دهد.

$ git diff changed-file.txt

یا استفاده کنید git diff همراه با نام فایل با این کار تمام تغییرات ایجاد شده در فایل به شما نمایش داده می شود.

$ git diff changed-file.txt

Git Commit: اجرای فایل های مرحله بندی شده

حالا اگر بخواهم commit کنم فقط فایل(های) مرحله بندی شده commit می شود. در این مورد فقط new-file.txt متعهد خواهد شد.

$ git commit -m "only committing new-file.txt"

کنترل نسخه دیگر با پست‌های Git و Github

آموزش Git و Github (راهنمای کامل)
مبانی کنترل نسخه
نحوه استفاده از Git و Github با VSCode