گیتمقدماتی۱۰ دقیقه مطالعهGit 2.4x

فرمان‌های پایه گیت

ساختن نخستین مخزن و چرخهٔ روزمرهٔ گیت با init، status، add، commit، log و diff.

آنچه در این درس می‌آموزید

  • یک مخزن گیت بسازید و وضعیت فایل‌ها را بخوانید
  • تغییرات را با add آماده و با commit ثبت کنید
  • تاریخچهٔ پروژه و تفاوت‌های نسخه‌ها را با log و diff ببینید
نویسنده: تیم داکنامه · بازبینی: ۲۰۲۶-۱۰-۳۰
فهرست مطالب
پیش‌نیاز: آشنایی با گیت

در درس پیش با سه ناحیهٔ گیت آشنا شدید: پوشهٔ کاری، ناحیهٔ آماده‌سازی و مخزن. در این درس همان مسیر را با فرمان‌های واقعی طی می‌کنیم. این چند فرمان ۹۰ درصد کار روزانهٔ شما با گیت است؛ آن‌قدر که بعد از چند روز بدون فکر کردن تایپشان می‌کنید.

هر مثال این درس را می‌توانید در پوشه‌ای خالی روی سیستم خودتان تکرار کنید. اگر روی ویندوز هستید، Git Bash را باز کنید.

ساختن مخزن

به پوشهٔ پروژه بروید و مخزن را بسازید:

bash
mkdir todo-app
cd todo-app
git init

نمونهٔ خروجی:

text
Initialized empty Git repository in /home/sara/todo-app/.git/

دستور git init پوشهٔ پنهان .git را می‌سازد؛ همان‌جا که کل تاریخچهٔ پروژه از این به بعد ذخیره می‌شود. از این لحظه این پوشه یک مخزن گیت است. اگر پوشه را جابه‌جا یا کپی کنید، تاریخچه همراهش می‌رود.

دیدن وضعیت: git status

فرمان status پرکاربردترین فرمان گیت است؛ همیشه اجرایش کنید تا بدانید کجایید:

bash
git status

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

bash
echo "print('hello')" > app.py
git status

نمونهٔ خروجی:

text
On branch main

No commits yet

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

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

کلمهٔ «Untracked» یعنی گیت این فایل را می‌بیند، اما هنوز تاریخچه‌ای برایش ندارد و تغییراتش را دنبال نمی‌کند.

آماده‌سازی: git add

با add فایل را به ناحیهٔ آماده‌سازی می‌برید:

bash
git add app.py
git status

نمونهٔ خروجی:

text
On branch main

No commits yet

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

حالا فایل «آمادهٔ ثبت» است. سه شکل رایج این فرمان را بشناسید:

bash
git add app.py    # stage a single file
git add .         # stage all changes in the current directory
git add -A        # stage all changes across the repository

ثبت: git commit

با commit همهٔ چیزهای آماده‌شده به‌عنوان یک نقطهٔ ثابت در تاریخچه ذخیره می‌شوند. پیام را با گزینهٔ -m می‌دهید:

bash
git commit -m "Add initial app file"

نمونهٔ خروجی:

text
[main (root-commit) 3f2a1c9] Add initial app file
 1 file changed, 1 insertion(+)
 create mode 100644 app.py

خروجی می‌گوید کدام شاخه، با چه شناسه‌ای (اینجا 3f2a1c9) و چند خط تغییر. اگر بعد از کامیت فایل را ویرایش کنید، git status آن را «modified» نشان می‌دهد و باید دوباره چرخهٔ add و سپس commit را طی کنید.

پیام کامیت را جدی بگیرید؛ شش ماه بعد تنها راه فهمیدن دلیل هر تغییر همان پیام است. عرف رایج این است که پیام کوتاه و دستوری باشد، مثل «Fix login error» به‌جای «کارهایی کردم».

دیدن تاریخچه: git log

bash
git log --oneline

نمونهٔ خروجی:

text
3f2a1c9 (HEAD -> main) Add initial app file

هر سطر یک کامیت است: شناسهٔ کوتاه، اشاره‌گر HEAD (یعنی همین‌جا هستید) و پیام. HEAD به کامیت فعلی اشاره می‌کند؛ در درس «شاخه‌ها» نقش آن پررنگ‌تر می‌شود. بدون --oneline، فرمان git log نویسنده، تاریخ و پیام کامل هر کامیت را جداگانه نشان می‌دهد.

دیدن تفاوت‌ها: git diff

diff دقیقاً نشان می‌دهد چه چیزی تغییر کرده، خط‌به‌خط. فایل را ویرایش کنید:

bash
echo "print('bye')" >> app.py
git diff

نمونهٔ خروجی:

text
diff --git a/app.py b/app.py
index 3c4d5e6..8f9a0b1 100644
--- a/app.py
+++ b/app.py
@@ -1 +1,2 @@
 print('hello')
+print('bye')

سطرهای شروع‌شده با + اضافه‌شده‌ها و با - حذف‌شده‌ها هستند. دقت کنید که git diff فقط تفاوت «پوشهٔ کاری با ناحیهٔ آماده‌سازی» را می‌دهد. برای دیدن تفاوت چیزهایی که با add آماده کرده‌اید و هنوز کامیت نشده‌اند، گزینهٔ --staged را اضافه کنید:

bash
git add app.py
git diff --staged

تمرین‌ها

تمرین

تمرین ۱ — اولین مخزن کامل

یک پوشهٔ تازه بسازید، آن را مخزن کنید، فایلی به نام notes.txt با هر محتوایی بسازید، آن را ثبت کنید و در پایان تاریخچهٔ تک‌خطی را نشان دهید.

bash
# Write your commands here
نمایش راه‌حل
bash
mkdir my-project
cd my-project
git init
echo "my first note" > notes.txt
git add notes.txt
git commit -m "Add first note"
git log --oneline

نمونهٔ خروجی:

text
7e1c4ab (HEAD -> main) Add first note

:::

تمرین

تمرین ۲ — تفکیک تغییرها

در مخزن تمرین قبل، دو فایل تازه بسازید اما فقط یکی از آن‌ها را add کنید. خروجی git status را بررسی کنید: کدام فایل «Changes to be committed» است و کدام «Untracked»؟ سپس فایل دوم را هم آماده و هر دو را با هم کامیت کنید.

bash
# Write your commands here
نمایش راه‌حل
bash
echo a > a.txt
echo b > b.txt
git add a.txt
git status --short
git add b.txt
git commit -m "Add a and b files"

در git status --short فایل آماده‌شده سطر A a.txt و فایل آماده‌نشده سطر ?? b.txt را دارد. بعد از add دوم، هر دو در یک کامیت ثبت می‌شوند.

:::

خلاصه

  • git init پوشهٔ فعلی را مخزن می‌کند و تاریخچه در .git ذخیره می‌شود.
  • git status وضعیت فایل‌ها را می‌گوید: untracked، آماده‌شده یا ویرایش‌شده.
  • چرخهٔ پایه این است: ویرایش کن، git add کن، git commit -m بزن.
  • git log --oneline تاریخچهٔ کوتاه و git diff و git diff --staged تفاوت‌های خط‌به‌خط را نشان می‌دهند.

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

منابع و ارجاع‌ها