آرشیو دستورات گیت – git

در این مطلب قصد دارم به مرور دستورات گیت  و … را آرشیو کنم تا در مواقع ضروری از آن استفاده کنم 🙂

گیت چیست ؟!

گیت یک ورژن کنترل است!

گیت (به انگلیسی: Git) یک نرم‌افزار کنترل نسخه و از مدل نرم‌افزارهای آزاد و متن‌باز برای بازنگری کد منبع توزیع شده و مدیریت منبع کد است که برای دنبال کردن تغییر فایلهای کامپیوتری و دنبال کردن کردن کارهای انجام شده روی آنها توسط افراد مختلف است. هدف اولیه این نرم‌افزار برای استفاده در پروژه‌های نرم‌افزاری بوده است ولی می‌توان از آن تنها برای دنبال کردن تغییر فایل‌ها هم استفاده کرد. [ ویکی پدیا ]

نصب و فعال سازی گیت :

برای نصب و دانلود گیت به وب سایت git-scm.com مراجعه کنید و مراحل نصبش را طی کنید و برای نصب گیت هاب هم در صورتیکه وارد وبسایت گیت هاب شوید می توانید نرم افزار مربوط به گیت هاب را دانلود کنید و به راحتی ریپازیتوری هایی که ایجاد میکنید را مدیریت کنید.

با توجه به اینکه برای پروژه ها بیشتر از گیت لب استفاده میکنم بیشتر در این رابطه صحبت میکنم هرچند دستورات و کامندهای گیت هاب هم شبیه به گیت لب است و تفاوت زیادی ندارد.

ایجاد SSH key برای گیت لب

برای دسترسی به پروژه ها باید یک کلید SSH در پروفایل خود ایجاد کنید که مدیریت و بررسی دسترسی شما به پروژه برای استفاده از گیت است، مطابق تصویر زیر وقتی وارد پروفایل گیت لب خود می شوید لینک Generate برای ایجاد کلید اختصاصی گیت لب برای پروفایل شما نمایش داده می شود که با کلیک روی آن و طی مراحل آن به راحتی کلید را ایجاد میکنید و در کادر مربوطه در پروفایل خود قرار می دهید.

profile settings ssh keys gitlab

گیت لب ( GitLab )

دستورات گیت به صورت زیر هستند :

git init [project name]

ایجاد یک ریپازیتوری جدید بر روی سیستم خود

git clone MY_URL

دانلود از یک ریپازیتوری موجود (url) بر روی سیستم خود

git status

لیست تغییرات و یا فایل های جدیدی که هنوز commit نشدند.

git add .

افزودن همه فایلهای جدید به stage و آماده بودن برای commit

git add [file name]

افزودن فایل موردنظر به stage و آماده برای commit کردن

git commit -m "Description "

commit کردن همه فایلهای موجود در stage

git commit am "Commit Description "

به طور همزمان، هم فایل ها را add میکنیم و هم commit  میکنیم و توضیحی برای commit قرار می دهیم.

git commit -a automatically stage all tracked, modified files before the commit If you think the git add stage of the workflow is too cumbersome, Git allows you to skip that part with the -a option. This basically tells Git to run git add on any file that is “tracked” – that is, any file that was in your last commit and has been modified. This allows you to do a more Subversion style workflow if you want, simply editing files and then running git commit -a when you want to snapshot everything that has been changed.

git push 

آپلود و ارسال فایلهای جدید به سرور زیر نظر branchی که در آن هستیم.

git push origin master

آپلود و ارسال فایلهای جدید به سرور زیر نظر branch اصلی master که معمولا اینکار انجام نمی شود و ترجیحا روی branch دیگری push میکنیم و سپس merge میکنیم.

git pull 

دریافت آخرین تغییرات از سرور و merge.

git branch

مشخص شدن این موضوع که در کدام branch هستیم و کدها را در کدام branch تغییر و یا دریافت میکنیم.

git fetch

و یا 

git fetch --all

دریافت آخرین تغییرات از origin branch. ( no merge )

( در صورتیکه در Branchی هستیم و میخواهیم تغییر branch دهیم، اگر branch را جدیدا ایجاد کرده باشیم باید کد فوق را وارد کنیم تا branch ها و تغییرات شناسایی شوند. )

git branch --all

و یا

git branch

نمایش لیست همه branch

git checkout Develope

تغییر branch مثلا به شاخه Develope

git branch New_Branch 

ایجاد Brnach جدید با نام New_Branch.

git branch -av 

نمایش لیست تمام Branchها، Local and Remote

git branch -d My_Branch 

حذف My_Branch از لیست Branchها.

git checkout Branch_A
git merge Branch_B 

Merge کردن Branch_B داخل Branch_A.

git diff 

نمایش تغییرات فایلهایی که هنوز وارد stage نشدند.

git diff --cached 

نمایش تغییرات فایلهایی که وارد stage شدند.

git diff HEAD 

نمایش تمام تغییرات فایلهایی که وارد stage شدند و فایل هایی که هنوز وارد stage نشدند (Unstage).

git diff commit1 commit2 

تفاوت تغییرات بین دو commit را نمایش میدهد.

git blame [File Name] 

لیست تمام تغییرات فایل موردنظر را همراه با تاریخ و نام دولوپری که تغییرات را ایجاد کرده است نمایش می دهد.

git log

نمایش لیست تمام تغییرات فایل ها.

git log -p [file/directory[

نمایش تاریخچه لیست تغییرات فایل file/directory با نمایش لیست تغییرات آنها (diff) در جریان کامیت ها.

git reset [file[

unstage  کردن فایل مورد نظر و اعمال تغییرات جدید.

git reset --hard

بازگردانی ( Revert ) تمام تغییرات از آخرین commitی که انجام شده است.