دستور git init — از صفر تا صد

۶۸۸ بازدید
آخرین به‌روزرسانی: ۰۹ اردیبهشت ۱۴۰۲
زمان مطالعه: ۶ دقیقه
دستور git init — از صفر تا صد

در این مطلب، دستور git init به طور کامل و جامع، همراه با ارائه مثال‌هایی، مورد بررسی قرار گرفته است. در پایان این مطلب، کاربر از کارکردهای هسته‌ای و لیست گسترده ویژگی‌های دستور git init آگاه می‌شود.

دستور git init

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

  • گزینه‌ها و کاربردهای دستور git init
  • چشم‌انداز پوشه git.
  • مقادیر محیطی سفارشی شده برای پوشه git init
  • دستور git init در مقایسه با git clone
  • مخازن git init bare
  • الگوهای git init

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

دستور git init یک مخزن گیت جدید می‌سازد. این مخزن برای تبدیل یک پروژه موجود و نسخه‌بندی نشده در مخزن گیت یا مقداردهی اولیه یک مخزن جدید و خالی استفاده می‌شود. اغلب دستورات دیگر گیت، بیرون از یک مخزن مقدماتی قابل استفاده و موجود نیستند؛ بنابراین این اولین دستوری است که در یک پروژه جدید اجرا می‌شود. اجرای git init یک زیر پوشه git. در پوشه کاری کنونی می‌سازد که حاوی همه فراداده‌های گیت لازم برای مخزن جدید است. این فراداده‌ها شامل زیرپوشه‌هایی برای اشیا، مراجع و فایل‌های الگو می‌شوند. یک فایل HEAD نیز ساخته می‌شود که به کامیت‌های بررسی شده جاری ارجاع دارد. گذشته از پوشه git.، در پوشه ریشه (Root Directory) از پروژه، یک پروژه موجود بدون تغییر باقیمانده است (برخلاف SVN، گیت نیازی به یک زیرپوشه git. در کلیه زیرپوشه‌ها ندارد).

به طور پیش‌فرض، git init پیکربندی مقدماتی گیت را برای مسیر زیرپوشه git. انجام می‌دهد. مسیر زیر پوشه در صورتی که کاربر تمایل داشته باشد این مورد در جای دیگری قرار داشته باشد، قابل ویرایش و سفارشی‌سازی است. می‌توان متغیر محیطی GIT_DIR$ را روی یک مسیر سفارشی تنظیم کرد و git init فایل پیکربندی گیت را مقداردهی اولیه می‌کند. علاوه بر آن، می‌توان آرگومان separate-git-dir-- را به دلایل مشابهی انتقال داد. یک بررسی موردی متداول برای یک زیر پوشه git. مجزا، نگهداری فایل پیکربندی «dotfiles» (از جمله vimrc ،.bashrc. و دیگر موارد) در پوشه خانگی در هنگام حفظ پوشه git.‌در جای دیگر است.

کاربرد دستور git init

در مقایسه با SVN، دستور git init یک دستور فوق‌العاده آسان برای ساخت پروژه‌های کنترل نسخه جدید است. گیت نیازی به آن ندارد که کاربر یک مخزن بسازد، فایل‌ها را وارد کند و یک کپی کاری را بررسی کند.

علاوه بر آن، گیت نیاز به هیچ سرور از پیش موجودی یا «امتیازات مدیر» (Admin Privileges) ندارد. کاربر تنها نیاز دارد که در زیر پوشه پروژه، cd و git init را اجرا کند و بدین شکل، یک مخزن گیت کاملا کاربردی خواهد داشت.

1git init

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

1git init <directory>

یک مخزن گیت در پوشه تعیین شده ساخته می‌شود. اجرای این دستور موجب ساخت یک زیر پوشه می‌شود که حاوی هیچ چیز به جز زیر پوشه git. نیست. اگر کاربر در حال حاضر git init را روی پوشه پروژه اجرا کرده و حاوی یک زیر پوشه git. است، می‌تواند به صورت امن git init را دوباره روی پوشه پروژه مشابهی اجرا کند. این کار، موجب لغو پیکربندی git. موجود نمی‌شود.

مقایسه دستور git init با git clone

شایان توجه است که git init و git clone به سادگی با یکدیگر اشتباه گرفته می‌شوند. در سطح بالا، هر دو این موارد برای «امور اولیه یک مخزن گیت جدید» (Initialize a New Git Repository) مورد استفاده قرار می‌گیرند. اگرچه، git clone وابسته به git init است. git clone برای ساخت یک کپی از مخزن موجود مورد استفاده قرار می‌گیرد.

به طور داخلی، git clone ابتدا git init را برای ساخت یک مخزن جدید فراخوانی می‌کند. سپس، git clone داده‌ها را از مخزن جدید کپی و یک مجموعه جدید از فایل‌های کاری را بررسی می‌کند.

مخازن Bare

git init --bare <directory>

دستور بالا، یک مخزن گیت را مقداردهی اولیه می‌کند؛ اما در عین حال، پوشه کنونی را نیز حذف می‌کند. مخازن به اشتراک گذاشته شده باید همیشه با پرچم bare-- ساخته شوند. به طور متعارف، مخازن با پرچم bare-- که با git. پایان می‌پذیرد، مقداردهی اولیه می‌شوند. برای مثال، نسخه bare از مخزن که my-project نامیده می‌شود باید در یک پوشه که my-project.git نامیده می‌شود، ذخیره شوند.

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

دستور git init -- از صفر تا صد

متداول‌ترین بررسی موردی برای git init --bare، ساختن یک مخزن مرکزی راه دور است.

1ssh <user>@<host> cd path/above/repo git init --bare my-project.git

ابتدا، به سروری که حاوی مخزن مرکزی است SSH زده می‌شود. سپس، به هر جایی که کاربر تمایل دارد پروژه را ذخیره کند جا به جایی انجام می‌شود. در نهایت، از پرچم bare-- برای ساخت یک مخزن ذخیره‌سازی مرکزی استفاده می‌شود. پس از آن، توسعه‌دهندگان my-project.git را برای ساخت یک کپی محلی روی ماشین توسعه خود، کلون می‌کنند.

قالب‌های git init

git init <directory> --template=<template_directory>

دستور بالا، یک مخزن گیت را مقدماتی می‌کند و فایل‌ها را از <template_directory> در مخزن کپی می‌کند. قالب‌ها به کاربر این امکان را می‌دهند که یک مخزن با یک زیر پوشه از پیش تعریف شده را مقدماتی کند.

کاربر می‌تواند یک الگو را برای داشتن پوشه‌های پیش‌فرض و فایل‌هایی که به یک مخزن جدید کپی می‌شوند، پیکربندی کند. الگوهای پیش‌فرض گیت معمولا در پوشه usr/share/git-core/templates/ قرار می‌گیرند، اما ممکن است برای کاربران گوناگون، مسیرهای متفاوتی روی ماشین کاربر وجود داشته باشد.

قالب‌های پیش‌فرض، مراجع خوب و مثال‌هایی از چگونگی به کارگیری ویژگی‌های قالب هستند. یک ویژگی قدرتمند قالب‌ها که در قالب‌های پیش‌فرض نمایش داده شده، پیکربندی Git Hook است. کاربر می‌تواند قالب‌هایی با Git Hook‌های از پیش تعریف شده بسازد و مخزن گیت جدید خود را با hook‌های آماده مقدماتی کند.

پیکربندی git init

همه پیکربندی‌های <git init <directory آرگومان <directory> را دریافت می‌کنند. اگر کاربر <directory> را فراهم کند، دستور داخل آن اجرا می‌شود. اگر پوشه موجود نباشد، ساخته می‌شود.

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

-Q

--QUIET

این دستور، تنها پیام‌های سطح حیاتی (Critical Level)، خطاها و هشدارها را چاپ می‌کند. سایر خروجی‌های دیگر، در نظر گرفته نمی‌شوند.

--BARE

دستوری که در بالا آمده است، یک مخزن Bare می‌سازد.

--TEMPLATE=<TEMPLATEDIRECTORY>

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

--SEPARATE-GIT-DIR=<GIT DIR>

یک فایل متنی حاوی مسیر به <git dir> را می‌سازد. این فایل، همچون لینکی به پوشه git‎. عمل می‌کند. این مورد در صورتی مفید است که کاربر قصد ذخیره‌سازی پوشه git‎. را در یک موقعیت جداگانه یا درایور از فایل‌های در حال کار پروژه داشته باشد. برخی از کاربردهای متداول separate-git-dir-- در ادامه آمده‌اند.

  • به منظور نگهداری دات‌فایل‌های (Dotfiles) پیکربندی سیستم (vimrc،.bashrc. و دیگر موارد) در پوشه خانگی، در حالی که پوشه git‎. را در جای دیگری نگه می‌دارد.
  • هنگامی که سایز مخزن گیت در دیسک بسیار بزرگ شده است و کاربر نیاز به جا به جایی آن به یک درایو با ظرفیت بالای جداگانه دارد.
  • هنگامی که کاربر قصد دارد یک پروژه گیت را در یک پوشه که به طور عمومی در دسترس است، مانند www:root، قرار دهد.
  • کاربر می‌تواند git init --separate-git-dir را روی مخزن کنونی فراخوانی کند و git dir. به مسیر تعیین شده <git dir> انتقال داده می‌شود.

--SHARED[=(FALSE|TRUE|UMASK|GROUP|ALL|WORLD|EVERYBODY|0XXX)]

دستور بالا، مجوزهای دسترسی را برای مخزن جدید فراهم می‌کند. این مورد تعیین می‌کند که کدام کاربران (Users) و گروه‌ها (Groups) که از دسترسی‌های سطح یونیکس استفاده می‌کنند، مجوز ارسال/دریافت (push/pull) به/از مخزن را دارند.

مثال‌ها

ساخت یک مخزن جدید برای یک پایگاه کد موجود:

1cd /path/to/code \ 
2git init \ 
3git add . \ 
4git commit

ساخت یک مخزن Bare جدید:

1git init --bare /path/to/repo.git

ساخت یک قالب init و مقداردهی اولیه مخزن گیت از الگو:

1mkdir -p /path/to/template \ 
2echo "Hello World" >> /absolute/path/to/template/README \
3git init /new/repo/path --template=/absolute/path/to/template \ 
4cd /new/repo/path \ 
5cat /new/repo/path/README

اگر نوشته بالا برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *