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

پیش‌فرض‌های ما درون سرور

دایرکتوری اصلی کدهای ما در مسیر `/var/www/domain.com` است و مسیری که برای ایجاد ریپوزیتوری گیت داریم `/var/reop/site.git` است.

ایجاد ریپوزیتوری

وارد سرور خود شوید و دستورات زیرا را در آن اجرا کنید. ``` cd /var mkdir repo && cd repo mkdir site.git && cd site.git git init --bare ``` `--bare` مشخص کننده است که این دایرکتوری حاوی سورس کدی نیست و تنها برای مدیریت ساخته می‌شود.

قلاب‌ها

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

مهمترین بخش کار ما اینجاست، یعنی جایی که باید مشخص کنیم پس از دریافت کد‌های ارسال شده از سمت کاربر بایست با آنها چکار کنیم، چون همانطور که قبلا گفتیم مسیر site.git تنها به منظور مدیریت ایجاد شده است. با استفاده از قلاب `post-recieve` میخواهیم کدهای دریافت شده را به مسیر اصلی آنها یعنی domain ارسال کنیم، پس مراحل زیر را انجام می‌دهیم.

``` cd hooks cat > post-receive #!/bin/sh git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f

press ctrl-d to save

chmod +x post-receive

<p>کار در سرور تمام است پس دستور بدرود با سرور را اجرا &nbsp;می کنیم. `exit`</p>
<h2>درون رایانه خود</h2>
<p>حال باید ریپوزیتوری‌ای درون رایانه خود ایجاد کنیم و `remote`آن را برابر مسیر سرور خود قرار دهیم و کدهای خود را منتشر کنیم.</p>

cd /my/workspace
mkdir project && cd project
git init

git remote add live ssh://user@mydomain.com/var/repo/site.git

git add .
git commit -m "My project is ready"

git push live master