discord icon
سرور دیسکورد گاردایران

پست های پیشنهاد شده

درود
در این تاپیک آموزش نصب گیت (Git) و استفاده از اون در سطح مبتدی قرار خواهد گرفت !

لطفا درصورت مشاهده هرگونه ایراد و سوال به بنده در خصوصی اطلاع بدید ❤️

 

 

منابع:

لینک 1 

لیتک 2

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

گیت چیست ؟

 

نویسندۀ و خالق اصلی گیت لینوس توروالدز (همچنین سازندۀ کرنل لینوکس) هست

گیت یک سیستم کنترل نسخه برای نظارت بر روی تغییرات اعمال شده در طول توسعه نرم افزار می‌باشد. این سیستم برای هماهنگی برنامه نویس ها طراحی شده است اما می‌توان از آن برای دنبال کردن تغییرات در هر گونه نوع فایل یا پروژه ای استفاده کرد. هدف گیت فراهم کردن سرعت، یکپارچگی داده ، محیط‌ کار غیرخطی و توزیع شده می باشد.

نصب گیت !

ابتدا این لینک را باز کنید و با توجه به سیستم عامل خود گیت رو از بخش زیر دانلود کنید !

spacer.pngspacer.png

فایل دانلود شده را اجرا کنید و مراحل نصب را طبق عکس های زیر سپری کنید !

ممکن است به دلیل تفاوت ورژن در نسخه هایه اینده این مراحل کمی دچار تفییر بشوند

spacer.pngspacer.pngspacer.png

در بخش آخر پیشنهاد می‌شود مطابق عکس موارد را انتخاب کنید. توضیحات هرکدام:

  • گزینه Additional icons بر روی صفحه دسکتاپ شما یک میانبر می سازد.
  • گزینه Windows Explorer integration به شما این امکان را می‌دهد تا با کلیک راست بتوانید Git را در مسیر جاری اجرا کنید. Git Bash محیط تحت خط‌ فرمان و Git GUI محیط گرافیکی می‌باشد.
  • گزینه Git LFS یا Large File Support برای کار کردن با فایل های حجیم طراحی شده است و از دانلود چندباره آن ها با جایگزینی پوینتر جلوگیری می‌کند.
  • گزینه Associate .git* configuration files with the default text editor قابلیت شناسایی پسوند git و باز کردن آن با ویرایشگر پیش فرض (مانند VSCode) را به سیستم عامل شناسایی می‌کند. تنظیمات این گزینه جلوتر توضیح داده خواهد شد.
  • گزینه Associate .sh files to be run with Bash قابلیت شناسایی پسوند sh (اسکریپت Unix Shell) با محیط خط فرمان Bash را به سیستم عامل شناسایی می‌کند. اگر مایل هستید از خط فرمان های Bash دیگری مانند Cygwin به جای MSYS تعبیه شده استفاده کنید این گزینه را انتخاب نکنید.
  • گزینه Use a TrueType font in all console windows پشتیبانی بهتر از کاراکتر های Unicode در محیط خط فرمان را فراهم می‌کند. استفاده از این قابلیت لزومی ندارد.
  • گزینه Check daily for Git for Windows updates بطور روزانه بروزرسانی های گیت را اعلام می‌کند.

spacer.pngspacer.png

در بخش آخر ویرایشگر برای Git انتخاب می‌شود.

همانطور که مشاهده می‌کنید انتخاب پیش فرض Vim می‌باشد. Vim یک ویرایشگر بسیار محبوب در ترمینال است اما برای افرادی که تجربه کار با آن را ندارند، پیشنهاد نمی‌شود.

و به همین دلیل ما از ویرایشگر VSCode (لینک دانلود) استفاده میکنیم !

spacer.png

پس مطابق تصویر Use Visual Studio Code as Git's default editor را انتخاب و سپس بر روی Next کلیک کنید.

اگر مراحل نصب VSCode را در هین نصب گیت انجام داده‌اید باید Git Setup را کاملا ببندید و مراحل نصب را از ابتدا تکرار کنید.

در صورت نیاز، ویراشگر پیش فرض از طریق خط فرمان قابل تغییر است.

spacer.png

  • گزینه Use Git from Git Bash Only: تغییری در آدرس PATH ایجاد نخواهد شد و ابزار git تنها از طریق Git Bash قابل دسترس خواهد بود.
  • گزینه Git from the command line and also from 3rd-party software: دسترسی به git از هر برنامه سیستم عامل علاوه بر Git Bash فراهم خواهد شد.
  • گزینه Use Git and optional Unix tools from the Command Prompt: تمام ابزار Unix و دستورات git از خط فرمان ویندوز قابل دسترس بوده و جایگزین ابزار های سیستم عامل خواهند شد.

spacer.pngspacer.pngspacer.png

در بخش آخر نوبت به انتخاب ترمینال یا خط فرمان می‌رسد.

گزینه اول برای اجرای Git Bash به همراه یک ترمینال شبیه سازی شده یونیکس (MinGW) و گزینه دوم خط فرمان ویندوز (cmd) است.

استفاده از گزینه دوم مخصوصا در نسخه های قدیمی‌تر ویندوز توصیه نمی‌شود.

پس گزینه Use MinTTY را انتخاب کنید.

spacer.pngspacer.pngspacer.png

Install رو کلیک کنید و صبر کنید تا نصب به پایان برسد.
گیت رو با موفقیت نصب کردید !

بخش اول

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

مقدمه

 

طبق گفته های قبلی گیت یک سیستم کنترل نسخه (Version Control) هست !

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

spacer.png

* توجه داشته باشید که محدودۀ کاربران گیت فقط به برنامه نویسان و شاخه تکنولوژی محدود نمیشه! *

یکی از ویژگی بسیار مهم گیت امکان کار گروهی می‌باشد، می‌توانید ببینید چه تغییراتی توسط چه شخصی و در چه زمانی صورت گرفته است.

کنترل های نسخه دو دسته هستند: متمرکز و توزیع شده. در نوع متمرکز فایل های پروژه و تاریخچه آن بر روی سرور مرکزی نگهداری شده و سیستم ها با اتصال به سرور به داده ها دسترسی پیدا می‌کنند.

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

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

با این توضیحات، گیت یک سیستم کنترل نسخه توزیع شده است؛

که از ویژگی های آن می‌توان به موارد زیر اشاره کرد:

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

بخش دوم

مباحث این مطلب در محیط خط فرمان Git Bash توضیح داده شده‌اند اما در نرم افزار های دیگر هم قابل استفاده هستند.

 

در منؤ استارت عبارت Git Bash رو تایپ کنید و برنامه رو اجرا کنید

در محیط ترمینال ابتدا به تغییر کانفیگ میپردازیم، با دستور زیر نام کاربری خود را تعریف کنید:

git config --global user.name 'Goodzilam'

و با دستور زیر ایمیل:

git config --global user.email 'Goodzilam@gmail.com'

 

 حالا ما اماده ساخت اولین پروژه یا اصطلاحا ریپو (ابتدای کلمه Repository) هستیم !

ترمینال رو به فولدر مورد نظر برای ایجاد پروژه هدایت کنید

و با دستور زیر یک ریپو ایجاد کنید:

git init

Capture.JPG

با دستور بالا یک پوشه مخفی git درون دایکرتوری فعلی ایجاد می‌کند و از این پس دایرکتوری را تحت مدیریت گیت قرار میده !

 

گیت برای ارائه کنترل نسخه نیاز به محتوا برای کار کردن دارد پس حالا وقت اضافه کردن محتویات به ریپازیتوریمون هست.

با دستور زیر یک فایل تکست با محتویات Hello World در ریپازیتوریمون ایجاد میکنیم:

echo "Hello World" >> HW.txt

 

اتفاقی که رخ میده، گیت متوجه یک فایل جدید میشود !

با دستور زیر میتوانید از وضعیت فعلی ریپو خبردار شوید (در اینده خیلی این دستور رو تکرار میکنید) :

git status

Capture.JPG

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

همونطور که مشاهده میکنید فایل ایجاد شده رو Untracked مشخص کرده، به این معنا که گیت هیچ تعاملی با آن ها ندارد.

به متن قرمز رنگ دقت کنید، اسامی فایل های Untracked در اینجا نمایان می‌شوند. قبل از ثبت شدن فایل ها به تاریخچه گیت، فایل ها باید آماده ثبت شوند که به آن Stage کردن می‌گویند

با دستور زیر میتوانید فایل ها را به مرحله Stage ببرید:

فقط یک فایل مشخص
git add file.txt

یا تمامی فایل ها
git add -A

 

فایل تکست ما در مرحله استیج قرار گرفته و اماده ثبت در تاریخچه گیت می باشد که به آن Commit گفته می شود.
مرحله کامیت نیازمند ارائه توضیحاتی در مورد تغییرات رخ داده در ریپو است

پس با دستور زیر فایل رو از مرحله استیج به کامیت میبریم:

git commit -m "Create HW.txt"

 

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

این نکته را هم به یاد داشته باشید که مرسوم است متن اولین کامیت "Initial commit" ثبت شود.

برای مشاهده تاریخچه کامیت های ثبت شده در ریپو از دستور زیر استفاده کنید:

git log

دستور log اطلاعاتی همچون مشخصه کامیت به همراه شاخه متعلق به آن، نام و آدرس ایمیل فرد ثبت کننده، تاریخ دقیق و جزئیات کامیت را چاپ می‌کند. مشخصه های کامیت با الگوریتم رمزنگاری SHA-1 تولید و Hash می‌شوند.

Capture.JPG

 

خلاصه این بخش

  • گیت برای مدیریت نسخه های یک پروژه و ساده سازی امکان همکاری چندین نفر بر روی پروژه است.
  • برای ساخت یک پروژه (ریپو یا ریپازیتوری) از دستور git init استفاده میکنیم.
  • برای مشاهده تغییرات در ریپو از دستور git status استفاده میکنیم.

مراحل ثبت تغییرات جدید (حذف، افزودن و یا تغییر فایل) در ریپوی لوکال:

  1. استیج کردن فایل یا فایل ها با git add
  2. کامیت کردن تغییرات با git commit

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

بخش سوم

در این بخش به نحوه حذف کردن و برگرداندن تغیرات اعمال شده میپردازم!

تا به اینجا، فایلی ایجاد کردیم به اسم HW.txt سپس فایل رو به مرحله استیج بردیم و در نهایت کامیت کردیم.

 

تغییر

به محتویات فایل HW.txt که  شامل "Hello World" بود "!!!" را اضافه کردیم

و سپس تغییرات اعمال شده را استیچ و کامیت کردیم

 

Capture.JPG

با دستور git log میتونید تغییرات اعمال شده در پروژه رو مشاهده کنید

Capture.JPG

اولین کامیت مربوط به ایجاد فایل HW.txt و دومین کامیت مربوط ادیت کردن HW.txt هست!

 

Capture.JPG

به عکس بالا دقت کنید، هر کامیت با یک هش (مثال بالا: 67b8be309899981bd91e4720ed7ec1a96c8d04b3 )مشخص میشود.

در انتها آخرین کامیت عبارت "HEAD -> master" مشاهده میکنید، کلمه HEAD به اخرین کامیت اعمال شده اشاره دارد و کلمه master به برنچ (Branch, در ادامه توضیح خواهیم داد) اشاره میکند !

همونطور که میدونید گیت برای مدیریت نسخه هست :) و امکان مشاهده تغییرات در هر کامیت و برگشت به اون ورژن رو میدهد !

برگردیم به مثال بالا، میخوایم به ورژنی از پروژه بریم که فایل HW.txt حاوی "!!!" نبود.

از انجایی که در اخرین کامیت ما فایل HW.txt ادیت کردیم، میدانیم که در کامیت یکی مانده به اخر "!!!" وجود ندارد

پس برای برگشت به ورژن ذکر شده کافی است دستور زیر را اجرا کنیم:

git checkout HEAD~1

 

اما اگر ورژن مورد نیاز ما دقیقا یکی مانده به اخر نباشه چی ؟

همونطور که گفتم هر کامیت با هش مخصوصی مشخص میشود، پس بجای HEAD~1 (کامیت قبل از HEAD) قسمت اولیه از هش کامیت (یا کل هش) رو قرار میدیم !

git checkout cb0325646

 

و برای برگشت به HEAD از دستور زیر استفاده میکنیم:

git checkout -

 

آن استیج و کامیت

حالا فرض کنید که به اشتباه فایلی ناخواسته رو استیج کردید!

برای خارج کردن فایلی از حالت استیج دستور زیر رو اجرا کنید:

git restore --staged .

Capture.JPG

همونطور که میبینید فایلی که حاوی پسورد بوده رو به اشتباه استیچ کردیم و با دستور ذکر شده از حالت استیج خارج کردیم.

 

اما اگر نتنها فایل رو استیج بلکه کامیت هم میکردیم چه ؟

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

git reset --hard HEAD~1

 

خلاصه این بخش

  • رفت امد بین ورژن ها با دستور git checkout hash
  • خارج کردن فایل از حالت استیج با دستور git restore --sateged
  • حذف کامیت انجام شده با دستور git reset

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

بخش چهارم

 

فایل README.md چیست ؟

README یک فایل تکست است (از برخی تگ های HTML پشتیبانی میکند) و به خواننده پروژه را معرفی و توضیح میدهد !

معمولا این فایل حاوی پیشنیازها و نحوه نصب است.

مثال یک README.md جامع در این لینک

 

دستور Diff

دستور diff تغییرات اعمال شده در یک فایل را مشخص میکند! (خط های پاک شده, ادیت شده و اضافه شده)

در ریپوی موجودمون فایلی به اسم README.md ایجاد میکنیم

root@1337:~/GitTutorial$ cat README.md 
# Welcome
Guardiran Git tutorial.
root@1337:~/GitTutorial$ git add -A
root@1337:~/GitTutorial$ git commit -m "Create README.md"
[detached HEAD 59d6663] Create README.md
 1 file changed, 2 insertions(+)
 create mode 100644 README.md
root@1337:~/GitTutorial$ 

و آدرس این تاپیک را در اخر فایل README.md اضافه میکنیم.

root@1337:~/GitTutorial$ cat README.md
# Welcome
Guardiran Git tutorial.

root@1337:~/GitTutorial$ cat README.md 
# Welcome
Guardiran Git tutorial. Topic Link below
<a href="https://guardiran.org/topic/9191-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-git/">GuardIran Topic</a>

حال برای مشاهده کردن تغییرات اعمال شده دستور زیر رو اعمال میکنیم:

git diff README.md

root@1337:~/GitTutorial$ git diff README.md
diff --git a/README.md b/README.md
index c607764..5b38986 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,3 @@
 # Welcome
-Guardiran Git tutorial.
+Guardiran Git tutorial. Topic Link below
+<a href="https://guardiran.org/topic/9191-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-git/">GuardIran Topic</a>

تغییرات قبل و بعد توسط - + نمایش داده می‌شود.

دقت کنید تغییرات README.md در Stage قرار نگرفته‌اند.

 

پس از اضافه کردن فایل به Stage اگر از دستور git diff استفاده کنیم خروجی نمایش داده نمیشود !

باید برای مشاهده جزئیات تغییرات فایل های Stage شده از دستور زیر استفاده می کنیم:

git diff --staged

خلاصه این بخش

  • README.md فایلی است که توضیحات جامعی درباره ریپو به کاربران میدهد
  • مشاهده تغییرات اعمال شده قبل از استیج با دستور git diff
  • مشاهده تغییرات اعمال شده بعد از استیج با دستور git diff --staged

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

بخش پنجم

در این بخش به ‌Branch میپردازیم.

 

- شاخه (Branch)

در ابتدای ساخت یک ریپو ما در شاخه master قرار داریم, از فواید ساخته برنچ میتوان به:

۱. ایجاد محیطی برای همکاری دو برنامه نویس (بطور مثال)

۲. محلی برای توسعه ورژن های بعدی پروژه 

۳. رفع مشکل (Issue) یا ایجاد قابلیت های جدید به یک ریپو (با ایجاد pull request, برنچ رو با برنچ master ادغام میکنیم)

و ...

 

شاخه ها مانند دو جهان موازی در کنار هم وجود دارند اما سرانجام باید به شاخه اصلی یعنی master ختم شوند.

برای اعمال تغییرات شاخه جدید در master باید عمل ادغام (merge) صورت گیرد.

 تغییرات اعمال شده بر روی branch قرار دارند و مستقیما قابل دستیابی هستند.

برای ساخت برنچ از دستور زیر استفاده میکنیم:

git branch branch-name

و برای پاک کردن یک برنچ:

git branch -d branch-name

فرض کنید ورژن دوم برنامه ما در برنچ جدیدمان اماده هست, حالا نوبت ادغام (merge) کردن برنچ جدیدمون با مستر است!

git merge branch-name

توجه داشته باشید در ریپویی که دسترسی اعمال تغییرات ندارید,نیاز به ایجاد Pull Request دارید

ساده تر توضیح بدم با اینکار از صاحب ریپو درخواست میکنید تا برنچ شما رو با برنچ دیگری ادغام کنه 

- Conflict

قطعا در آینده نزدیک با مشکل رایجی به نام Conflict برخورد خواهید کرد.

این اتفاق زمانی رخ می‌دهد که محتوای فایل در شاخه های مختلف احتمال جایگزینی و از بین رفتن محتویات فعلی شوند.

spacer.png

اما رفع این خطا به عهده شماست و باید یکی از  محتویات یا هردو را پاک کنید.

 

خلاصه این بخش

  • برنچ ها شاخه هایی از مسیر اصلی پروژه ما هستند که هرزمان درصورت نیاز با مسیر اصلی ادغام میشوند
  • ساخت برنچ یا شاخه جدید با دستور git branch
  • ادغام برنچ با دستور git merge
  • کانفلیکت یا تداخل مشکلی رایج هست که با ادیت کردن فایل ذکر شده برطرف میشود

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری