1400-01-30 00:26 آموزش Git - github - gitlab
رضا اکبری استرآبادی

 
سلام .
با اجازه از اساتید و برنامه نویسان

قصد دارم در سلسله مطالبی توضیحی کوتاه بر آموزش git - github - gitlab
داشته باشم . که البته بیشتر سعی می کنم دستورات git را توضیح بدم و مختصری هم gitlab - github را توضیح میدم
البته به اندازه سوادم ...
1400-01-30 09:13 Git
رضا اکبری استرآبادی

 
Git چیست ؟

Git یک سیستم کنترل نسخه توزیع شده رایگان و متن باز است که برای مدیریت همه کارها از پروژه های کوچک تا بسیار بزرگ طراحی شده است. که با سرعت و کارایی زیادی دارد .
شما یک تایپ پایان نامه بگیر تا پروژه های بزرگ برنامه نویسی همه و همه را می تونید با Git کنترول کنید و همه تغییرات را داشته باشید و یا برای کار گروهی روی پروژه هاتون می تونید از اون استفاده کنید به طوری که به شما میگه چه کسی و در چه زمانی چه چیزی را تغییر داده است ۱؟ WOW وقتی متوجه نحوه کارش شدم و دیدم چقدر کار باهاش ساده هست یک دل نه صد دل عاشقش شدم !!! ... (فقط همسر محترم متوجه نشه .... ) من واقعا ازش راضیم خداهم ازش راضی باشه

خوب بریم سر اصل کار اول از همه این سایت محترم git و حالا برای دانلود اون برای نسخه های Windows یا macOS و Linux/Unix می تونید برید به این آدرس برید و آخرین نسخه را دانلود کنید .

وقتی اون را نصب می کنید دو نوع دسترسی به git در اختیار شما میگذارد یکی به صورتی UI و گرافیکی و یکی به صورت Command ی که من با بخش commandی اون کار دارم . و من باهاش راحت تر م.
پس بعد از نصب دو کزینه داریم :
1- Git GUI Here بخش گرافیکی
2- Git Bash Here بخش Command ی

فرض کنیم یک فایل به نام index.html در فلدر A قراردارد . حال به داخل فلدر A رفته و کلیک راست می کنیم و گزینه git bash here را می زنیم .



دستورات با نوشتون git جلوی علامت $ شروع میشود .

برای اینکه git را در این فلدر پیکر بندی کنیم
git init $



در کل ما سه قسمت کاری تو git داریم :
Working |---(add)--->> Stage |---(commit)--->> Repository
working : قسمتی هست که محل کار ما می باشد یا فایل ورد یا محل کد نویسی هست ویا هر ادیتوری دیگه ای ...
stage : تغییرات اعمال شده روی فایل را نگه می دارد .
repository : فایل تغییر کرده و نهایی در اون نگه داری میشه

لینک اشتراک گذاری این پست : Git چیست ؟
1400-01-30 11:46 git - status
رضا اکبری استرآبادی

 
برای پیگیری اینکه در این فلدر چه اتفاقاتی افتاده و وضعیت ما در working گزارش دهد : git status $



خوب عکس چی میگه : میگه یک فایل به نام index.html در این فلدر هست که من دونبالش نمی کنم و در واقع گیت مورد بررسی قرارش نداده و میگه که اکر می خواهید دنبال یا موردبررسی قرار بگیره بیا add کن . یعنی اطلاعات را از working اتقال بده به stage . چشم .



دیدید ... بعد از add سریع status گرفتم . حالا ببینم چی کار کردم ...
دقت کنید وقتی که فایل در محیط working هست قرمز رنگ می نویسه و وقتی رفت تو قسمت stage سبز رنگ شد ... و گفته یک فایل با نام index.html اضافه کردی و من از این به بعد پیگیریش می کنم ولی حواست باشه که هنوز commit نکرده ای . !
آهان داشت یادم میرفت ترکیب + و Ctrl باعث بزرگ شدن فونت و نوشته درون command git میشه .

لیست اشتراک گذاری این پست : git - status
1400-01-31 00:56 Git - commit - error
رضا اکبری استرآبادی

 
سلام دوباره ...
به عکس پست قبل دقت کنید میگه شما هنوز این فایل را commit نکرده اید . وبرای بردن به مرحله Repository باید کامیت بشه یعنی اطلاعات و تغییرات نهایی اعمال بشه که دستورش به این شکل هست :

" git commit -m " add index file $


m- برای کامنت گذاشتن هست که توصیه اکید میشه حتما کامنتی با معنا بگذارید تا بعدا برای ارجاعات بعدی بدونید چکار کرده اید .
خوب اگر بار اول هست که از git استفاده می کنید به خطایی بر می خورید که به شما میگه اول خودت را به من معرفی کن تا من بدونم تغییرات را به نام کی باید ثبت کنم . که شما باید نام و ایمیل خود را معرفی کنید . و برای این کار از دو دستور زیر استفاده می کنیم :


"git config --global user.name "afshin $
"git config --global user.email "ae_afshin@gmail.com $



ببخشید نتونستم این قسمت را عکس بگیرم چون قبلا این کاروکرده بودم. حال

" git commit -m " add index file $

این دستور جواب میده .
خوب برای اینکه بدونیم چکار کردیم log میگیریم :

git log $





جالب بود نه !.. میگه کی با چه ایمیلی و در چه تاریخی چه کارکرده ، چه کار کرده همان پیغام دلخواهی هست که ما با سویچ m- اضافه کردیم .

توجه :

یه چی این آخر بگم اونم اینه که اگر git bash here تو لیست کلیک راستتون نیامد می تونید هر جایی اون را run کنید و بعد با دستور cd: d $ به درایو d برید وبا cd a $ به فلدر مربوطه A برید .

لینک اشتراک گذاری این پست : git - commit - error
1400-01-31 09:27 git -commit - log
رضا اکبری استرآبادی

 
حالا اگر git status $ بزنیم به ما میگه شاخه کاری ما تمیز هست . درواقع چیزی برای اعمال تغییرات جدید نداریم و آخرین تغییرات هم نهایی شده .
حال فایل index.html را باز می کنیم و یک تگ h2 به اون اضافه می کنیم . وذخیره می کنیم . خوب حالا تغییرات جدید به داخل محل کاری repository انتقال می دهیم . با دستور خط اول زیر و
با دستور status مشخص میشه که شاخه کاری شما تمیز هست یعنی چیزی برای commit نمونده .و با دستور log به ما میگه کی چی را چه وقتی تغییر داده است .


"git commit -m "add h2 tag $
git status $
git log $





حال یه نکته در رابطه با log بگم اینکه یه id به هر تغییری که روی فایل انجام میدهید اختصاص میده که در لاگ به رنگ زرد هست که یونیک می باشد و ما اغلب با 7 کاراکتر اخرش کارداریم .
گاهی احتیاج نداریم که تمام توضیحات لاک را ببینیم لذا برای اینکه خلاصه آنها را داشته باشیم از دستور زیر استفاده می کنیم .

git log --oneline $



توجه :
با دستور clear جلوی $ میتوانید صفحه محیط کاری git را تمیز کنید .

لینک استراک گذاری این پست : git - commit - log
1400-01-31 14:12 show - diff - git (http://simorghx.ir/Forum/Home/Topic/10356#post21022)
رضا اکبری استرآبادی

 
خوب حالا بریم سر نمایش تغییرات بینیم چطور می تونیم بفهمیم که در هر مرحله چکار کردیم و چی را تغیی داده ایم
اول یه git log --oneline می گیریم تا id های هر مرحله نشان داده بشه و بعد برای اینکه تفاوت working با repository را ببینیم از diff استفاده می کنیم

(git diff id(7char $




حالا اگر نگاه کنید می بینید که تفاوت دو تا commit را نشان میدهد . و میگه کدام خط اضافه شده یا حذف شده و در واقع تفاوت های اون cimmet را با commit بعدیش نشان میدهد .

یه دستور دیگه هم داریم به نام show که تفاوتش با diff اینه که تمام تغییرات از آخرین commit تا اون id log که بهش میدیم را نشان میدهد .

( git show idlog(7char $
مثلا
git show 84ad9er2 $


لینک اشتراک گذاری این پست : git - diff - show
1400-02-01 10:47 git -am log -n
رضا اکبری استرآبادی

 
یه نکته یادم رفت نگاه کنید هر وقت تغییری داه میشه چون تو working هست اول باید add کنید تا بیاد در stage و بعد باید commit کنید تا تغییرات به repository برسه و تایید نهایی بشه
خوب یه سویچ داریم که این دو کار را یک دفعه انجام میده و اون am- هست .
من در عکس زیر تغییراتی را در فایل index.html خود دادم و بابت هر خط تغییر یه commit هم کردم .

git commit -am "add tag h1 " $



,نکته بعدی سویچی برای log هست که به شما میگه چه تعداد از لاگ ها را نشان بده

git log --onelog -2 $




این دو نکته یادم رفته بود گفتم بگم تا یادم نرفته ....

لینک اشتراک گذاری این پست : git -am log -n
1400-02-01 11:35 git - reset -hard
رضا اکبری استرآبادی

 
خوب ما دستور diff را گفتیم . حالا آمدیم تغییرات را دیدیم و متوجه شدیم که یه جای کار اشتباه کردیم و میخواهیم به عقب برگردیم .
حال یه فایل به نام index2.html در فلدر A می سازیم . و وقتی status میگیریم میگه git این فایل را دنبال نمی کند . و خوب چون بار اول هست که git می خواهد اون را دنبال مند می بایست بار اول با دستور add اضافه بشه که یا از دستور . git add $ استفاده می کنیم که تمام فایل ها را add می کند و یا از دستور git add index2.html $ استفاده می کنیم . که فقط همین فایل را اضافه می کند



حال می خواهیم به عقب برگردیم .
توجه : چون برگشت به عقب باعث از بین رفتن لاگ ها میشه اول یه git log --oneline $ بگیرید و تمام لاگها تا اون لحظه را کپی و در یه فایل notpad ذخیره کنید و برای خود داشته باشید . و بعد از دستور reset --hard استفاده کنید . البته چون میشه با این دستور جلو ه رفت ولذا احتیاج به id لاگ ها داریم .



خوب دقت کنید ما 3-4 مرحله قبل برگشتیم .!! حتی فایل index2.html که درست کرده بودیم هم حذف شد و تغییرات فایل index.html هم به زمانی که تگ a را اضافه کردیم بر گشت .



git reset --hard id(7char) $ این هم دستور برگشت به عقب .



حال دوباره به جلو حرکت می کنیم و برمی گردیم سر نقطه قبلی یعنی زمانی که فایل index2 را ساختیم



لینک اشتراک گذاری این پست : git -reset -hard
1400-02-01 12:21 git - Branch
رضا اکبری استرآبادی

 
خوب بریم سر branch ها : برنچ یعنی شاخه
خوب برای چی خوبه : مثلا برای تیمی کار کردن روی پروژه یکی داره رو گرافیک پروژه کار می کنه و یکی داره کد های کپچا رو می نویسه و یکی هم داره کد های دیتابیس را می نویسد .و بعد از اتمام کار هر سه باید پروژه را یکی کنیم که همه اخرین تغییرات را داشته باشن دیگه و یه راه اینه که هرکسی یک شاخه از شاخه اصلی بگیره و کار خودش را بکنه و در آخر همه شاخه ها را merge کنیم با شاخه اصلی که همه تغییرات برای همه اعمال بشه .
همیشه branch master برنچ اصلی هست .

git branch $ لیست تمام branch ها را میدهد .البته غیر از branch های آنلاین

git branch -a $ لیست تمام branch ها را میدهد . حتی برنچ های انلاین موجود در github , gitlab

git branch Namebranch $ یک branch جدید می سازد .

git checkout Namebranch $ حرکت بین برنچ ها



باتوجه به عکس بالا ما الان تو برنچ afshin هستیم . حال می آیم فایل index2.html را تغییر میدهیم و یک تگ P به اون اضافه می کنیم . git add $ و بعد commit می کنیم .




حال می خواهیم تفاوت های بین دو برنچ را ببینیم :
git diff branchname1 .. branchname2 $
مثلا
git diff afshin.. master $




لینک اشتراک گذاری این پست : git -branch
1400-02-01 14:07 git - branch - deleted - merge
رضا اکبری استرآبادی

 
خوب حالا بگیم چطور یک برنچ را حذف می کنیم

git branch -d branchname $
مثلا :
git branch test $




توجه :
وقتی تو برنچی هستیم نمی توانیم برنچ جاری را حذف کنیم و باید به برنچ دیگری بریم و بعد اون برنچ را حذف کنیم .


خوب بریم سر merge کردن - بعد از تغییرات در هر شاخه چون می خواهیم تغییرات نهایی را به اشتراگ بزاریم و پروژه را تکمیل کنیم می بایست شاخه خودمان را با شاخه اصلی merge کنیم لذا به شاخه master میریم و
git merege afshin $
یعنی تمام تغییرات شاخه afshin به شاخه اصلی و master اعمال می کنیم .

لینک اشتراک گذاری این پست : git-branch-deleted-merge
1400-02-18 11:53 gitignore - git
رضا اکبری استرآبادی

 
سلام . وقت بخیر ...
دیشب موقع push کردن در gitlab به یه مشکلی برخوردم درواقع مشکل از commit بود . هنگام commit یک فلدر به خطا warning : LF will be replaced by CRLF یا
warning: The file will have its original line endings in your working directory بر می خوردم و نمی تونستم commit کنم وکلی جستجو کردم و به دستوراتی مثل git config core.autocrlf input یا git config core.autocrlf true
برخوردم که می بایست مشکل را برطرف می کرد ولی خوب نتونستم !!! ... لذا مجبور شدم که از خیر اون فایل هایی که باعث خطا میشد بگذرم .
حال می خواهم بگم چطور به گیت بگیم از خیر دونبال کردن یه فایل یا یکسری فایل یا یه فلدر بگذر ... اونم با ایجاد فایل gitignore .

حال با دستور touch .gitignore $ یک فایل با پسوند یا فرمت gitignore بدون نام درست میشه که می بایست با notepad باز کنیم و در هر سطر آن نام فایل یا فیلها یا فلدری که نمی خواهیم git دونبالش که را ذکر می کنیم .

txt.* یعنی تمام فیلهایی که فرمت txt هستن را دونبال نکن .
/myfolder یعنی هرچی تواین فلدر هست را دونبال نکن .
work.txt! یعنی این فایل را دونبال بکن .
myfolder /test.txt یعنی فایل test.txt درون فلدر myfolder را دونبال نکن .





توجه : فایل با فرمت gitignore نام ندارد و با notepad باز میشود و در هر خط یک نام را می نویسیم .

توجه : اگر مثلا پروزه دات نتی net. دارید خوب فایهای زیادی هست که مثلا نیاز به دونبال کردن ندارد . خوب لیست کردن آنها زمان بر می باشد و تازه شاید نتونیم همه را درست ذکر کنیم .
لذا شما با مراجعه به سایت gitignore.io اون فایل را ایجاد می کنیم و بعد به فایل gitignore خودمان اضافه می کنیم .

مثلا می نویسید visualstudio و Sass خودش در یک لیست می آورد و شما اون را انتخاب می کنید و در نهایت کلید Create را می زنیم و فایل ساخته میشه .

لینک اشتراک گذاری این پست : gitignore - git -ignor
1400-02-18 14:11 gitlab - github - github desktop
رضا اکبری استرآبادی

 
github
gitlab
github desktop

gitlab و github دوسایت هستن که برای پروژه های شما فضایی اختصاصی ایجاد می کنند که شما بتونید پروژه هاتون را برای توسعه به اشتراک بگذارید . و بیشتر برای کارهای گروهی استفاده میشود و حتی مثلا شما پروژه تان را در خانه تغییراتی را اعمال کرده اید و می خواهید در جایی دیگر هم اون پروژه را کار کنید خوب می تونید از gitlab یا github استفاده کنید .

github اگر اشتباه نکنم برای ماکروسافت هست و عموما پولی هست یعنی شما برای نگه داری یا اشتراک گذاری به صورت خصوصی باید اکانت خود را براساس تعرفه های موجود شارژ کنید . بعدا یه راه دم دستی بهتون میگم که میشه برای اشتراک گذاری تغییرات به صورت خصوصی از github استفاده کرد .
gitlab هم مثل github هست بافرق اینکه یکسری تفاوت های کوچک داره مثلا تو gitlab به پروژه جدید new project میگن تو github بهش new repository میگن .و ....

البته تااین لحضه 5/8/2021 سایت gitlab فیلتر می باشد و می بایست با فیلتر شکن وارد شوید . و github فیلتر نیست .
gitlab پروژه ها چه به صورت public چه به صورت private رایگان هست . ولی در github پروژه های public رایگان و پروژه های private پولی می باشد .

سایت gitlab میباشد که فیلتر می باشد .




من در اکانت gitlab یه new project به نام test ایجاد کردم .




حال در عکس زیر دقیقا به شما میگه چه دستوراتی را باید در git بنوسید که پروژه تان در gitlab قرار بگیرد .



حال میریم سر github و در عکس زیر محیط ساخت repository جدید را می بینیم .




و بقیه موارد مانند gitlab می باشد .
یادتونه گفتم github هم یه حالت خصوصی داره شما می تونید فقط تغییرات را در حالت خصوصی در github ذخیره کنید اون هم با github-desktop .... شما می تونید اون را نصب کرده و ازش استفاده کنید .




درواقع وقتی ما پروژه ای را روی سرور github یا gitlab بارگذاری می کنیم بدا ن عمل Push میگن و وقتی از سرور می گیریم pull میگن .
git سویچ های زیادی داره که ما مختصری از ان را که شاید کاربرد بیشتری دارن را عرض کردیم .
اینها کلیاتی بود که من حقیر در مورد git بلد بودم . حال اگر به مواردی دیگر برخوردم باز در پستی جداگانه عرض می کنم .

لینک اشتراک گذاری این پست : gitlab - github -github deskop
1400-03-16 13:40 PDF Git Book - کتاب رایگان گیت - پی دی اف git
رضا اکبری استرآبادی

 
سلام .
گفتم یک کتاب رایگان در مورد گیت هم معرفی کنم اونم از سایت خودش خیلی کامل و خوبه امید وارم بتونید ازش استفاده کنید .
این کتاب بصورت کاغذی برای فروش در آمازون حدود 38 دلار هست ولی آخرین ادیتش برای سال 2014 هست که در سایت خودش PDF Git Book به صورت رایگان برای دانلود گذاشته.
موفق و سلامت باشید .
1400-08-24 09:12 GUI Git - رابط کاربری گیت - 10 Best Git GUI Clients to Choose in 2021
رضا اکبری استرآبادی

 
با سلام .
بعضی از دوستان می پرسند آیا رابط کاربری برای Git وجود دارد ؟ بله . همان طور که در پست های اولیه گفتم هست و در صورتی که کار با command خیلی براتون سخت هست می تونید از این رابط های گرافیکی استفاده کنید .
با مراجعه به این آدرس 10 رابط کابری برتر سال 2021 را معرفی کرده و می تونید از آنها استفاده کنید .
1401-06-29 19:30 Git workflow
رضا اکبری استرآبادی

 

Git workflow