در این مطلب میخواهیم ارتباط با سرور git را فعال کنیم و نحوه تعاملات git local با remote git را بیان کنیم.
git reset
قبل از اینکه در مورد کار با سرور git صحبت کنیم ابتدا در مورد یکی دستورات مهمی که در بخش اول به آن اشاره نکردیم صحبت میکنیم.
با استفاده از git reset میتوانیم وضعیت کنونی پروژه را به وضعیت مخصوصی که در یک commit داشته است ببریم، به عبارت دیگر اگر بخواهیم به یک commit خاص در گذشته برگردیم میتوانیم از این دستور استفاده کنیم. با استفاده از تنظیم hard– میتوانید مطمئن شوید که تمام فایلهای پروژه به commit مشخص شده برگشت داده میشوند.
اما چطور باید مشخص کنیم که به کدام commit میخواهیم rollback داشته باشیم. اگر یادتان باشد در بخش اول با دستور git log آشنا شدیم، این دستور لیست تمامی commitها را به ما میدهد هر commit دارای یک شناسه SHA است که منحصربفرد است ابتدا این شناسه را کپی میکنیم و سپس در دستور git reset قرار میدهیم.
در سیستم git به راحتی میتوانید پروژه خودتان را به سرور منتقل کنید که برای اینکار میتوانید دلیلهای خودتان را داشته باشید. برای مثال پروژههای حساس را به سرور منتقل میکنید تا امنیت آن تضمین شود، یا میخواهید یک پروژه را در سرویسهای مجانی git به اشتراک بگذارید مانند github و دلیلهای دیگر.
git remote
خب اولین دستور که باید برای کار با سرور git با آن آشنا باشیم دستور git remote است. توجه داشته باشید منظور از سرور git میتواند هر سروری باشد، چه سروری در لوکال چه سرویسهایی مانند github یا bitbucket و غیره.
خود دستور git remote لیست سرورهای ثبت شده در پروژه را میدهد. برای اضافه کردن یک سرور جدید از دستور git remote add استفاده میکنیم.
برای مثال در کد زیر یک remote جدید با نام github و آدرس نوشته شده به لیست remoteهای پروژه اضافه میشود.
ما میتوانید هر تعداد که بخواهید سرور اضافه کنید و محدود به یک سرور نیستید.
با استفاده از دستور git remote remove نیز میتوانید یک remote را از لیست remoteهای پروژه حذف کنید. برای مثال remoteیی که در بالا اضافه کردیم را دوباره حذف میکنیم.
git remote remove github
git clone
اگر پروژه شما هم اکنون درون سرور موجود است و شما میخواهید یک نسخه از آن را بر روی لوکال بیاورید، اینکار را باید با استفاده از دستور git clone انجام دهید. توسط اینکار پروژه موجود بر روی سرور به همراه برنچ پیشفرض که معمولاً master است دانلود میشود. مثال:
git clone https://github.com/iranmegaweb/test.git
git push
پس از تغییرات پروژه در لوکال مثل ایجاد کامیت یا ایجاد یک تگ جدید، این تغییرات باید در سرور نیز بروز و ایجاد شود. برای اینکار از دستورgit push استفاده میشود. برای استفاده از این دستور باید حداقل یک remote از قبل تعریف شده باشد.
برای مثال در دستور زیر برنچ master به سرور origin ارسال میشود.
git push origin master
توجه داشته باشید که زمانی git push کار خواهد کرد که وضعیت پروژه clean باشد، یعنی هیچ فایلی برای ایجاد یک کامیت جدید وجود نداشته باشد.
git pull
خب اگر پروژه شما در سرور بروز شده باشد ولی در لوکال این اتفاق نیافتاده باشد و شما بخواهید تغییرات سرور را به لوکال بیاورید باید از دستور git pull استفاده کنید. باز هم این دستور زمانی git push کار خواهد کرد که وضعیت پروژه clean باشد. مثال:
git pull origin master
این دستور تغییرات را از سرور گرفته و با برنچ موجود در لوکال merge میکند. در حالی که دستور git fetch یک برنچ جدید ایجاد میکند.
فایل gitignore.
زمانی که شما درون یک پروژه کار میکند git به صورت خودکار تمام فایلها را به git میآورد. شما ممکن است بخواهید بعضی از پوشه ها و فایلها به گیت منتقل نشوند ولی درون پروژه وجود داشته باشند. برای اینکار از فایل gitignore. میتوانید استفاده کنید.
درون این فایل میتوانید لیست پوشه ها و فایلهایی که نمیخواهید درون گیت قرار بگیرند را لیست کنید. برای مثال در کد زیر پوشهvendor و فایل config.php و فایلهای با فرمت md. به گیت منتقل نمیشوند.
vendor/databese/config.php*.md
این فایل باید در روت پروژه تعریف شوید، اما میتوانید در مکان های دیگر پروژه هم اینکار را انجام دهید.
نتیجه گیری
امیدواریم این دو مطلب برای آشنایی مقدماتی شما با git مناسب باشد. در انتها اگر به دنبال راه اندازی سایتی مانند github برای سرور لوکال خود هستید میتوانید از Gitlab استفاده کنید.