ویدیو: دوره سریع آموزشی گیت و گیت‌‌هاب

خیلی وقت‌ها یک مشکلی که بوجود میاد اینه که ما یه کاری رو می‌خوایم انجام بدیم و وقتی برای یادگیری‌ش مراجعه می‌کنیم همه دوره‌ها و کتاب‌ها و مقالات و… خیلی عمیق در حال آموزشش هستند. مثلا من به عنوان یه توسعه دهنده بک-اند فعلا لزومی نمی‌بینم که برای پروژه آلفا خودم بوت‌استرپ رو مثلا خیلی عمیق یاد بگیرم. کل هدفم اینه که بتونم در حدی اون رو یاد بگیرم که یه پروژه‌ای راه بندازم و بتونم کارهام رو نشون بدم. 

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

در هر حال من یه دوره آموزشی یک ساعته رو به صورت رایگان روی وبسایت فرانش آپلود کردم و هدفم هم دقیقا سناریوهایی بود که در بالا گفتم.

برای مشاهده دوره آموزشی می‌تونید وارد لینک زیر بشید و قبلش هم ویدیوی معرفی رو نگاه بکنید. 

آموزش سریع گیت و گیت‌هاب

ویدیو معرفی

آموزش سریع و ساده گیت – نکات پیشرفته‌

در آخرین قسمت از سری آموزش‌های سریع و ساده گیت قصد دارم که چند تا ویژگی و نکته پیشرفته‌تر برای مدیریت مخازن گیت رو با همدیگه مرور کنیم و روی مخزنی که تا اینجای کار مدیریت کردیم، اعمال بکنیم. خب با بررسی تفاوت‌ بین دو کامیت کارمون رو شروع می‌کنیم.

۱- بررسی تفاوت‌های بین دو کامیت

هر کامیتی که شما توی مخزن‌تون می‌کنید یه آی‌دی منحصر به فرد داره که به ما قابلیت دسترسی رو میده. اگه می‌خواید لیست تموم کامیت‌هایی که تا به حال کردید رو ببینید کافیه دستور git log رو وارد بکنید.

commit 2e3e8df76377cb0a8e162892215de93a30f74b03 (HEAD -> master)
Author: Arastoo <hi@arastoo.net>
Date:   Tue Nov 27 01:09:48 2018 +0330

    Second Commit

commit 6522647a9fa63906d2216d505b8c9578de30ba97
Author: Arastoo <hi@arastoo.net>
Date:   Tue Nov 27 01:08:08 2018 +0330

    First Commit

همونطور که می‌بینید هر کدوم از آي‌دی ها خیلی طولانی‌اند ولی خب برای دسترسی پیدا کردن بهشون معمولا چند تا از کاراکترهای اولش رو وارد بکنید کافیه.

برای هر لیست از کامیت‌ها می‌تونید اطلاعاتی مثل آی‌دی کامیت، نام کسی که کامیت کرده، تاریخ کامیت و پیغام کامیت رو مشاهده بکنید.

حالا برای اینکه جزئیات کاملتری از هر کامیت رو ببینیم کافیه از دستور git show همراه با آی‌دی کامیت مورد نظر استفاده بکنید:

git commit 652264

خروجی:

commit 6522647a9fa63906d2216d505b8c9578de30ba97 (HEAD)
Author: Arastoo <hi@arastoo.net>
Date:   Tue Nov 27 01:31:24 2018 +0330

    Second Commit

diff --git a/index.html b/index.html
new file mode 100644
index 0000000..557db03
--- /dev/null
+++ b/index.html
@@ -0,0 +1 @@
+Hello World

یه دستور کاربردی دیگه هم که می‌تونیم ازش استفاده بکنیم دستور diff هستش که میاد تغییرات و تفاوت‌های بین دو کامیت رو بررسی می‌کنه. برای اینکار کافیه آی‌دی دو کامیت رو داشته باشیم:

git diff 6522..9a83

شاید خروجی دستور براتون پیچیده باشه، بجای اون می‌تونید از ابزاری مثال git difftool استفاده بکنید.

۲- بازگشت به نسخه قبلی

خب یکی از هدف‌هایی که ما از استفاده گیت داریم اینه که به ما کنترل خوبی رو روی مدیریت نسخه‌های مختلف یه پروژه بده. خب برای اینکار ما از دستور git checkout استفاده می‌کنیم. قبلا از این دستور برای کنترل برنچ‌ها هم استفاده کردیم.

حالا تصور کنید که من می‌خوام فایل index.html رو به اولین کامیتی برگردونم که کردم. یعنی همون کامیت inital … برای اینکار کافیه آی‌دی کامیت و آدرس index.html رو داشته باشم:

git checkout 6522 index.html

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

حالا موضوع مهم اینه که اگه من git log رو وارد کنم هنوز هم با کامیت‌های جدیدتر برخورد می‌کنم و می‌تونم به اونا برگردم. گیت فوق العاده‌س 🙂

۳. تغییر در یک کامیت

اگه توی آخرین کامیتی که کردید یه اشتباهی توی نوشتن پیامش کرده باشید چیکار می‌کنید؟ خب شاید بگید برمی‌گردم عقب یه کامیت جدید میزنم و… . خب این کار منطقی نیست. برای یه تغییر سریع روی کامیت ما دستور git commit –amend رو در اختیار داریم که به ما اجازه می‌ده تا پیغام آخرین کامیت رو اصلاح کنیم.

اما اگه مشکل کمی پیچیده‌تر باشه و بخوایم به یه کامیت منحصر به فرد دسترسی داشته باشیم چی؟

خب برای اینکار کافیه دستور revert رو همراه با آی‌دی کامیت وارد کنیم:

git revert 6522
# or
git revert HEAD

HEAD به آخرین کامیتی که شده اشاره می‌کنه.

۴. حل کردن Merge conflicts

تصور کنید که یک برنچ جدید ایجاد کردید و فایل قرار گرفته در برنچ قبلی رو در این برنچ تغییر دادید. حالا به برنچ master برمی‌گردید و عملیات مرج رو انجام می‌دید. اما با یه مشکل بر خورد می‌کنید:

Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.

گیت برای عملیات مرج کردن به صورت خودکار وارد کار میشه اما یه وقتایی هست که گیت نمی‌تونه این روند خودکار رو انجام بده. به همین خاطر این خطا رو برگشت میده.

حالا برای حل این مشکل می‌تونید به صورت دستی وارد عمل بشید. چطوری؟ خب فایل index.html رو باز کنید: می‌بینید که کلی تغییرات توش اعمال شده:

<<<<<<< HEAD
Hello World
=======
Hello Again
>>>>>>> new

در واقع گفته که شما در آخرین کامیت که HEAD آدرسشه نوشتید: Hello World اما در برنچ جدید که اسمش New هستش نوشتید Hello Again … من کدومشون رو نگه داری کنم؟

اینجاست که نیازه به صورت دستی وارد کار بشید و کدهای مربوط به برنچی که می‌خواید رو بزارید و مورد دیگر رو حذف کنید. در آخر هم git add index.html و git commit.

۵- .gitignore

بعضی وقت‌ها در یک پروژه قصد این رو ندارید که بعضی از فایل ها و دایرکتوری‌ها رو کامیت بکنید و یا اونا رو به استیج ببرید. خب شاید بگید که توی git add اسمی ازش نیاریم ولی خب ما وقتی پروژه بزرگی داشته باشیم بیشتر وقتا از git add -A استفاده می‌کنیم. اما اگه بخوایم همین دستور هم یه سری فایل ها رو شامل نشه از یه فایلی به اسم .gitignore استفاده می‌کنیم.

کافیه که یه فایل با نام .gitigonre درست کنید و تموم مواردی که نمی‌خواید گیت اونا رو استیج بکنه درش قرار بدید. مثلا:

*.log
build/
node_modules/
.idea/
my_notes.txt

در این حالت فایل‌هایی با پسوند .log، تمام محتویات دایرکتوری‌های build, node_modules,.idea و فایل my_notes.txt در مخزن گیت شما قرار نمی‌گیرند.

در پایان

این بود از سه قسمت ساده و کاربردی از آموزش گیت و گیت‌هاب. امیدوارم کاربردی بوده باشه. البته بگم که این آموزش‌ها رو به عنوان یه Crash Course در نظر بگیرید اما برای پیشرفت کردن در این موضوع می‌تونید از لینک‌های زیر استفاده بکنید.

منبع این مجموعه مطالب: وبسایت https://tutorialzine.com

آموزش سریع و ساده گیت – برنچ‌ها

در قسمت قبلی با نکات پایه‌ای گیت همراهتون بودم. حالا می‌خوام توی این مطلب یه ذره مطالب پیشرفته‌تر و مهمتری رو به شما بگم. توی این قسمت از برنچ‌ها صحبت می‌کنیم.

۱- برنچ‌ – شاخه

در حالت عادی وقتی روی یه پروژه در گیت کار می‌کنیم، این پروژه در یک مسیر خطی توسعه داده میشه. شما یه سری ویژگی رو اضافه می‌کنید، کامیت می‌کنید و… . این روال به صورت کلی در یک خط اتفاق می‌افته. حالا تصور کنید که ما یه تیم برنامه‌نویسی داریم و می‌خوایم روی قسمت‌های مختلف یه پروژه کار بکنیم. مثلا تصور بکنید که ما یه وبسایت فروشگاهی داریم. این وبسایت از چند بخش تشکیل میشه. یه بخش فرانت-اند یه بخش بک-اند یه بخش بانک اطلاعاتی و… . حالا اگه توسعه دهندگان مختلفی بخوان همشون روی این پروژه کار بکنند درست نیست که در یک روال خطی قرار بگیرند. بجای اینکار میان یه شاخه یا یه انشعاب از پروژه اصلی میگیرند و اون رو توسعه میدن. مثلا برنامه نویس فرانت اند بخش فرانت اند رو به صورت جداگونه توسعه میده و در نهایت این بخش‌ها همشون برمی‌گردن سر همون پروژه اصلیه. تصویر زیر رو ببینید:

Branches

دلایل استفاده از برنچ:

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

۲- ایجاد یک برنچ جدید

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

git branch new_feature

حالا من یه برنچ جدید با نام new_feature ساختم. با استفاده از دستور branch به صورت خالی، می‌تونید لیستی از برنچ‌های موجود رو ببینید:

git branch

اون علامت ستاره قبل از هر کدومش باشه به این معناست که ما روی اون کار می‌کنیم. حالا بزارید از روی برنچ master بریم روی برنچ جدیدی که ساختیم. برای اینکار دستور checkout رو وارد می‌کنیم:

git checkout new_feature

حالا یه بار دیگه git branch رو وارد کنید که مطمئن بشید علامت ستاره روی گزینه new_feature قرار داره. 

اگه بود می‌تونیم فرایند توسعه رو ادامه بدیم. برای اینکه ببینیم دقیقا چه اتفاقاتی می افته، توی این برنچ جدید یه فایل می‌سازیم و اون رو کامیت می‌کنیم:

touch new_file.txt
git add new_file.txt
git commit -m "new file in new branch"

حالا جالبی قضیه می‌دونید کجاست؟ وقتی که برگردید سراغ برنچ master می بینید که فایل new_file.txt مخفی شده و نمی‌تونید ببینیدش. خب دلیل‌ش اینه که این فایل توی یه برنچ دیگه قرار داره نه برنچ مستر. 

۳. Merge کردن برنچ‌ها

خب حالا که من بخوام تمام برنچ‌های ساخته شده رو به برنچ اصلی یعنی برنچ master بیارم باید چیکار کنم؟ سوال خوبیه. تنها کافیه که فایل‌های مختلف برنچ‌های مختلف رو بریزید توی master برای اینکار از دستور merge استفاده می‌کنیم.

اولا که وارد برنچ مستر میشم:

git checkout master

بعد عملیات مرج کردن رو شروع می‌کنم:

git merge new_feature

خب حالا می‌تونید ببینید که فایل new_file.txt به برنچ مستر اضافه شد. حالا که کارمون با برنچ قبلی تموم شد می‌تونیم حذفش بکنیم.

 

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

آموزش سریع و ساده گیت – مقدمات و کار با گیت‌هاب

مهم نیست که اسم گیت به گوشتون خورده باشه یا نه، مهم اینه که برای خفن شدن به گیت نیاز دارید. هدف‌مون از این مطلب چند قسمتی آموزش گیته. می‌خوام خیلی سریع و ساده به شما بگم که گیت چیه و چطوری ازش استفاده کنیم. همچنین آپلود یه پروژه روی گیت‌هاب رو داریم که خودش موضوع مهم دیگه‌ایه!

تعریف

گیت یه مجموعه دستور و امکاناته که روند تغییرات یک یا چند فایل رو مشاهده می‌کنه و به ما این قابلیت رو میده تا بتونیم نسخه‌های مختلفی از برنامه‌ای که توسعه می‌دیم رو مدیریت کنیم. اینجوری ما می‌تونیم بین نسخه‌های مختلف یه برنامه بگردیم و اونا رو restore بکنیم. این پروسه به صورت خیلی مقدماتی و پایه‌ای بهش میگن سیستم کنترل نسخه یا Version Control System. گیت رو خالق لینوکس، لینوس توروالدز نوشته 🙂

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

هر پروژه‌‌ای که توی گیت قرار بگیره بهش میگن یه ریپازیتوری یا یه مخزن. مثلا اگه شما مشغول ساختن یه اپلیکیشن توی دایرکتوری app هستید، این دایرکتوری میشه اون مخزن شما. گیت این مخزن و تغییراتی که درش اتفاق می‌افته رو دنبال میکنه و همه اتفاقات اونجا رو پیگیری میکنه.

حالا این مخزن به صورت محلی روی کامپیوتر ما فقط وجود داره. اگه بخوایم به چند نفر دیگه بدیمش باید چیکار کنیم؟ خب اینم موضوع مهمیه. یه سری از پلتفرم‌هایی که گیت رو به صورت آنلاین ارائه میدن این امکان رو میدن تا بتونیم مخزن خودمون رو به اشتراک دیگران قرار بدیم. مثلا گیت‌هاب یکی از این سرویس‌هاست که توی همین مطلب بهتون یاد میدم چطوری این کار رو هم انجام بدید.

۱- نصب گیت

اولین کاری که باید بکنیم اینه که گیت رو روی کامپیوترمون نصب بکنیم:

  • اگه مثل من از اوبونتو استفاده می‌کنید که کافیه توی ترمینال بزنید sudo apt install git
  • اگه از مک او اس استفاده می‌کنید کافیه توی ترمینال بزنید brew install git
  • اگر هم توی ویندوز هستید که باید این برنامه‌ رو نصب بکنید.

نسخه‌های گرافیکی هم از گیت وجود داره که می‌تونید استفاده بکنید اما خب کار با محیط متنی خیلی لذت بخش تره.

۲- کانفیگ گیت

وقتی که اولین بار گیت رو نصب می‌کنید نیاز هستش که گیت رو براساس مشخصات خودتون کانفیگ بکنید. یعنی اینکه بگید کی هستید تا از این به بعد اتفاقاتی که می افته به اسم شما ذخیره بشه. برای اینکار دستورات زیر رو وارد کنید:

git config --global user.name "Arastoo"
git config --global user.email hi@arastoo.net

شما بجای Arastoo و hi@arastoo.net، از نام و ایمیل خودتون استفاده کنید. 

از این به بعد هر کاری رو که توی گیت انجام بدید با این نام و ایمیل ذخیره میشه. 

۳- ایجاد یک مخزن

همونطوری که قبلا اشاره کردم برای اینکه گیت بتونه اطلاعات مربوط به یه پروژه رو دنبال کنه از مفهوم مخزن استفاده میکنه. پس نیاز هست که یه مخزن درست کنیم. برای این کار ترمینال خودتون رو باز کنید و با دستور cd به دایرکتوری پروژه خودتون مراجعه بکنید. بعد از اون دستور زیر رو وارد کنید:

git init

بعد از اینکار پیغامی شبیه به زیر براتون ظاهر میشه:

Initialized empty Git repository in /home/me/test/.git/

حالا اگه یه دستوری مثل ls -a رو وارد کنید می‌بینید که یه دایرکتوری مخفی به اسم .git وجود داره که گیت اون رو براتون ساخته. از این به بعد تمام اطلاعات مربوط به پروژه‌تون مثل کامیت‌ها و… توی این دایرکتوری نگه داری میشه. در مورد این قضیه هم صحبت می‌کنیم.

توی اون دایرکتوری یه فایل simple.txt درست کنید. 

۴- بررسی وضعیت گیت

گیت یه دستور git status داره که وضعیت گیت رو بررسی می‌کنه. مثلا میگه چه چیزهایی تغییر کردند، چه چیزهای جدیدی اضافه شده، آیا همه چیز بروزرسانی شده یا نه و چیزهایی از این دست. حالا بیایید یه بار این دستور رو وارد کنیم بببینم چی به ما برمی‌گردونه:

git status

خروجی:

On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	simple.txt

nothing added to commit but untracked files present (use "git add" to track)

این خروجی داره به من میگه که روی برنچ مستر هستم (در موردش حرف میزنیم)

هنوز کامیتی ایجاد نشده (در مورد اینم حرف میزنیم)

مهم این خطه که نوشته untracked files: در واقع این خط داره میگه که یه سری فایل توی دایرکتوری test شما وجود داره که گیت دنبال‌شون نمیکنه، به تعبیری این فایل simple.txt جدیده و گیت هنوز نمیدونه که باهاش چیکار بکنه.

حالا سوالی که پیش میاد اینه که چطوری به گیت بگم که هواسش به این فایله باشه؟

۵- استیج کردن – به روی صحنه بردن

گیت یه مقوله به اسم «ناحیه استیج» داره. در واقع مثل یه اتاق خالی نگاهش بکنید که توش یه دوربین مداربسته وجود داره «اسم دوربین‌مون گیت هستش» حالا شما برای اینکه تمام رفتارهای یک آدم رو بفهمید و ببینید داره چیکار میکنه باید وارد اون اتاق‌ش بکنید. این آدم توی مثال‌مون فایل simple.txt هستش. با وارد کردنش به این چهارچوب، گیت دنبال‌ش میکنه و بیخیالش نمیشه و تمام جیک و پیکش رو براتون در میاره. 

برای وارد کردن فایل simple.txt به این محیط کافیه دستور git add رو همراه با اسم فایل وارد کنید، مثل:

git add simple.txt

حالا فایل به مرحله استیج رفت. اگه چند تا فایل داشته باشید می‌تونید بجای وارد کردن اسم همشون دستور git add -A رو وارد کنید. به همین سادگی.

حالا یه بار دیگه دستور git status رو وارد کنید:

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   simple.txt

این بار بجای untracked files داره میگه که یه فایل جدید به اسم simple.txt داره ردگیری میشه و آماده‌س که کامیت‌ش بکنیم.

۶- کامیت کردن

مثال دوربین مداربسته رو به یاد بیارید. شما یه آدم رو توی اون چهار دیواری که گفتیم اسمش استیج هستش قرار میدید. حالا می‌گید که مثلا ساعت ۶ یه ویدیو کلی از تمام فعالیت‌هاش تا الان رو بفرست به یه جای امن. کامیت کردن یه پروژه هم تقریبا همین حالت رو داره. شما پروژه‌تون رو تا نیمه راه آوردید حالا می‌خواید تا اینجای کار یه نسخه امن و درست از اون رو داشته باشید تا اگه بعدا دچار مشکلی شدیم بتونیم برگردیم سراغ اون نسخه درست. 

برای کامیت کردن نیاز هست که یه فایل یا چندین فایل رو توی استیج قرار داده باشید. همونطور که می‌دونید ما یه فایل simple.txt رو توی قسمت استیج قرار دادیم بنابراین حالا می‌تونیم اون رو کامیت بکنید. برای اینکار دستور git commit رو به صورت زیر استفاده می‌کنیم:

git commit -m "Initial Commit"

آرگومان -m به این معناست که همراه با کامیت یه پیغام رو هم بزار که ببینم کامیت من راجع به چیه. مثلا توی کد بالا پیغام رو گذاشتم: کامیت اولیه یا Initial Commit.

۷. گیت‌هاب

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

۷-۱: ثبت نام و ساخت مخزن در گیت‌هاب

اولین کاری که باید بکنید اینه که توی گیت‌هاب ثبت نام بکنید و بعدش یه مخزن درست کنید. برای اینکار کافیه وارد این آدرس بشید و فیلدهای مربوط به مخزن رو پر کنید و در نهایت Create repository رو بزنید. بعد از اینکار وارد آدرس مخزن‌تون بشید. مثلا مخزن من توی این آدرس هستش.

۷-۲: ارتباط با گیت‌هاب

حالا نیازه که آدرس .git مخزن‌تون رو بردارید و توی ترمینال براساس کد زیر به مخزن متصل بشید: 

git remote add origin https://github.com/arastoonet/sc.git

origin یک نام برای این ارتباط ریموت من با گیت هستش. می‌تونه هر چیز دیگه‌ای باشه اما اینو معمولا میزارند.

حالا که من یه ارتباط درست کردم و الان وقت این شده که گیت لوکال‌م رو بفرستم روی گیت‌هاب. برای اینکار از دستور push به صورت زیر استفاده می‌کنم.

git push origin master

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

اگه با مشکلی برخوردید می‌تونید از آرگومان -f یعنی force برای push کردن استفاده کنید که به صورت زیر این کار انجام شدنیه:

git push -f origin master

۷-۳: کلون کردن پروژه

برای دریافت محتویات داخل یک ریپازیتوری توی گیت‌هاب کافیه از دستور clone استفاده کنید:

git clone https://github.com/arastoonet/sc.git

حالا اگه من توی این مخزن گیت یه بروزرسانی ایجاد کردم. مثلا یه فایل جدیدی رو اضافه کردم، دیگه نمی‌خواد از اول بیایید کل پروژه رو کلون بکنید. می‌تونید با استفاده از دستور pull فایل‌های جدید آپدیت شده رو بیارید تو مخزن محلی‌تون:

git pull origin master

در مطلب بعدی از این سری دو قسمتی می‌خوام یه ذره راجع به نکات پیشرفته‌تر صحبت بکنم و چیزهای عجیب و غریب‌تری رو بگم 😅🤓😉

دانشگاه یا خودآموز ؟!

این ایده همیشه بوده که من به یه دانشگاه رفتنی نیاز دارم یا نه! خب فارغ از اینکه خیلی‌ها توی ایران مخصوصا به این خاطر میرن سراغ دانشگاه که والدین‌شون بهشون افتخار بکنند و بعضی وقتا از زیر کار در برند و… اما این بحث رو به صورت کلی‌تر و جهانی‌تری در نظر می‌گیرم. بحث من از دانشگاه، یه استانداره، منظورم از دانشگاه سراسری و آزاد و هاروارد نیست! یه تعریف کلی ازش رو در نظر می‌گیریم که شما می‌رید اونجا، یه سری درس هستش، یه سری استاد دارید که می‌رید سر کلاساشون، درس رو می‌خونید یه امتحانی میدید و همین! No More :))

مردی با یک کتاب و یک ایده!

حالا با این دید سوالی که پیش میاد اینه که واقعا نیاز دارم که به دانشگاه برم یا نه، خودم می‌تونم خیلی چیزهای بیشتر و بهتری از دانشگاه رو توی خلوت خودم یاد بگیرم. حالا که اینترنت هم هست این موضوع خیلی منطقی‌تره!

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

اما برنامه‌نویسی رو در نظر بگیرید. برنامه‌نویسی به یه کامپیوتر نیاز داره ولاغیر! شما توی دنیای مهندسی و برنامه‌نویسی کمتر براساس مدرک‌تون قضاوت میشید، مهمترین چیزی که از شما انتظار دارن توانایی در ایجاد و ساختنه. به همین خاطر برنامه‌نویسی جزو رشته‌هایی هستش که به خوبی با شرایط خودآموزی سازگاری داره و می‌تونه باهاش کنار بیاد.

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

نیاز به مشاور فاکتور سومیه که می‌خوام راجع بهش صحبت کنم. شما توی دانشگاه علاوه بر اینکه دوست های مختلفی دارید، مربی و مدرس زیادی هم دارید که هر کدوم این‌ها می‌تونند به شما در انتخاب مسیر و راهنمایی کمک بکنند. اما در شرایط خودآموز تنها خودتون هستید که به خودتون منابع معرفی میکنه. البته از حق نگذریم، هیچکس به اندازه اینترنت نمی‌تونه به آدم‌ها کمک بکنه! پس چندان نیازی به کسی نداریم تا حدی. اما اساتید می‌تونن افراد بسیار خوبی برای انگیزه دادن به شما هم باشند، توی دنیای خودآموزی شما کسی رو ندارید که بهتون انگیزه بده، حداقل شما توی دانشگاه از یه چیزی به اسم نمره و اینجور چیزها می‌ترسید اما توی دنیای خودآموزی وقتی صبح بیدار می‌شید تنها کسی که از رخت‌خواب باید بیدارتون بکنه و صبحونه به حلق‌تون بریزه خودتونید ولاغیر :))

سازگاری با آزادی فردی فاکتور چهارم! دانشگاه آزادی زمانی شما رو تحت شعاع قرار میده. شما باید از ۸ صبح مثلا تا ۲ بعد از ظهر رو به دانشگاه تخصیص بدید. خب این موضوع ممکنه برای شما خوشایند نباشه. برای مثال من کسی هستم که بیشتر دوست دارم فرایند یادگیری‌م از ساعت ۰۰ بامداد تا ۶ صبح باشه و بعدش کلا بخوابم. برای من دانشگاه محیط مناسبی نخواهد بود چون آزادی عملی‌م رو می‌گیره، از طرفی خودآموزی به شما آزادی کامل رو میده. هر موقع دوست داشته باشید یاد می‌گیرید، تمرین می‌کنید و… .

اضافی ۱: یه حرفی هست که بیشتر وقتا می‌زنم: افرادی که از دانشگاه فارغ التحصیل میشند به کارمندان افرادی تبدیل میشند که یه زمانی به صورت خودآموز یه کاری رو یاد گرفتند و الان صاحب یه شرکتند. (البته این قضیه همیشه درست نیست ولی خب معمولا دانشگاه شما رو محدود و متکی پرورش میده، این در حالیه که اگه توی دنیای خودآموزی موفق بشید خیلی با اعتماد به نفس و مستقل بار می‌آید.)

اضافی ۲: یه اشکالی که من معمولا از دانشگاه‌ها(مخصوصا در کشورهای توسعه نیافته) می‌گیرم اینه که دانشگاه‌ها برای بعضی از رشته‌های پویا و در حال تغییر واقعا مکان مناسبی نیستند. بعضی از رشته‌ها مدام در حال تغییرند و این در حالیه که سرفصل‌های آموزشی هر چند سال یک بار تغییر می‌کنند. 

 

نویسنده: ارسطو عباسی