unkn19wn
11/1/2018 - 5:12 PM

Gitlab

Gitlab Persian CheatShit

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

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.

نکته : وقتی به صورت تیم روی پروژه ای کار می‌کنید مثلا شما روی branchی به نام example هستید و تغییراتی اخیرا روی پروژه روی برنچ تست پروژه به نام برنچ dev انجام شده، شما بدون اینکه نیاز باشه که مرج رکوستی ارسال کنید میتوانید آخرین تغییرات را از برنچ dev دریافت کنید به صورت زیر:

git pull origin dev
——–

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ی که انجام شده است.

 

نکته ۱ :  درصورتیکه بخواهیم پروژه را از  گیت‌لب clone کنیم و روی سیستم خود راه اندازی نمائیم همانطور که می‌دانیم دستور زیر را وارد میکنیم :

git clone git@gitlab.com:user/project-name.git
در این حالت پروژه با فولدری به نام project-name که روی گیت قبلا ساختیم بر روی سیستم ما ایجاد می‌شود، وقتی ما مثلا می‌‌خواهیم پروژه را روی سرور pull کنیم و قبلش باید پروژه را clone کنیم به احتمال زیاد نمی‌خواهیم با اسمی که روی گیت وجود دارد روی سرور باشد و فقط میخواهیم محتویات آن را داخل فولدری با نامی که ما میسازیم مثلا example ایجاد نماییم. برای اینکار کد زیر را به جای کد فوق وارد می‌کنیم:

git clone [repository] [local path]

و یا 

git clone git@gitlab.com:user/project-name.git example
همچنین میتوانیم وارد فولدر مورد نظر شویم و دستور زیر را وارد کنیم :

git clone git@gitlab.com:user/project-name.git . 
علامت dot آخر دستور بسیار مهم است اگر آن را ننویسیم با اسم ریپازیتوری پروژه clone میشود.