سرفصل‌های آموزشی
آموزش کاربردی گیت برای برنامه نویسان
راه اندازی یک مخزن

راه اندازی یک مخزن

مقدمه

در این بخش به بررسی اجمالی روش راه اندازی یک مخزن در Git می پردازیم و خواهیم دید که چگونه می توانیم مخزنی برای پروژه های فعلی و جدید خود ایجاد کنیم. برای مطالعه این بخش نیاز است یک آشنایی اولیه با 
Cli (Command-line-interface) داشته باشید. 

به طور کلی به موارد زیر خواهیم پرداخت:

  • ایجاد مخزن جدید
  • clone کردن یک مخزن
  • Commit کردن فایل تغییر داده شده در مخزن
  • دستورهای پرکاربرد Git

در انتهای این بخش شما باید بتوانید یک مخزن Git ایجاد کنید، از دستورهای معمول Git استفاده کنید، یک فایل تغییر داده شده را Commit کنید و تاریخچه پروژه خود را ببینید.

مخزن Git چیست؟

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

ایجاد مخزن جدید (git init)

برای ایجاد یک مخزن جدید از دستور git init استفاده کنید. git init دستوری است که در فرآیند ایجاد مخزن تنها یک بار از آن استفاده می کنید. اجرای این دستور موجب ایجاد پوشه ای به نام .git در ساختار پروژه شما شده و شاخه master را نیز ایجاد می کند.

ایجاد مخزن برای پروژه موجود

در صورتی که یک پروژه از قبل دارید و می خواهید برای آن یک مخزن ایجاد کنید، کافی است به مسیر پروژه رفته و دستور git init را در آن جا اجرا کنید. اجرای این دستور در پوشه پروژه همان کاری که در بخش 3 گفته شد را انجام می دهد. مثال:

cd /path/to/your/existing/code

با استفاده از دستور cd در cli به مسیر پروژه خود می رویم.

git init

دربخش مربوط به git init می توانید در مورد این دستور بیشتر مطالعه کنید.

Clone کردن یک پروژه موجود

اگر پروژه ای قبلا در مخزن مرکزی راه اندازی شده باشد، دستور clone معمول ترین راه ایجاد یک نسخه مشابه از آن پروژه در سیستم Local خودمان است. مانند git init، clone کردن یک پروژه کاری است که تنها یک بار انجام می دهیم. به محض اینکه توسعه دهنده پروژه را به طور کامل Clone کرد، تمام عملیات های کنترل نسخه ای که اجرا می کند، روی مخزن  local (محلی) او انجام خواهد شد.

git clone 

git clone برای ایجاد یک کپی از مخزن های Remote استفاده می شود. برای clone کردن باید یک url مشخص کنید. Git از پروتکل های شبکه و قالب های مختلف url پشتیبانی می کند. در این مثال از پروتکل SSH استفاده خواهیم کرد. url های SSH در Git از قالب git@HOSTNAME:USERNAME/REPONAME.git استفاده می کنند. یک مثال از url با فرمت SSH در Git مانند git@github.com:laravel/framework.git خواهد بود.

در این مثال مقادیر قالب به شکل زیر است:

  • HOSTNAME github.com
  • USERNAME: laravel
  • REPONAME: framework

پس از اجرای دستور clone، آخرین نسخه از فایل های مخزن remote که در شاخه master قرار دارند در یک پوشه جدید روی سیستم شما قرار داده می شوند. این پوشه جدید هم نام با پارامتر  REPONAME که بالاتر گفته شد خواهد بود. برای مطالعه بیشتر درمورد دستور git clone و قالب های url پشتیبانی شده به بخش مربوط به آن مراجعه کنید. 

ذخیره تغییر ها در مخزن  (git add و git commit)

اکنون که یک مخزن را راه اندازی یا clone کرده اید، می توانید تغییرات فایل های درون آن را   commit (ثبت) کنید. به مثال زیر توجه کنید (در این مثال فرض می شود شما مخزنی در مسیر /path/to/project  دارید).

cd /path/to/projectecho "آموزش گیت در سکان آکادمی" >> CommitTest.txtgit add CommitTest.txtgit commit -m "added CommitTest.txt to the repo"
  • ابتدا با دستور cd به محل پروژه رفتیم.
  • فایل جدیدی به نام CommitTest.txt با محتویات "آموزش گیت در سکان آکادمی" ایجاد کردیم.
  • با استفاده از دستور git add فایل خود را به ناحیه staging در Git بردیم.
  • یک Commit با پیامی مرتبط با کار انجام شده ایجاد کردیم.

پس از اجرای دستور های مثال بالا، شما فایل CommitTest.txt را به تاریخچه Git اضافه کرده اید و از این به بعد تمام تغییر های مربوط به فایل ضبط می شود.

این مثال دو دستور جدید add و commit را به طور محدودی معرفی کرد. هر دوی این دستور ها در بخش git add و git commit به شکل عمیق تری بررسی شدند. یکی دیگر از موارد استفاده git add هنگامی است که می خواهیم تمام فایل های تغییر داده شده را به مخزن خود اضافه کنیم. برای انجام این کار –all را هنگام اجرای دستور اضافه می کنیم.

مشارکت مخزن به مخزن (git push)

برخلاف سیستم کنترل نسخه SVN (مخفف subversion ) Git، هیچ تفاوتی بین مخزن های مختلف قائل نمی شود و همه مخزن ها به طور کامل، مستقل از یک دیگر عمل می کنند. انجام مشارکت در Git، بر پایه اثر گذاری مخزنی به مخزن دیگر است. در Git می توانیم Commit ها را از مخزنی به مخزن دیگر push یا pull کنیم (بگیریم یا بفرستم). البته مستقل بودن مخزن ها اجباری نیست و شما به راحتی با نام گذاری یا قوانینی که خودتان تعیین می کنید می توانید بین مخزن ها رابطه ایجاد کنید. اما این کار به خود سیستم کنترل نسخه Git وابسته نیست.

مخزن های clone شده و bare

در صورتی که در بخش های قبل از دستور git clone برای ایجاد مخزن در سیستم خود استفاده کرده اید مخزن شما برای مشارکت remote پیکربندی شده است. git clone به صورت خودکار مخزن شما را به url ای که از آن clone کردید وصل می کند هنگامی که git این پیکربندی را انجام داد، شما می توانید پس از تغییر فایل ها و commit کردن آن ها، از دستور git push استفاده کنید تا تغییر های انجام شده در مخزن remote هم ثبت شوند.

اگر از دستور git init استفاده کردید تا مخزن جدید بسازید، مخزن remote وجود ندارد تا تغییر ها را به آن Push  کنید. یکی از کارهای معمول این است که از سرویس های میزبان Git مانند https://github.com استفاده کنید و یک مخزن در آن جا بسازید. این سرویس یک url در اختیار شما قرار می دهد که با استفاده از آن در مخزن local خود می توانید تغییرات را به مخزن ساخته شده در سرویس میزبان push کنید. پس از این که یک مخزن remote در سرویس میزبان مورد نظر خود ساختید، باید آن را به مخزن local خود متصل کنید. در بخش پیکربندی و راه اندازی، بیشتر در این مورد صحبت خواهیم کرد.

اگر شما ترجیح می دهید که خودتان میزبان مخزن باشید، باید یک مخزن Bare راه اندازی کنید. هر دو دستور git init و git clone گزینه –bare را قبول می کنند. مخزن های bare دیگر پوشه .git را درخود ندارد. تمام محتویاتی که در مخزن های عادی در پوشه .git وجود دارد در این مخزن ها داخل پوشه اصلی پروژه قرار می گیرند. هیچ commit ای در مخزن های bare انجام نمی شود. این مخزن ها تغییر فایل ها را دنبال نمی کنند.

پیکربندی و راه اندازی (git config)

پس از راه اندازی مخزن remote نیاز است آدرس آن را در مخزن local خود پیکربندی کنید. دستور git remote این کار را انجام می دهد.

git remote add  <repository> <remote>

این دستور مخزن remote واقع در آدرس “remote”را به مخزن “repository”  در سیستم شما متصل می کند. پس از انجام این کار شما می توانید شاخه های local خود را در مخزن remote، push کنید.

git push -u <remote> <branch>

این دستور شاخه ی “branch” در سیستم شما را به مخزنی با آدرس "remote" push خواهد کرد. برای مطالعه عمیق تر در این مورد صفحه ی مربوط به git remote را مطالعه کنید.

افزون بر آدرس مخزن remote، به احتمال نیاز است تا موارد عمومی git مانند نام کاربری یا ایمیل را نیز پیکربندی کنید. دستور git config این امکان را به شما می دهد که این پیکربندی ها را برای کل git یا یک مخزن خاص انجام دهید. این دستور موارد مختلفی را می تواند پیکربندی کند که بخشی از آن ها پایین تر لیست شده است.

Git پیکربندی ها را در سه فایل جداگانه ذخیره می کند که به شما این امکان را می دهد تا گزینه های مختلف را در سه سطح مخزن (local)، کاربر(global) یا کل سیستم(system) تنظیم کنید.

  • /.git/config :Local تنظیمات مربوط به مخزن
  • /.gitconfig :Global  تنظیمات مربوط به کاربر (تمام دستورهای که با گزینه –global  ذخیره می شوند).
  • System: $(prefix)/etc/gitconfig تنظیماتی که مربوط به کل سیستم می شوند.
git config --global user.name 

با اجرای این دستور نام نویسنده را تعریف می کنید تا برای تمام commit هایی که کاربر فعلی انجام می دهد استفاده شود. به طور معمول این دستور را با –global اجرا می کنیم تا پیکربندی برای کاربر فعلی انجام شود.

git config --global alias. 

این دستور میانبری برای یک دستور git ایجاد می کند. ایجاد میانبر برای دستور هایی که به طور معمول استفاده می کنیم، بسیار کاربردی است. یک مثال ساده می تواند مانند زیر باشد.

git config --global alias.ci commit

این کار یک دستور ci می سازد که به عنوان میانبر دستور git commit استفاده می شود. برای مطالعه بیشتر درمورد نام های مستعار به صفحه git config مراجعه کنید.

git config --system core.editor <editor command>

در مثال بالا ویرایشگر متنی که دستور هایی مانند git commit از آن استفاده می کنند را برای همه کاربران سیستم تعریف کردیم. ورودی "editor command"  دستور اجرای ویرایشگر است (مانند : vim). این مثال نشان می دهد که برای پیکربندی کل سیستم (تمام کاربران و مخزن ها) باید از گزینه –system استفاده کرد. برای مطالعه با جزئیات بیشتر درمورد سطوح مختلف پیکربندی صفحه ی git configuration را مطالعه کنید.

بررسی کلی

تمام گزینه های پیکربندی شده، در فایل های text به صورت ساده ذخیره می شوند. بنابراین دستور git config تنها یک رابط command-line است که کار را برای ما راحت می کند. به طور معمول، پیکربندی git، اولین باری که در یک سیستم جدید با آن کار می کنید انجام می شود. همچنین برای بیشتر دستور ها از گزینه –global استفاده می کنیم. یک استثنای مهم در این مورد، بازنویسی ایمیل نویسنده است. به احتمال زیاد شما می خواهید ایمیل شخصی خود را برای مخازن شخصی و متن باز، و ایمیل کاری را برای مخازن مربوط به کار قرار دهید.

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

هنگامی که گزینه های این فایل ها با یک دیگر ناسازگار باشند، تنظیمات local بر user و تنظیمات user بر global اولویت دارند. در فایل های پیکربندی، محتویاتی مانند زیر دیده می شود.

[user] name = John Smith email = john@example.com [alias] st = status co = checkout br = branch up = rebase ci = commit [core] editor = vim

شما می توانید این مقادیر را به صورت دستی ویرایش کنید. این کار دقیقا مانند استفاده از دستور git config است.

مثال

اولین کاری که نیاز می شود پس از نصب git انجام دهید تعیین نام، ایمیل و شخصی سازی بعضی از تنظیمات پیش فرض است. یک پیکربندی اولیه می تواند مانند زیر باشد.

به git بگویید چه کسی هستید.

git --global user.name "sokan academy" git config --global user.email sokanacademy@example.com

ویرایش گر متن خود را انتخاب کنید.

git config --global core.editor vim

چند نام مستعار تعریف کنید.

git config --global alias.st status git config --global alias.co checkout git config --global alias.br branch git config --global alias.up rebase git config --glob

جمع بندی

در این بخش بیان شد که چگونه با دو دستور git init و git clone مخزن بسازیم. از آموخته های این بخش، می توان برای مدیریت نرم افزار یا هر محتوایی که نسخه بندی می شود استفاده کرد. همچنین دستور های git add، git commit، git push و git remote به طور کلی توضیح داده شدند.

online-support-icon