You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: external/book/content/book/fa/v2/Customizing-Git-سفارشیسازی-Git-An-Example-Git-Enforced-Policy-یک-مثال-از-سیاستهای-تحمیلی-گیت.html
<p>در این مرحله، شما باید درک نسبتاً خوبی از عملکرد داخلی گیت و تا حدودی از نحوهی پیادهسازی آن پیدا کرده باشید.
23
+
این فصل به تعدادی از دستورات پلومبینگ (plumbing) پرداخته است — دستورات سطح پایین و سادهتری نسبت به دستورات پورسلین (porcelain) که در سایر بخشهای کتاب با آنها آشنا شدهاید.
24
+
درک نحوهی عملکرد گیت در سطح پایین، باعث میشود راحتتر بفهمید چرا گیت کاری را انجام میدهد که انجام میدهد و همچنین به شما امکان میدهد ابزارها و اسکریپتهای کمکی مخصوص به جریان کاری خودتان را بنویسید.</p>
25
+
</div>
26
+
<divclass="paragraph">
27
+
<p>گیت به عنوان یک فایلسیستم محتوای-آدرسپذیر ابزار بسیار قدرتمندی است که میتوانید از آن فراتر از یک سیستم کنترل نسخه استفاده کنید.
28
+
امیدواریم بتوانید از دانش تازه بهدستآمده در مورد ساختار داخلی گیت برای پیادهسازی برنامههای خلاقانهی خود بهره ببرید و با استفاده از گیت به روشهای پیشرفتهتر احساس راحتی کنید.</p>
<p>ممکن است این فصل را مستقیماً از فصلی بسیار قبلی باز کرده باشید، یا اینکه پس از خواندن ترتیبی کل کتاب تا اینجا به آن رسیدهاید — در هر صورت، اینجا قرار است به سازوکارهای درونی و پیادهسازی گیت بپردازیم.
22
+
ما دیدیم که فهم این اطلاعات برای درک اهمیت و توانمندی گیت بنیادی است، اما برخی دیگر به ما گفتهاند که برای مبتدیان میتواند گیجکننده و بیجهت پیچیده باشد.
23
+
بنابراین، این بحث را به عنوان آخرین فصل کتاب قرار دادهایم تا بتوانید آن را زود یا دیر در روند یادگیریتان بخوانید.
24
+
تصمیم با شماست.</p><p>حالا که اینجا هستید، بیایید شروع کنیم.
25
+
ابتدا، اگر هنوز برایتان روشن نیست، گیت بنیاداً یک سیستم فایل آدرسدهی بر اساس محتوا است که یک رابط کاربری کنترل نسخه (VCS) روی آن قرار گرفته است.
26
+
کمی بعد بیشتر در مورد معنای این جمله خواهید آموخت.</p><p>در روزهای نخستین گیت (عمدتاً پیش از نسخهٔ 1.5)، رابط کاربری بسیار پیچیدهتر بود چون بیشتر آن سیستم فایل را برجسته میساخت تا یک VCS پالایششده.
27
+
در چند سال اخیر، رابط کاربری تا حدی تصحیح شده که اکنون به اندازهٔ هر سیستم دیگری تمیز و آسان برای استفاده است؛ با این حال، کلیشهٔ رابط کاربری اولیهٔ گیت که پیچیده و دشوار برای یادگیری بود، همچنان پابرجاست.</p><p>لایهٔ سیستم فایل آدرسدهیشده بر اساس محتوا فوقالعاده جالب است، بنابراین ابتدا آن را در این فصل پوشش میدهیم؛ سپس دربارهٔ سازوکارهای انتقال و کارهای نگهداری مخزن که ممکن است نهایتاً با آنها سروکار داشته باشید، خواهید آموخت.</p>
28
+
<h2id="_plumbing_porcelain">ابزارها و دستورات سطح پایین (Plumbing and Porcelain)</h2>
29
+
<divclass="paragraph">
30
+
<p>این کتاب عمدتاً به این موضوع میپردازد که چگونه میتوان با حدود ۳۰ زیرفرمان اصلی گیت مانند <code>checkout</code>، <code>branch</code>، <code>remote</code> و … کار کرد.
31
+
اما باید توجه داشت که گیت در ابتدا بهعنوان یک جعبهابزار (toolkit) برای مدیریت نسخه طراحی شد، نه یک سیستم کنترل نسخه (VCS) کامل و کاربرپسند. به همین دلیل، بخشی از زیرفرمانهای آن عملیات سطحپایین انجام میدهند و برای استفاده در زنجیرههای یونیکسی (Unix pipelines) یا فراخوانی از اسکریپتها ساخته شدهاند.</p>
32
+
</div>
33
+
<divclass="paragraph">
34
+
<p>همانطور که احتمالاً تا حالا متوجه شدهاید، نه فصل اول این کتاب تقریباً منحصراً با فرمانهای لعاب سروکار دارند.
35
+
اما در این فصل بیشتر با فرمانهای سطحپایینِ لولهکشی سروکار خواهید داشت، زیرا آنها دسترسی به سازوکار درونی گیت را فراهم میکنند و به نشان دادن این که گیت چگونه و چرا کارهایش را انجام میدهد کمک میکنند.
36
+
بسیاری از این فرمانها قرار نیست بهصورت دستی در خط فرمان استفاده شوند، بلکه به عنوان بلوکهای سازنده برای ابزارهای جدید و اسکریپتهای سفارشی به کار میروند.</p>
37
+
</div>
38
+
<divclass="paragraph">
39
+
<p>وقتی در یک دایرکتوری جدید یا موجود <code>git init</code> اجرا میکنید، گیت دایرکتوری <code>.git</code> را ایجاد میکند که تقریباً همه چیزهایی را که گیت ذخیره و دستکاری میکند در آن قرار دارد.
40
+
اگر بخواهید مخزن خود را پشتیبانگیری یا کلون کنید، کپی کردن این تک دایرکتوری به مکان دیگری تقریباً همه چیز مورد نیازتان را در اختیارتان میگذارد.
41
+
کل این فصل اساساً به آنچه در این دایرکتوری میتوانید ببینید میپردازد.
42
+
در اینجا نمایی از آنچه معمولاً یک دایرکتوری تازهسازیشده <code>.git</code> به نظر میرسد آمده است:</p>
43
+
</div>
44
+
<divclass="listingblock">
45
+
<divclass="content">
46
+
<preclass="highlight"><codeclass="language-console" data-lang="console">$ ls -F1
47
+
config
48
+
description
49
+
HEAD
50
+
hooks/
51
+
info/
52
+
objects/
53
+
refs/</code></pre>
54
+
</div>
55
+
</div>
56
+
<divclass="paragraph">
57
+
<p>بسته به نسخهی گیت شما، ممکن است محتوای اضافی دیگری در آنجا ببینید، اما این یک مخزن تازهساختهشده با دستور <code>git init</code> است — همان چیزی که بهطور پیشفرض میبینید.
58
+
فایل <code>description</code> تنها توسط برنامهی GitWeb استفاده میشود، پس نگران آن نباشید.
59
+
فایل <code>config</code> شامل گزینههای پیکربندی مخصوص پروژهی شماست و دایرکتوری <code>info</code> یک فایل استثنا (global exclude) نگه میدارد برای الگوهای نادیدهگرفتن که نمیخواهید در فایل <code>.gitignore</code> پیگیری شوند.
60
+
دایرکتوری <code>hooks</code> اسکریپتهای هوک سمت کلاینت یا سرور شما را در خود دارد که بهصورت مفصل در <ahref="{{< relurl "book/fa/v2/ch00/_git_hooks" >}}">هوکهای Git (Git Hooks)</a> توضیح داده شدهاند.</p>
61
+
</div>
62
+
<divclass="paragraph">
63
+
<p>اینجا چهار ورودی مهم باقی میماند: فایلهای <code>HEAD</code> و (هنوز ساختهنشده) <code>index</code>، و دایرکتوریهای <code>objects</code> و <code>refs</code>.
64
+
اینها اجزای اصلی گیت هستند.
65
+
دایرکتوری <code>objects</code> تمام محتوای پایگاه دادهی شما را ذخیره میکند، دایرکتوری <code>refs</code> اشارهگرهایی به آبجکتهای commit در آن دادهها را نگه میدارد (شاخهها، تگها، ریموتها و غیره)، فایل <code>HEAD</code> به شاخهای که در حال حاضر چکاوت شده اشاره میکند، و فایل <code>index</code> جایی است که گیت اطلاعات ناحیهی آمادهسازی (staging area) را در آن ذخیره میکند.
66
+
اکنون هر یک از این بخشها را با جزئیات بیشتری بررسی خواهید کرد تا ببینید گیت چگونه کار میکند.</p>
0 commit comments