آموزش Git (گیت) در سی دقیقه – قسمت پایانی

تاریخ : ۲۹ آبان ۱۳۹۶ | دسته بندی : Git,گیت,مقالات,وردپرس | برچسب ها : ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
git tutoral

در مقاله‌های گذشته چهار قسمت از آموزش گیت (Git) در سی دقیقه را برایتان در وب سایت خود قرار دادیم و اکنون قسمت پنجم و نهایی آن را توضیح می‌دهیم.

 

آموزش Git (گیت) در سی دقیقه – قسمت پایانی

 

پیشرفته

در آخرین بخش این مقاله آموزشی، چند تکنیک پیشرفته‌تر را که به احتمال فراوان کاربرد بیشتری خواهند داشت، بررسی می‌کنیم.

 

git

گیت

 

  • بررسی اختلاف بین کامیتها

 

هر کامیت شناسه (ID) منحصربه‌فرد خود را دارد که به شکل رشته‌ای از اعداد و نمادهاست. ما برای مشاهده فهرستی از تمامی کامیتها و شناسه‌های آن‌ها از فرمان git log استفاده می‌کنیم:

 

همان‌طور که مشاهده می‌کنید، شناسه‌ها واقعاً طولانی هستند، اما زمان کار کردن با آن‌ها لازم نیست که همه آن را کپی کنید، همین چند نماد اول معمولاً کافی هستند.

برای این‌که ببینیم در یک کامیت چه چیزهای جدیدی وجود دارند، می‌توانیم  [git show [commit را اجرا کنیم:

 

برای مشاهده اختلاف بین این دو کامیت می‌توانیم از git diff همراه با نحو  [commit-from]..[commit-to]   استفاده کنیم:

 

ما اولین کامیت را با آخرین مورد مقایسه کرده‌ایم و بنابراین، می‌توانیم تمامی تغییراتی را که تاکنون انجام شده‌اند، مشاهده کنیم. معمولاً انجام این کار با استفاده از فرمان git difftool آسان‌تر است که یک کلاینت گرافیکی را بالا می‌آورد که تمامی اختلاف‌ها را در کنار هم نشان می‌دهد.

 

نمودار گیت

گیت

 

  • بازگرداندن فایلی به ورژن گذشته

 

گیت به ما اجازه می‌دهد تا یک فایل انتخاب شده را به شکلی که در یک کامیت معین بوده است، بازگردانیم. این کار را می‌توانیم با فرمان آشنای git checkout انجام دهیم که قبلاً از آن برای جابجایی بین شاخه‌ها استفاده می‌کردیم، اما از آن می‌توان برای جابجایی بین کامیتها هم استفاده کرد (استفاده از یک فرمان برای اجرای چندین وظیفه که ظاهراً هیچ ارتباطی با هم ندارند، در گیت رایج است).

در کد زیر hello.txt را گرفته و هر چیزی را که از زمان کامیت اولیه انجام داده‌ایم، معکوس خواهیم کرد. برای انجام این کار، باید شناسه آن کامیت را که می‌خواهیم بدان بازگردیم و نیز مسیر کامل به‌سوی فایلمان را تهیه کنیم.

 

git learning

git learning

 

  • اصلاح کامیت

 

اگر متوجه شدید که در یکی از کامیتهای خود اشتباه تایپی داشته‌اید یا فراموش کرده‌اید پس از کامیت خود فایلی را اضافه کنید، به آسانی می‌توانید آن را با استفاده از git commit –amend اصلاح کنید. با انجام این کار، همه چیز از آخرین کامیت به staging area اضافه می‌شود و می‌کوشد یک کامیت جدید ایجاد کند. این کار یک شانس خوب به شما می‌دهد تا پیام کامیت خود را اصلاح کرده و فایل‌های بیشتری را به staging area اضافه کنید.

برای فایل‌های پیچیده‌تر که در آخرین کامیت وجود ندارند (یا هنوز تغییرات خود را push نکرده‌اید)، باید از git revert  استفاده کنید. این فرمان تمامی تغییراتی را که یک کامیت معرفی کرده است، می‌گیرد، آن‌ها را معکوس می‌کند و کامیت جدیدی ایجاد می‌کند که دقیقاً متضاد آن است.

با استفاده از نام مستعار HEAD می‌توان به جدیدترین کامیت دست یافت.

 

 

برای سایر کامیتها بهترین کار این است که از یک شناسه استفاده کنید.

 

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

 

تصویر شماتیک گیت

تصویر شماتیک گیت

 

  • برطرف کردن تناقض‌های ادغام

 

جدای از سناریوهایی که در قسمت پیش برایتان توضیح دادیم، تناقض‌ها معمولاً زمان ادغام شاخه‌ها یا pull کردن کارهای یک شخص دیگر نمایان می‌شوند. گاهی اوقات گیت خودش این تناقض‌ها را برطرف می‌کند، اما در سایر موارد شخصی که در حال کار با آن است باید تصمیم بگیرد (و معمولاً با دقت انتخاب کند) که چه کدی را نگه دارد و کدام را حذف کند.

حال بیایید نمونه‌ای را که در آن سعی کرده‌ایم دو شاخه به نام‌های john_branch و tim_branch را ادغام کنیم، بررسی کنیم. هم John و هم Tim در حال نوشتن یک تابع هستند که تمامی المان‌ها را در یک آرایه نمایش می‌دهد.

جان در حال استفاده از یک for loop است:

 

تیم forEach را ترجیح می‌دهد:

 

شماتیک git

نمودار شماتیک git

 

هر دو آن‌ها کدشان را در شاخه مربوط به خود کامیت می‌کنند. اکنون، اگر تلاش کنند که این دو شاخه را ادغام کنند، پیغام خطای زیر را مشاهده خواهند کرد:

 

گیت نتوانست این شاخه‌ها را به‌طور خودکار ادغام کند؛ بنابراین، اکنون این دو توسعه دهنده باید تناقض را به‌طور دستی برطرف کنند. اگر آن‌ها فایلی را که تناقض در آن است باز کنند، خواهند دید که گیت یک maker را در خطوط دارای تناقض وارد کرده است.

 

ما در بالای ===== ، و در پایین خطوط متناقض، کامیت HEAD را داریم. با این روش می‌توانیم اختلاف‌ها  را به‌روشنی بینیم و بهترین ورژن را انتخاب کنیم و با هم یک ورژن کاملاً جدید بنویسیم. ما در این موقعیت مورد دوم را انجام می‌دهیم و همه چیز را بازنویسی می‌کنیم و makerها را حذف می‌کنیم تا گیت بداند که کارمان را انجام داده‌ایم.

 

زمانی که همه چیز را تنظیم کردیم، برای اتمام فرآیند باید یک کامیت ادغام اجرا شود

 

همان‌طور که می‌بینید، این فرآیندی خسته‌کننده است و کار با آن در پروژه‌های بزرگ بسیار سخت است. اکثر توسعه‌دهنده‌ها ترجیح می‌دهند تناقض‌ها را با استفاده از GUI client برطرف کنند که انجام کارها را بسیار آسان می‌کند. برای اجرای کلاینت گرافیکی از git mergetool  استفاده می‌کنیم.

 

نمودار گیت

نمودار گیت

 

  • تنظیم .gitignore

 

در اکثر پروژه‌ها، فایل‌ها یا پوشه‌هایی وجود دارند که هرگز نمی‌خواهیم آن‌ها را کامیت کنیم. با ایجاد فایل   .gitignore می‌توانیم کاری کنیم تا مطمئن شویم که آن‌ها به‌طور تصادفی در  git add -A  گنجانده نمی‌شوند:

  • یک فایل متنی به نام .gitignore را به‌طور دستی ایجاد کرده و آن را در دایرکتوری پروژه‌تان ذخیره کنید.
  • در آن فایل اسامی فایل‌ها/دایرکتوری‌هایی را که قرار است نادیده گرفته شوند، هر یک را در یک خط جدید فهرست بندی کنید.
  • خود .gitignore  باید اضافه شود، کامیت شود و push شود زیرا مانند سایر فایل‌های موجود در پروژه است.

نمونه‌های خوب برای فایل‌هایی که باید نادیده گرفته شوند، عبارت‌اند از:

  • فایل‌های log
  • شکل‌های task runner
  • پوشه node_modules در پروژه‌های js
  • پوشه‌هایی که IDEهایی مانند Netbeans و IntelliJ ایجاد کرده‌اند.
  • یادداشت‌های شخصی توسعه‌دهنده

بن کردن (banning)  .gitignore تمامی موارد بالا باید چیزی شبیه با این باشد:

 

علامت اسلش «/» در انتهای برخی از خطوط نشان می‌دهد که این یک پوشه است و ما هر چیزی را که در آن قرار دارد به‌صورت بازگشتی نادیده می‌گیریم. علامت ستاره هم کاربرد عادی خود به‌عنوان یک wild card را  دارد.

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

 

آشنایی با گیت

آشنایی با گیت

 

تیم وردپرس باران امیدوار است خواندن این مقاله برای کاربران محترم مفید باشد. برای سفارش طراحی وب سایت وردپرسی می‌توانید با استفاده از بخش تماس با ما با کارشناسان ما تماس بگیرید یا شماره تماس خود را در صفحه اول وب سایت ثبت کنید تا در اولین فرصت با شما تماس گرفته شود.

 

 

 

مرتضی حمزه سرکانی

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

ارسال نظر