تغییر شاخه یا کامیت
پیشنمایش دستور
استفاده
git checkout [گزینهها] <شاخه|کامیت>
مثالها
git checkout develop # Switch to branch 'develop' git checkout -b feature # Create and switch to new branch 'feature' git checkout --track origin/feature # Track remote branch git checkout HEAD~2 file.txt # Restore a specific file from previous commit git checkout -- file.txt # Discard changes in working directory
دقیقا چه میکند؟
دستور git checkout برای تغییر شاخهها و بازیابی فایلها از کامیتهای مختلف استفاده میشود. این دستور شما را قادر میسازد که به راحتی بین نسخههای مختلف کد پروژهتان جابجا شوید یا تغییرات نادرست را بازگردانید.
موارد کاربرد رایج
- تغییر بین شاخهها برای انجام تغییرات در بخشهای مختلف پروژه
- ایجاد شاخههای جدید و جابجایی به آنها
- پیگیری شاخههای remote
- بازیابی فایلها از یک کامیت قبلی
- لغو تغییرات محلی در دایرکتوری کاری
مقایسه با git branch
در اینجا مقایسهای بین git checkout و git branch آورده شده است:
| ویژگی | git checkout | git branch |
|---|---|---|
| تغییر شاخه | بله، میتوانید به یک شاخه موجود جابجا شوید. | خیر، نمیتوانید شاخه را تغییر دهید. |
| ایجاد شاخه جدید | بله، با استفاده از -b میتوانید شاخه جدیدی ایجاد کرده و به آن جابجا شوید. |
بله، اما git branch فقط شاخه جدید را ایجاد میکند و شما باید به صورت دستی به آن جابجا شوید. |
| پیگیری شاخه remote | بله، میتوانید با استفاده از --track یک شاخه remote را پیگیری کنید. |
خیر، نمیتوانید شاخه remote را پیگیری کنید. |
| بازیابی فایلها از کامیت | بله، میتوانید فایلها را با استفاده از git checkout HEAD~2 file.txt بازیابی کنید. |
خیر، نمیتوانید فایلها را مستقیماً بازیابی کنید. |
| ایجاد شاخه orphan | بله، با استفاده از --orphan میتوانید یک شاخه orphan ایجاد کنید. |
خیر، نمیتوانید شاخه orphan ایجاد کنید. |
بهترین شیوهها
- قبل از تغییر شاخهها، تغییرات خود را commit یا stash کنید تا از دست دادن دادهها جلوگیری شود.
- برای ایجاد و جابجایی به یک شاخه جدید از
git checkout -bاستفاده کنید تا از گامهای اضافی جلوگیری شود. - اگر در حالت detached HEAD هستید، مراقب باشید که تغییرات ایجاد شده به هیچ شاخهای مرتبط نخواهند بود مگر اینکه شاخه جدیدی ایجاد کنید.
- برای ادغامهای پیچیده، از
git mergeاستفاده کنید تا از تضادهای احتمالی جلوگیری کنید.
اشتباهات رایج
- فراموش کردن commit یا stash کردن تغییرات قبل از استفاده از
git checkoutکه منجر به خطا یا از دست رفتن دادهها میشود. - انتقال به یک کامیت (حالت detached HEAD) بدون ایجاد یک شاخه جدید که ممکن است باعث گیج شدن یا از دست دادن کار شود.
- استفاده از
git checkout -- file.txtبدون staged کردن تغییرات که ممکن است تغییرات محلی مهم را بازنویسی کند.
محدودیتها
- نمیتوان شاخهها را تغییر داد اگر تغییرات ذخیرهنشده تضاد داشته باشند.
- انتقال به یک کامیت شما را در حالت detached HEAD قرار میدهد که به این معنی است که شما هیچ شاخهای ندارید.
- فایلهایی که با
git checkout -- fileبازیابی میکنید، تغییرات محلی را بازنویسی خواهند کرد مگر اینکه staged شده باشند.
نحوه استفاده
برای استفاده از git checkout کافی است شاخه یا کامیتی که میخواهید به آن منتقل شوید را وارد کنید. همچنین میتوانید از گزینههای مختلف برای تنظیم نحوه عملکرد دستور استفاده کنید، مانند استفاده از -b برای ایجاد یک شاخه جدید یا --track برای پیگیری شاخه remote.
نمای کلی
در مجموع، git checkout یکی از پرکاربردترین دستورات در Git است. این دستور به شما این امکان را میدهد که شاخهها را مدیریت کرده و فایلها را بازیابی کنید، که در وظایف روزانه کنترل نسخه ضروری است. چه بخواهید شاخهها را جابجا کنید، شاخههای جدید ایجاد کنید یا تغییرات را برگردانید، درک صحیح از این دستور میتواند در روند کاری شما زمان و سردرگمی زیادی را نجات دهد.