Git / git diff

git diff

git status нь ямар файл өөрчлөгдснийг харуулдаг бол git diff нь тэр өөрчлөлтийн агуулгыг мөр мөрөөр харуулдаг. Кодын юу нэмэгдэж, юу устгагдсаныг олж харах хамгийн хэрэгтэй хэрэгсэл.

git diff — unstaged өөрчлөлт

Staging area-д нэмэгдээгүй (ажлын фолдерийн) өөрчлөлтийг харах:

bash
git diff

Гаралт:

diff
diff --git a/app/page.tsx b/app/page.tsx
index 3a4b5c6..7d8e9f0 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -10,7 +10,9 @@ export default function Home() {
   return (
     <main>
-      <h1>Сайн уу</h1>
+      <h1>Сайн уу, дэлхий!</h1>
+      <p>Тавтай морил</p>
     </main>
   )
 }

Diff унших арга

код
--- a/app/page.tsx   ← хуучин хувилбар (commit-д байгаа)
+++ b/app/page.tsx   ← шинэ хувилбар (одоогийн файл)

@@ -10,7 +10,9 @@  ← хуучин 10-р мөрөөс 7 мөр / шинэ 10-р мөрөөс 9 мөр

| Тэмдэг | Утга | | ---------- | ------------------------------ | | - улаан | Устгагдсан мөр | | + ногоон | Нэмэгдсэн мөр | | Тэмдэггүй | Өөрчлөгдөөгүй, зөвхөн контекст |

Мөрийн агуулга өөрчлөгдсөн үед Git тэр мөрийг устгасан (-) ба шинэ мөр нэмсэн (+) гэж харуулна — "засварлах" тэмдэг байдаггүй.

git diff --staged — staged өөрчлөлт

git add хийсний дараа git diff хоосон гарна — staging area-д байгаа өөрчлөлтийг харахад --staged тугийг нэмнэ:

bash
git diff --staged

Эсвэл --cached тугийг ашиглаж болно (яг адил):

bash
git diff --cached

Commit хийхийн өмнө staging area-д яг юу байгааг шалгахад хэрэглэнэ.

git diff <branch> — branch хооронд харьцуулах

Одоогийн branch болон өөр branch-ийн ялгааг харах:

bash
git diff main

Хоёр branch хоорондын ялгаа:

bash
git diff main feature/login

Тодорхой commit хоорондын ялгаа (hash ашиглан):

bash
git diff 9f8e7d6 a1b2c3d

Тодорхой файлын diff:

bash
git diff main -- app/page.tsx

Статистик харах

Ямар файл хэр их өөрчлөгдсөнийг агуулгагүйгээр харах:

bash
git diff --stat
код
 app/page.tsx   |  4 ++--
 style.css      | 12 ++++++------
 2 files changed, 8 insertions(+), 8 deletions(-)

difftool — визуал харьцуулагч

Terminal-ийн diff унших хэцүү санагдвал визуал хэрэгсэл ашиглаж болно. VS Code-ийг difftool болгон тохируулах:

bash
git config --global diff.tool vscode
git config --global difftool.vscode.cmd 'code --wait --diff $LOCAL $REMOTE'

Тохируулсны дараа:

bash
git difftool

VS Code нь хоёр хувилбарыг дэлгэцийн хоёр талд зэрэгцүүлэн харуулна. q дарахад дараагийн файл руу шилжинэ.

Практик зөвлөмж

git diff болон git diff --staged-г commit хийхийн өмнө заавал ашиглах зуршил хий. Ингэснээр санаандгүй кодын үлдэгдэл (console.log, тест дата, нууц утга) commit-д орохоос сэргийлнэ.

bash
# Workflow
git diff           # Нэмэхийн өмнө юу байгааг шалгах
git add .
git diff --staged  # Commit хийхийн өмнө дахин шалгах
git commit -m "..."

Дараагийн хичээлд:

.gitignore файл ашиглан Git-д хянуулахгүй файлуудыг тодорхойлох аргыг судална.