گیت برای مبتدیان
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 9 دقیقه

گیت برای مبتدیان

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

چه چیزهایی را می‌توان از این مطلب انتظار داشت؟

در این مطلب ما یک مقدمه از گیت همچنان روشی برای شروع کار با آن را به شما ارائه خواهیم کرد.

  • گیت چیست؟
  • آشنایی با اصطلاحات دنیای گیت.
  • استفاده از گیت از طریق خط فرمان.

گیت یک سیستم کنترل نسخه یا Version Control System است که به اختصار به آن VCS می‌گویند. اما سوالی که پیش می‌آید این است، VCS چیست؟ یک سیستم VCS تمام تغییراتی که روی یک فایل انجام می‌شود را ردیابی و شناسایی می‌کند. البته این فایل باید در اختیار VCS‌ قرار گرفته باشد.

در کنار این مورد، شما با استفاده از این تکنولوژی می‌توانید بین توسعه‌دهندگان مختلف از امکانات همکاری و به اشتراک گذاری پروژه‌ها استفاده کنید. این کار بدون تاثیر مخرب گذاشتن روی همدیگر انجام می‌شود.

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

  • چه چیزهایی از فایل تغییر کرده است؟
  • چه کسی این تغییرات را اعمال کرده است؟
  • چه زمانی این تغییرات اتفاق افتاده‌اند؟

برای آنکه بتوانید از طریق گیت، یک سیستم همکاری با توسعه‌دهنده را داشته باشید، نیاز است که از نسخه‌های گیت که روی یک سرور میزبانی می‌شوند استفاده کنید. Github، Bitbucket و MVSTS نمونه‌هایی از این پلتفرم‌ها هستند که تقریبا در تمام آن‌ها یکسری ویژگی‌های مشترک دیده می‌شود.

منظور از مخزن یا Repository در گیت چیست؟

یک مخزن به دایرکتوری گفته می‌شود که گیت روی آن نظارت دارد. در اصطلاح ساده‌تر آن را Repo می‌نامند. یک مخزن ممکن است که چندین فایل مختلف و چندین دایرکتوری و ساب-دایرکتوری را در خود داشته باشد. 

در داخل هر مخزن یک دایرکتوری مخفی به نام .git وجود دارد که شامل تمام فایل‌ها و دایرکتوری‌هایی می‌شود که گیت برای دنبال کردن تغییرات به آن‌ها نیاز خواهد داشت. 

اگر ما .git را حذف کنیم، گیت دیگر قابلیت ردیابی فایل‌های ما را ندارد و دیگر مخزنی نیز وجود نخواهد داشت. مخازنی که روی یک کامپیوتر به صورت محلی قرار می‌گیرند به local repository یا مخزن محلی معروف هستند. از طرفی دیگر مخازنی که روی پلتفرم‌های میزبانی شده گیت قرار می‌گیرند remote repository یا مخزن ریموت نامگذاری می‌شوند.

دانلود و نصب گیت

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

پیاده‌سازی یک مخزن گیت

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

خط فرمان یا ترمینال خود را باز کرده و با استفاده از دستورات Change Directory یا cd وارد دایرکتوری مورد نظرتان شوید. بعد از اینکار دستور زیر را وارد نمایید:

git init 

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

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

وضعیت مخزن

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

git status

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

دنبال کردن یک مخزن

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

برای انجام چنین کاری ما باید از دستور git add استفاده نماییم. سینتکس کلی این دستور به صورت زیر است:

git add file.txt

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

git add .

یک دستور دیگر نیز وجود دارد که دقیقا همین کار را انجام می‌دهد:

git add –A

بیایید تصور کنیم که فایل‌های زیر را در داخل مخزن خود داریم:

همانطور که مشاهده می‌کنید، ما یک دایرکتوری با نام .git داریم. زمانی که برای اولین بار git init را اجرا می‌کنیم، محتویات داخل دایرکتوری .git به صورت زیر خواهد بود:

اما درست بعد از آنکه دستورات دیگری را در گیت اجرا کردیم، مخزن گیت ما به صورت زیر در خواهد آمد:

برای آنکه ببینیم چه فایل‌هایی توسط گیت دنبال می‌شود می‌توانیم از دستور قبلی git status استفاده کنیم:

git status
On branch master

No commits yet

Untracked files:
 (use “git add <file>…” to include in what will be committed)

HelloWorld.html
 Notes.txt
 README.md

nothing added to commit but untracked files present (use “git add” to track)

از آنجایی که ما هنوز به صورت واقعی هیچ فایلی را دنبال نکرده‌ایم، در خروجی دستور status هیچ فایلی دنبال نمی‌شود. بیایید به یک مرحله عقب‌تر برگردیم و چند فایل واقعی را با استفاده از دستور git add به گیت معرفی کنیم:

$ git add HelloWorld.html Notes.txt

حال بیایید یک بار دیگر دستور git status را وارد کرده و خروجی را مشاهده نماییم:

git status
On branch master

No commits yet

Changes to be committed:
 (use “git rm — cached <file>…” to unstage)

new file: HelloWorld.html
 new file: Notes.txt

Untracked files:
 (use “git add <file>…” to include in what will be committed)

README.md

همانطور که مشاهده می‌کنید حال ما دو فایل جدید داریم که توسط گیت دنبال می‌شوند، اما یک فایل دیگر با نام README.md نیز وجود دارد که گیت آن را دنبال نمی‌کند. 

در واژه‌شناسی گیت به این کاری که انجام دادیم، استیجینگ یا Staging یک فایل گفته می‌شود. پس در واقع ما در حال حاضر دو فایل را به مرحله استیج برده‌ایم.

اما باز هم گیت به صورت کامل تغییرات فایل‌های ما را دنبال نمی‌کند، تا زمانی که آن‌ها را کامیت نکنیم.

کامیت فایل‌های استیج شده

برای کامیت کردن فایل‌هایی که استیج کرده‌اید کافی‌ست به صورت زیر عمل نمایید:

git commit -m ‘Initial Commit

برای هر کامیتی که ایجاد می‌کنید، نیاز است که یک پیام را نیز برای آن قرار دهید. –m پارامتری است که قابلیت الصاق یک کامنت یا پیام را به کامیت می‌دهد. اگر می‌خواهید که تمام کامیت‌های انجام شده را مشاهده بکنید، می‌توانید از دستور git log بهره ببرید.

git log

commit 8525b32ffcb92c731f5d04de7fe285a2d0ebe901 (HEAD -> master)

Author: shahzan <sxxxxxxn@gmail.com>

Date: Sun Apr 28 01:12:20 2019 +0100

Initial Commit

هر زمانی که یکی از فایل‌های استیج شده تغییری بکند، نیاز است که از ابتدا پروسه git add را آغاز کنید و آن را به حالت استیج ببرید. بعد از آن نیز یک بار دیگر باید فرایند کامیت کردن را انجام دهید. این فایل‌ها تا زمانی که استیج و کامیت نشوند، توسط گیت به عنوان فایل‌های تغییریافته یا modified شناخته می‌شوند.

برای نمایش بهتر این قضیه من یکسری تغییرات را در فایل Notes.txt اعمال کردم. حال اگر دستور git status را اجرا کنید، با خروجی زیر روبرو خواهید شد:

git status

On branch master

Changes not staged for commit:

(use “git add <file>…” to update what will be committed)

(use “git checkout — <file>…” to discard changes in working directory)

modified: Notes.txt

Untracked files:

(use “git add <file>…” to include in what will be committed)

README.md

no changes added to commit (use “git add” and/or “git commit -a”)

با توجه به خروجی‌های بالا، متوجه خواهید شد که فایل Notes.txt تغییراتی کرده اما هنوز برای کامیت کردن استیج نشده است. برای اینکار باید پروسه git add و git commit را یکبار دیگر اجرا کنید:

git add Notes.txt

Shahzan@BlackBox MINGW64 /d/Medium Post Pics/Git/Source Code (master)

$ git status

On branch master

Changes to be committed:

(use “git reset HEAD <file>…” to unstage)

modified: Notes.txt

Untracked files:

(use “git add <file>…” to include in what will be committed)

README.md

همانطور که مشاهده می‌کنید، فایل Notes.txt استیج شده و آماده کامیت شدن است.

git commit -m ‘Notes.txt file updated’

[master 184fcad] Notes.txt file updated

1 file changed, 3 insertions(+), 1 deletion(-)

حال اگر دستور git log را یک بار دیگر اجرا کنید، متوجه می‌شوید یک یک کامیت دیگر اضافه شده است:

git log

commit 184fcad4185296103cd9dba0da83520399a11383 (HEAD -> master)

Author: shahzans <shuaib.shahzan@gmail.com>

Date: Sun Apr 28 01:15:38 2019 +0100

Notes.txt file updated

commit 8525b32ffcb92c731f5d04de7fe285a2d0ebe901

Author: shahzans <shuaib.shahzan@gmail.com>

Date: Sun Apr 28 01:12:20 2019 +0100

Initial Commit

نادیده گرفتن فایل‌ها

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

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

برای عملی کردن این موضوع فایل .gitignore را ایجاد کرده و نام فایل‌هایی که نمی‌خواهید گیت آن‌ها را دنبال کند به صورت مستقیم بنویسید. البته می‌توانید تکنیک دیگری را نیز در نظر بگیرید. برای مثال بگویید تمام فایل‌هایی که پسوند .md دارند را نادیده بگیر. برای چنین کاری کافی‌ست *.md را در فایل .gitignore وارد کنید.

در پایان

گیت یک ابزار فوق‌العاده است، در حقیقت چیزی‌ست که هر توسعه‌دهنده مدرن باید بداند و حتما در رزومه کاری‌اش قرار داشته باشد. کارهای بسیار زیاد دیگری مانده که می‌توانید با گیت انجام دهید. اگر قصد یادگیری بیشتری در این زمینه را دارید پیشنهاد می‌کنم به دوره آموزشی «آموزش گیت و گیت هاب» و «مدیریت پروژه های متن‌باز با git و github» مراجعه نمایید.

منبع

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
4 از 4 رای

/@arastoo
ارسطو عباسی
کارشناس تولید و بهینه‌سازی محتوا

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

دیدگاه و پرسش

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

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

ارسطو عباسی

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

مقالات برگزیده

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

مشاهده همه مقالات