10 دستور مهم Git که هر توسعه‌دهنده‌ای باید بداند

دوشنبه 30 تیر 1399

Git بخش مهمی از برنامه‌نویسی روزانه است (به خصوص اگر با تیم کار می‌کنید) و به طور گسترده در صنعت نرم‌افزار مورد استفاده قرار می‌گیرد.

10 دستور مهم Git که هر توسعه‌دهنده‌ای باید بداند

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

توجه: برای درک این مقاله، باید اصول اولیه گیت را بلد باشید.

Git clone .1

Git clone دستوری برای دانلود سورس کد موجود از یک ریپازیتوری از راه دور (مثلا گیت‌هاب) می‌باشد. به عبارت دیگر، Git clone در اصل یک نسخه مشابه از آخرین نسخه پروژه در ریپازیتوری می‌سازد و بر روی کامپیوتر شما ذخیره می‌کند.

چندین راه برای دانلود سورس کد وجود دارد، اما ما معمولا استفاده از clone با https را ترجیح می‌دهیم:

git clone <https://name-of-the-repository-link>

مثلا اگر می‌خواهید پروژه را از گیت‌هاب دانلود کنید، تنها کاری که باید انجام دهید این است که بر روی دکمه سبز (clone or download) کلیک کرده، URL را کپی کرده و آن را بعد از دستور git clone که در بالا نشان دادیم قرار دهید.

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

2. Git branch

Branchها در دنیای گیت بسیار مهم هستند. با استفاده از برنچ‌ها، چندین توسعه‌دهنده می‌توانند به صورت همز‌مان بر روی یک پروژه کار کنند. ما می‌توانیم از دستور git branch برای ایجاد، لیست کردن و حذف برنچ‌ها استفاده کنیم.

ایجاد یک branch جدید:

git branch <branch-name>

این دستور یک برنچ را به صورت محلی یا همان لوکال ایجاد خواهد کرد. برای قرار دادن برنچ جدید در ریپازیتوری راه دور، باید از دستور زیر استفاده کنید:

git push -u <remote> <branch-name>

مشاهده brancheها:

git branch or git branch --list

حذف branche:

git branch -d <branch-name>

برنچ‌ها یک موضوع بسیار گسترده و مهم هستند که شما باید خوب آن‌ها را درک کنید.

3. Git checkout

این دستور هم یکی از پرکاربردترین دستورات گیت است. برای کار در یک برنچ، ابتدا باید به آن برنچ بروید. ما غالبا برای جابه‌جایی از یک برنچ به برنچ دیگر از git checkout استفاده می‌کنیم. همچنین می‌توانیم از آن برای checkout کردن فایل‌ها و کامیت‌ها استفاده کنیم.

git checkout <name-of-your-branch>

برای جابه‌جایی موفقیت‌آمیز بین برنچ‌ها، باید چندین مرحله را انجام دهید:

قبل از جابه‌جایی باید تغییرات برنچ فعلی خود را کامیت کنید یا ذخیره کنید.

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

همچنین یک دستور میانبر وجود دارد که به شما اجازه می‌دهد همزمان یک برنچ را ایجاد کرده و به آن بروید:

git checkout -b <name-of-your-branch>

این دستور یک برنچ جدید در لوکال شما ایجاد می‌کند (-b مخفف branch است) و برنچ را بعد از ایجاد checkout می‌کند (وارد آن می‌شود).

4. Git status

دستور Git status همه اطلاعات ضروری در مورد برنچ فعلی را به ما می‌دهد.

git status

ما می‌توانیم اطلاعاتی مانند موارد زیر را به دست آوریم:

آیا برنچ فعلی به روز است

آیا چیزی برای commit، push یا pull وجود دارد

آیا فایل stage شده یا unstage شده‌ای وجود دارد

آیا فایل‌های ایجاد شده، اصلاح‌شده یا حذف‌شده‌ای وجود دارد

5. Git add

وقتی فایلی را ایجاد کرده، تغییر داده یا حذف می‌کنیم،‌ این تغییرات در لوکال اتفاق می‌افتند و در کامیت بعدی نیستند (مگر اینکه تنظیمات را تغییر دهیم).

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

برای اضافه کردن یک فایل واحد:

git add <file>

برای اضافه کردن یک‌ باره همه چیز:

git add -A

وقتی تصویر بالا در مورد چهارم را مشاهده می‌کنید، نام فایل‌هایی را می‌بینید که به رنگ قرمز هستند؛ این یعنی اینکه آن‌ها فایل‌های unstage هستند. فایل‌های unstage در کامیت‌های شما قرار نمی‌گیرند.

برای گنجاندن آن‌ها، باید از git add استفاده کنیم:

نکته مهم: دستور git add ریپازیتوری را تغییر نمی‌دهد و تا زمانی که از git commit استفاده نکنیم، تغییرات ذخیره نمی‌شوند.

6. Git commit

این دستور شاید پر کاربردترین دستور گیت باشد. وقتی به یک مرحله خاص در توسعه می‌رسیم، می‌خواهیم تغییرات را ذخیره کنیم (شاید بعد از یک وظیفه یا مشکل خاص).

Git commit مانند تنظیم یک نقطه بررسی (checkpoint) در فرآیند توسعه است که در صورت نیاز می‌توانید بعدا به آن بازگردید.

git commit -m "commit message"

نکته مهم: Git commit تغییرات شما را فقط به صورت لوکال ذخیره می‌کند.

7. Git push

بعد از کامیت کردن تغییرات، کار بعدی که می‌خواهید انجام دهید ارسال تغییرات به سرور راه دور است. Git push کامیت‌های شما را برای ریپازیتوری راه دور آپلود می‌کند.

git push <remote> <branch-name>

با این حال، اگر برنچ شما به تازگی ایجاد شده باشد، شما همچنین باید برنچ را با دستور زیر آپلود کنید:

git push --set-upstream <remote> <name-of-your-branch>

یا

git push -u origin <branch_name>

نکته مهم: Git push فقط تغییراتی را آپلود می‌کند که کامیت شده‌اند.

8. Git pull

دستور git pull برای دریافت به روز رسانی از ریپازیتوری راه دور استفاده می‌شود. این دستور ترکیبی از git fetch و git merge است که یعنی، وقتی از git pull استفاده می‌کنیم، به روز رسانی‌ها را از ریپازیتوری راه دور دریافت می‌کند (git fetch) و بالافاصله آخرین تغییرات را در لوکال شما اعمال می‌کند (git merge).

git pull <remote>

این عمل ممکن است باعث مغایرت‌هایی (conflict) شود که باید آن‌ها را به صورت دستی حل کنید.

9. Git revert

گاهی اوقات باید تغییراتی که ایجاد کرده‌ایم را برگردانیم (undo). روش‌های مختلفی برای بازگرداندن تغییرات به صورت لوکال یا از راه دور وجود دارد (بستگی به نیاز ما دارد)، اما باید از این دستورات به دقت استفاده کنیم تا از حذف کردن ناخواسته جلوگیری شود.

یک روش مطمئن که بتوانیم کامیت‌ها را به حالت قبل برگردانیم استفاده از git revert است. برای دیدن تاریخچه کامیت ابتدا باید از git log -- oneline استفاده کنیم:

سپس باید hash code بعدی را برای کامیتی که می‌خواهیم undo کنیم را مشخص کنیم:

git revert 3321844

بعد از این، صفحه‌ای را مشاهده خواهید کرد؛ فقط shift + q را برای خروج بزنید:

دستور Git revert کامیت مشخصی را undo می‌کند، اما یک کامیت جدید را بدون حذف مورد قبلی ایجاد می‌کند:

مزیت استفاده از git revert این است که به تاریخچه کامیت دست نمی‌زند. این یعنی شما هنوز هم می‌توانید همه کامیت‌ها را در تاریخچه خود ببینید، حتی موارد برگشت داده شده را.

یکی دیگر از اقدامات امن در اینجا این است که همه چیز در سیستم لوکال ما اتفاق می‌افتد مگر اینکه آن‌ها را برای ریپازیتوری راه دور push کرده باشیم. به همین دلیل استفاده از git revert امن‌تر است و روش ارجح برای undo کردن کامیت‌ها است.

10. Git merge

وقتی که توسعه در برنچ‌تان کامل شد و همه چیز به خوبی کار کرد، مرحله آخر ادغام برنچ با برنچ والد (dev یا master) است. این کار با دستور git merge انجام می‌شود.

Git merge اساسا برنچ  feature شما را همراه با تمام کامیت‌های آن به برنچ dev (یا master) برمی‌گرداند. مهم است که به یاد داشته باشید که ابتدا باید در برنچ خاصی که می‌خواهید با برنچ feature ادغام کنید باشید.

مثلا وقتی می‌خواهید برنچ feature را با برنچ dev ادغام کنید:

اول باید به برنچ dev سوئیچ کنید:

git checkout dev

قبل از ادغام، باید برنچ dev لوکال خود را آپدیت کنید:

git fetch

در نهایت، می‌توانید برنچ feature خود را با dev ادغام کنید:

git merge <branch-name>

تذکر: قبل از اینکه برنچ‌ها را ادغام کنید، مطمئن شوید که برنچ dev تان آخرین ورژن را دارد، در غیر این صورت ممکن است تداخل یا مشکلات ناخواسته‌ای پیش آید.

مطالب زیادی در رابطه با گیت برای یادگیری وجود دارد، اما این 10 دستور از پر استفاده‌ترین دستورات گیت هستند که ما روزانه در برنامه‌نویسی از آن‌ها استفاده می‌کنیم.

ایمان مدائنی

نویسنده 1299 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

تاکنون هیچ کاربری از این پست تشکر نکرده است

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید