diff --git a/other-sheets/git-cheat-sheet-ar.md b/other-sheets/git-cheat-sheet-ar.md index 60453fb..a20ffff 100644 --- a/other-sheets/git-cheat-sheet-ar.md +++ b/other-sheets/git-cheat-sheet-ar.md @@ -1,653 +1,866 @@ -# Git Cheat Sheet العربية +# الدليل المرجعي لـ Git و Git Flow +[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -![Git Logo](../Img/git-logo.png) - -دليل مرجعي سريع لأكثر أوامر Git استخداماً، منظم حسب الفئات لسهولة الاستخدام. +

+ Git +

--- ## 📖 حول هذا الدليل -هذا الدليل المرجعي لـ Git هو مرجع شامل لكل من يريد تحسين سير عمله مع Git. من المبتدئين الذين يبدؤون رحلتهم مع Git إلى المطورين ذوي الخبرة، يوفر هذا الدليل أوامر منظمة ومصنفة لتسريع رحلة التطوير الخاصة بك. +هذا الدليل المرجعي الشامل لـ Git يساعدك على إتقان أوامر Git دون الحاجة لحفظ كل شيء. سواء كنت مبتدئاً أو مطوراً ذا خبرة، يوفر هذا الدليل مرجعاً سريعاً لعمليات Git الأساسية. -### الميزات الرئيسية: -- **فئات منظمة**: الأوامر مرتبة في مجموعات واضحة ومنطقية -- **أمثلة عملية**: مع حالات استخدام من العالم الحقيقي -- **مناسب للمبتدئين**: مع شروحات واضحة ونصائح -- **مرجع فوري**: وصول سريع للأوامر الأساسية +**نرحب بالمساهمات!** لا تتردد في: +- إصلاح الأخطاء الإملائية +- إضافة أوامر جديدة +- الترجمة إلى لغتك +- تحسين الشروحات --- - -## 📑 جدول المحتويات - -- [🔧 الإعداد الأولي](#الإعداد-الأولي) -- [⚙️ ملفات الإعداد](#ملفات-الإعداد) -- [📁 إعداد المستودع](#إعداد-المستودع) -- [📊 أوامر الحالة](#أوامر-الحالة) -- [📝 إدارة الملفات](#إدارة-الملفات) -- [💾 التثبيتات (Commits)](#التثبيتات-commits) -- [🌿 الفروع (Branches)](#الفروع-branches) -- [🔀 الدمج (Merge)](#الدمج-merge) -- [🌐 المستودعات البعيدة](#المستودعات-البعيدة) -- [📚 السجل والتاريخ](#السجل-والتاريخ) -- [🔍 البحث](#البحث) -- [📋 النقل/إعادة التسمية](#النقل-إعادة-التسمية) -- [🏷️ العلامات (Tags)](#العلامات-tags) -- [↩️ التراجع عن التغييرات](#التراجع-عن-التغييرات) -- [📦 المخزن المؤقت (Stash)](#المخزن-المؤقت-stash) -- [🌊 Git Flow](#git-flow) -- [💡 نصائح مفيدة](#نصائح-مفيدة) -- [🌍 لغات أخرى](#لغات-أخرى) -- [🤝 المساهمة](#المساهمة) -- [📄 الترخيص](#الترخيص) -- [📖 مصادر إضافية](#مصادر-إضافية) +## 📋 جدول المحتويات + +- [🔧 الإعداد](#-الإعداد) +- [⚙️ ملفات الإعداد](#️-ملفات-الإعداد) +- [🆕 إنشاء مستودع](#-إنشاء-مستودع) +- [📝 التغييرات المحلية](#-التغييرات-المحلية) +- [🔍 البحث](#-البحث) +- [📖 سجل الإيداعات](#-سجل-الإيداعات) +- [📁 النقل / إعادة التسمية](#-النقل--إعادة-التسمية) +- [🌿 الفروع والعلامات](#-الفروع-والعلامات) +- [🔄 التحديث والنشر](#-التحديث-والنشر) +- [🔀 الدمج وإعادة التأسيس](#-الدمج-وإعادة-التأسيس) +- [↩️ التراجع](#️-التراجع) +- [🌊 Git Flow](#-git-flow) +- [🌍 لغات أخرى](#-لغات-أخرى) --- -## 🔧 الإعداد الأولي +## 🔧 الإعداد -إعداد Git بمعلوماتك الشخصية: +### عرض الإعدادات +**عرض الإعدادات الحالية:** ```bash -# إعداد اسم المستخدم -git config --global user.name "اسمك" - -# إعداد البريد الإلكتروني -git config --global user.email "email@example.com" - -# عرض الإعدادات الحالية git config --list +``` -# إعداد المحرر الافتراضي -git config --global core.editor "nano" +**عرض إعدادات المستودع:** +```bash +git config --local --list +``` -# إعداد أداة المقارنة -git config --global merge.tool vimdiff +**عرض الإعدادات العامة:** +```bash +git config --global --list ``` ---- +**عرض إعدادات النظام:** +```bash +git config --system --list +``` -## ⚙️ ملفات الإعداد +### إعداد المستخدم -يتم تخزين إعدادات Git على ثلاثة مستويات: +**تعيين اسمك لسجل الإصدارات:** +```bash +git config --global user.name "[firstname lastname]" +``` -| المستوى | موقع الملف | الأمر | الوصف | -|---------|------------|-------|--------| -| **System** | `/etc/gitconfig` | `--system` | إعدادات على مستوى النظام لجميع المستخدمين | -| **Global** | `~/.gitconfig` أو `~/.config/git/config` | `--global` | إعدادات للمستخدم الحالي | -| **Local** | `.git/config` | `--local` (افتراضي) | إعدادات للمستودع الحالي | +**تعيين بريدك الإلكتروني:** +```bash +git config --global user.email "[valid-email]" +``` +### إعدادات العرض والمحرر + +**تفعيل التلوين التلقائي لسطر الأوامر:** ```bash -# عرض مستوى الإعداد -git config --show-origin user.name +git config --global color.ui auto +``` -# تعيين إعداد على مستوى محدد -git config --local user.name "اسم المشروع" -git config --global user.email "global@example.com" +**تعيين المحرر العام للإيداعات:** +```bash +git config --global core.editor vi ``` --- -## 📁 إعداد المستودع +## ⚙️ ملفات الإعداد + +| النطاق | الموقع | خيار الأمر | +|--------|--------|------------| +| **المستودع** | `/.git/config` | `--local` | +| **المستخدم** | `~/.gitconfig` | `--global` | +| **النظام** | `/etc/gitconfig` | `--system` | + +--- -### إنشاء مستودع جديد: +## 🆕 إنشاء مستودع +### استنساخ مستودع موجود + +**عبر SSH:** ```bash -# إنشاء مستودع Git جديد -git init +git clone ssh://user@domain.com/repo.git +``` + +**عبر HTTPS:** +```bash +git clone https://domain.com/user/repo.git +``` -# نسخ مستودع موجود -git clone <رابط-المستودع> +### تهيئة مستودع جديد -# نسخ إلى مجلد محدد -git clone <رابط-المستودع> <اسم-المجلد> +**إنشاء مستودع في المجلد الحالي:** +```bash +git init +``` + +**إنشاء مستودع في مجلد محدد:** +```bash +git init ``` --- -## 📊 أوامر الحالة +## 📝 التغييرات المحلية -### فحص حالة المستودع: +### فحص الحالة والاختلافات +**عرض حالة مجلد العمل:** ```bash -# عرض الحالة الحالية للمستودع git status +``` -# عرض الحالة بصيغة مختصرة -git status -s +**عرض التغييرات في الملفات المتتبعة:** +```bash +git diff +``` -# عرض الحالة متجاهلاً الملفات غير المتتبعة -git status --ignored +**عرض التغييرات في ملف محدد:** +```bash +git diff +``` -# عرض الاختلافات في الملفات المعدلة -git diff +### تحضير التغييرات -# عرض الاختلافات في منطقة التحضير -git diff --staged +**إضافة جميع التغييرات الحالية:** +```bash +git add . +``` -# عرض الاختلافات بين الفروع -git diff <فرع1> <فرع2> +**إضافة ملفات محددة:** +```bash +git add ``` ---- +**إضافة أجزاء من ملف بشكل تفاعلي:** +```bash +git add -p +``` -## 📝 إدارة الملفات +### إيداع التغييرات -### إضافة وحذف الملفات: +**إيداع جميع تغييرات الملفات المتتبعة:** +```bash +git commit -a +``` +**إيداع التغييرات المحضّرة:** ```bash -# إضافة ملف محدد لمنطقة التحضير -git add <ملف> +git commit +``` -# إضافة جميع الملفات المعدلة -git add . +**إيداع مع رسالة:** +```bash +git commit -m 'message here' +``` -# إضافة جميع الملفات من نوع محدد -git add *.txt +**تخطي التحضير والإيداع مع رسالة:** +```bash +git commit -am 'message here' +``` -# إضافة تفاعلية -git add -i +**إيداع بتاريخ محدد:** +```bash +git commit --date="`date --date='n day ago'`" -am "" +``` -# حذف ملف من المستودع ومجلد العمل -git rm <ملف> +### تعديل آخر إيداع -# حذف ملف من المستودع فقط (الاحتفاظ به في المجلد) -git rm --cached <ملف> +> ⚠️ **تحذير:** لا تعدّل الإيداعات المنشورة! -# نقل/إعادة تسمية ملف -git mv <ملف-المصدر> <ملف-الوجهة> +**تعديل آخر إيداع:** +```bash +git commit -a --amend ``` ---- +**تعديل بدون تغيير رسالة الإيداع:** +```bash +git commit --amend --no-edit +``` -## 💾 التثبيتات (Commits) +**تغيير تاريخ المودع:** +```bash +GIT_COMMITTER_DATE="date" git commit --amend +``` + +**تغيير تاريخ المؤلف:** +```bash +git commit --amend --date="date" +``` -### حفظ التغييرات في المستودع: +### تخزين التغييرات مؤقتاً +**حفظ التغييرات الحالية مؤقتاً:** ```bash -# تثبيت مع رسالة -git commit -m "رسالة التثبيت" +git stash +``` -# تثبيت مع إضافة جميع الملفات المعدلة -git commit -am "رسالة التثبيت" +**تطبيق آخر تغييرات مخزنة:** +```bash +git stash apply +``` -# تعديل التثبيت الأخير -git commit --amend +**تطبيق تخزين محدد:** +```bash +git stash apply stash@{stash_number} +``` +> استخدم `git stash list` لعرض التخزينات المتاحة -# تثبيت فارغ (مفيد لـ CI/CD) -git commit --allow-empty -m "تشغيل CI" +**حذف آخر تخزين:** +```bash +git stash drop +``` -# تثبيت مع رسالة مفصلة (يفتح المحرر) -git commit +**نقل التغييرات غير المودعة إلى فرع آخر:** +```bash +git stash +git checkout branch2 +git stash pop ``` --- -## 🌿 الفروع (Branches) +## 🔍 البحث -### العمل مع الفروع: +### البحث في النصوص +**البحث عن نص في جميع الملفات:** ```bash -# عرض جميع الفروع -git branch - -# عرض الفروع البعيدة -git branch -r +git grep "Hello" +``` -# عرض جميع الفروع (محلية وبعيدة) -git branch -a +**البحث في إصدار محدد:** +```bash +git grep "Hello" v2.5 +``` -# إنشاء فرع جديد -git branch <اسم-الفرع> +### البحث في الإيداعات -# التبديل إلى فرع -git checkout <اسم-الفرع> +**البحث عن إيداعات أضافت كلمة مفتاحية محددة:** +```bash +git log -S 'keyword' +``` -# إنشاء والتبديل إلى فرع جديد -git checkout -b <اسم-الفرع> +**البحث بتعبير نمطي:** +```bash +git log -S 'keyword' --pickaxe-regex +``` -# إنشاء فرع من تثبيت محدد -git checkout -b <اسم-الفرع> <هاش-التثبيت> +--- -# حذف فرع -git branch -d <اسم-الفرع> +## 📖 سجل الإيداعات -# حذف فرع بالقوة -git branch -D <اسم-الفرع> +### السجل الأساسي -# إعادة تسمية الفرع الحالي -git branch -m <الاسم-الجديد> +**عرض جميع الإيداعات (مفصل):** +```bash +git log +``` -# إعادة تسمية فرع محدد -git branch -m <الاسم-القديم> <الاسم-الجديد> +**عرض الإيداعات (سطر واحد لكل إيداع):** +```bash +git log --oneline ``` ---- +**عرض إيداعات مؤلف محدد:** +```bash +git log --author="username" +``` -## 🔀 الدمج (Merge) +**عرض التغييرات لملف محدد:** +```bash +git log -p +``` -### دمج التغييرات بين الفروع: +### السجل المتقدم +**مقارنة الفروع:** ```bash -# دمج فرع في الفرع الحالي -git merge <اسم-الفرع> +git log --oneline .. --left-right +``` -# دمج بدون fast-forward (إنشاء تثبيت دمج) -git merge --no-ff <اسم-الفرع> +**عرض من غيّر ماذا ومتى:** +```bash +git blame +``` -# دمج فقط إذا كان fast-forward -git merge --ff-only <اسم-الفرع> +### سجلات المراجع -# إلغاء عملية الدمج الجارية -git merge --abort +**عرض سجل المراجع:** +```bash +git reflog show +``` -# متابعة الدمج بعد حل التعارضات -git merge --continue +**حذف سجل المراجع:** +```bash +git reflog delete ``` --- -## 🌐 المستودعات البعيدة - -### إدارة المستودعات البعيدة: +## 📁 النقل / إعادة التسمية +**إعادة تسمية ملف:** ```bash -# عرض المستودعات البعيدة -git remote - -# عرض المستودعات البعيدة مع الروابط -git remote -v +git mv Index.txt Index.html +``` -# إضافة مستودع بعيد -git remote add <اسم> <رابط> +--- -# تغيير رابط المستودع البعيد -git remote set-url <اسم> <رابط-جديد> +## 🌿 الفروع والعلامات -# حذف مستودع بعيد -git remote remove <اسم> +### عرض الفروع -# رفع التغييرات للمستودع البعيد -git push <بعيد> <فرع> +**عرض الفروع المحلية:** +```bash +git branch +``` -# رفع فرع وتعيين التتبع -git push -u <بعيد> <فرع> +**عرض جميع الفروع (محلية + بعيدة):** +```bash +git branch -a +``` -# رفع جميع الفروع -git push --all +**عرض الفروع البعيدة:** +```bash +git branch -r +``` -# رفع العلامات -git push --tags +**عرض الفروع المدمجة:** +```bash +git branch --merged +``` -# تحميل التغييرات من المستودع البعيد -git pull <بعيد> <فرع> +### التبديل وإنشاء الفروع -# تحميل التغييرات بدون دمج -git fetch <بعيد> +**التبديل إلى فرع موجود:** +```bash +git checkout +``` -# تحميل جميع الفروع البعيدة -git fetch --all +**إنشاء والتبديل إلى فرع جديد:** +```bash +git checkout -b ``` ---- +**التبديل إلى الفرع السابق:** +```bash +git checkout - +``` -## 📚 السجل والتاريخ +**إنشاء فرع من فرع موجود:** +```bash +git checkout -b +``` -### استكشاف تاريخ التثبيتات: +**إنشاء فرع من إيداع محدد:** +```bash +git checkout -b +``` +**إنشاء فرع بدون التبديل إليه:** ```bash -# عرض تاريخ التثبيتات -git log +git branch +``` -# عرض التاريخ في سطر واحد لكل تثبيت -git log --oneline +**إنشاء فرع تتبع:** +```bash +git branch --track +``` -# عرض التاريخ مع رسم بياني -git log --graph +### عمليات الفروع -# عرض تاريخ ملف محدد -git log <ملف> +**استخراج ملف واحد من فرع آخر:** +```bash +git checkout -- +``` -# عرض إحصائيات التثبيتات -git log --stat +**تطبيق إيداع محدد من فرع آخر:** +```bash +git cherry-pick +``` -# عرض التغييرات في كل تثبيت -git log -p +**إعادة تسمية الفرع الحالي:** +```bash +git branch -m +``` -# عرض آخر N تثبيت -git log -n <عدد> +**حذف فرع محلي:** +```bash +git branch -d +``` -# عرض التثبيتات بين تواريخ -git log --since="2023-01-01" --until="2023-12-31" +**حذف فرع محلي بالقوة:** +```bash +git branch -D +``` +> ⚠️ **تحذير:** ستفقد التغييرات غير المدمجة! -# عرض التثبيتات حسب المؤلف -git log --author="اسم المؤلف" +### العلامات -# البحث في رسائل التثبيت -git log --grep="كلمة مفتاحية" +**إنشاء علامة عند HEAD:** +```bash +git tag ``` ---- - -## 🔍 البحث +**إنشاء علامة مشروحة:** +```bash +git tag -a +``` -### البحث في الملفات والتثبيتات: +**إنشاء علامة مع رسالة:** +```bash +git tag -am 'message here' +``` +**عرض جميع العلامات:** ```bash -# البحث عن نص في الملفات -git grep "النص المطلوب" +git tag +``` -# البحث في أنواع ملفات محددة -git grep "النمط" -- "*.js" +**عرض العلامات مع الرسائل:** +```bash +git tag -n +``` -# البحث في رسائل التثبيت -git log --grep="الرسالة" +--- -# البحث في تغييرات التثبيتات -git log -S "نص الكود" +## 🔄 التحديث والنشر -# البحث عن أسماء الملفات -git ls-files | grep "النمط" +### إدارة المستودعات البعيدة -# البحث عن ملفات في الفرع -git ls-tree -r --name-only <اسم-الفرع> +**عرض المستودعات البعيدة المُعدّة:** +```bash +git remote -v ``` ---- - -## 📋 النقل/إعادة التسمية +**عرض معلومات المستودع البعيد:** +```bash +git remote show +``` -### نقل وإعادة تسمية الملفات: +**إضافة مستودع بعيد جديد:** +```bash +git remote add +``` +**إعادة تسمية مستودع بعيد:** ```bash -# نقل/إعادة تسمية ملف -git mv <الاسم-القديم> <الاسم-الجديد> +git remote rename +``` -# نقل مجلد -git mv <المجلد-القديم> <المجلد-الجديد> +**حذف مستودع بعيد:** +```bash +git remote rm +``` +> ℹ️ **ملاحظة:** هذا يحذف المرجع البعيد محلياً فقط، وليس المستودع البعيد نفسه. -# بعد نقل الملف يدوياً -mv <الاسم-القديم> <الاسم-الجديد> -git rm <الاسم-القديم> -git add <الاسم-الجديد> +### الجلب والسحب -# نقل ملفات متعددة -git mv *.txt <المجلد-الجديد>/ +**تنزيل التغييرات بدون دمج:** +```bash +git fetch +``` -# تتبع تاريخ مسار الملف -git log --follow <اسم-الملف> +**تنزيل ودمج التغييرات:** +```bash +git pull ``` ---- +**الحصول على التغييرات من الفرع الرئيسي:** +```bash +git pull origin master +``` -## 🏷️ العلامات (Tags) +**السحب مع إعادة التأسيس:** +```bash +git pull --rebase +``` -### إدارة علامات الإصدارات: +### الدفع والنشر +**نشر التغييرات المحلية:** ```bash -# عرض جميع العلامات -git tag +git push +``` -# إنشاء علامة خفيفة -git tag <اسم-العلامة> +**حذف فرع بعيد:** +```bash +# Git v1.7.0+ +git push --delete -# إنشاء علامة مشروحة -git tag -a <اسم-العلامة> -m "رسالة العلامة" +# Git v1.5.0+ +git push : +``` -# إنشاء علامة على تثبيت محدد -git tag -a <اسم-العلامة> <هاش-التثبيت> +**نشر العلامات:** +```bash +git push --tags +``` -# عرض معلومات علامة -git show <اسم-العلامة> +--- -# حذف علامة محلية -git tag -d <اسم-العلامة> +## 🔀 الدمج وإعادة التأسيس -# حذف علامة بعيدة -git push --delete <بعيد> <اسم-العلامة> +### عمليات الدمج -# رفع علامة محددة -git push <بعيد> <اسم-العلامة> +**دمج فرع في HEAD الحالي:** +```bash +git merge +``` -# رفع جميع العلامات -git push <بعيد> --tags +**إعداد أداة الدمج عامة:** +```bash +git config --global merge.tool meld ``` ---- +**استخدام أداة الدمج المُعدّة:** +```bash +git mergetool +``` -## ↩️ التراجع عن التغييرات +### عمليات إعادة التأسيس -### التراجع عن التعديلات: +> ⚠️ **تحذير:** لا تعد تأسيس الإيداعات المنشورة! +**إعادة تأسيس HEAD الحالي على فرع:** ```bash -# إلغاء التغييرات في ملف محدد -git checkout <ملف> - -# إلغاء جميع التغييرات غير المثبتة -git checkout . +git rebase +``` -# إرجاع ملف لإصدار محدد -git checkout <هاش-التثبيت> <ملف> +**إلغاء إعادة التأسيس:** +```bash +git rebase --abort +``` -# إزالة ملف من منطقة التحضير -git reset <ملف> +**متابعة إعادة التأسيس بعد حل التعارضات:** +```bash +git rebase --continue +``` -# إزالة جميع الملفات من منطقة التحضير -git reset +### حل التعارضات -# التراجع للتثبيت السابق (الاحتفاظ بالتغييرات) -git reset --soft HEAD~1 +**وضع علامة على ملف كمحلول:** +```bash +git add +``` -# التراجع للتثبيت السابق (إلغاء التغييرات) -git reset --hard HEAD~1 +**حذف ملف محلول:** +```bash +git rm +``` -# التراجع لتثبيت محدد -git reset --hard <هاش-التثبيت> +### ضغط الإيداعات -# إنشاء تثبيت يلغي تثبيت آخر -git revert <هاش-التثبيت> +**إعادة تأسيس تفاعلية لضغط الإيداعات:** +```bash +git rebase -i +``` -# إلغاء تثبيتات متعددة -git revert <هاش-من>..<هاش-إلى> +**مثال على إعداد الضغط:** +``` +# قبل +pick +pick +pick + +# بعد (ضغط commit_id2 و commit_id3 في commit_id) +pick +squash +squash ``` --- -## 📦 المخزن المؤقت (Stash) +## ↩️ التراجع -### حفظ العمل مؤقتاً: +### تجاهل التغييرات +**تجاهل جميع التغييرات المحلية:** ```bash -# حفظ التغييرات الحالية في المخزن المؤقت -git stash +git reset --hard HEAD +``` -# حفظ مع رسالة وصفية -git stash save "رسالة وصفية" +**إلغاء تحضير جميع الملفات:** +```bash +git reset HEAD +``` -# عرض جميع المخازن المؤقتة -git stash list +**تجاهل التغييرات في ملف محدد:** +```bash +git checkout HEAD +``` -# تطبيق آخر مخزن مؤقت -git stash apply +### عمليات إعادة التعيين -# تطبيق مخزن مؤقت محدد -git stash apply stash@{0} +**إعادة التعيين إلى إيداع سابق (تجاهل جميع التغييرات):** +```bash +git reset --hard +``` -# تطبيق وحذف آخر مخزن مؤقت -git stash pop +**إعادة التعيين إلى حالة الفرع البعيد:** +```bash +git reset --hard +# مثال: git reset --hard upstream/master +``` -# حذف مخزن مؤقت محدد -git stash drop stash@{0} +**إعادة التعيين مع الاحتفاظ بالتغييرات كغير محضّرة:** +```bash +git reset +``` -# حذف جميع المخازن المؤقتة -git stash clear +**إعادة التعيين مع الاحتفاظ بالتغييرات المحلية غير المودعة:** +```bash +git reset --keep +``` + +### التراجع عن الإيداعات + +**التراجع عن إيداع (إنشاء إيداع جديد بتغييرات معاكسة):** +```bash +git revert +``` -# عرض التغييرات في مخزن مؤقت -git stash show stash@{0} +### تنظيف الملفات المتجاهلة -# إنشاء فرع من مخزن مؤقت -git stash branch <اسم-الفرع> stash@{0} +**حذف الملفات التي أُودعت بالخطأ والتي يجب تجاهلها:** +```bash +git rm -r --cached . +git add . +git commit -m "remove ignored files" ``` --- ## 🌊 Git Flow -Git Flow هو نموذج تفريع يحدد سير عمل صارم مصمم حول إطلاق المشروع. +**Git-flow المحسّن:** [git-flow-avh](https://github.com/petervanderdoes/gitflow-avh) -### الفروع الرئيسية: -- **master/main**: كود الإنتاج -- **develop**: فرع التطوير الرئيسي +### 📋 جدول المحتويات +- [🔧 الإعداد](#setup-1) +- [🚀 البدء](#getting-started) +- [✨ الميزات](#features) +- [🎁 إنشاء إصدار](#make-a-release) +- [🔥 الإصلاحات العاجلة](#hotfixes) +- [📊 نظرة عامة على الأوامر](#commands-overview) -### فروع الدعم: -- **feature**: للميزات الجديدة -- **release**: لتحضير إصدارات جديدة -- **hotfix**: للإصلاحات العاجلة في الإنتاج +--- -### أوامر Git Flow: +### 🔧 الإعداد {#setup-1} +> **متطلب أساسي:** يجب أن يكون Git مثبتاً ويعمل. Git-flow يعمل على macOS و Linux و Windows. + +**macOS (Homebrew):** ```bash -# تهيئة git flow -git flow init +brew install git-flow-avh +``` -# بدء ميزة جديدة -git flow feature start <اسم-الميزة> +**macOS (MacPorts):** +```bash +port install git-flow +``` -# إنهاء الميزة -git flow feature finish <اسم-الميزة> +**Linux (توزيعات Debian):** +```bash +sudo apt-get install git-flow +``` -# نشر الميزة -git flow feature publish <اسم-الميزة> +**Windows (Cygwin):** +> يتطلب wget و util-linux +```bash +wget -q -O - --no-check-certificate https://raw.githubusercontent.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh install | bash +``` -# بدء إصدار -git flow release start <إصدار> +--- -# إنهاء الإصدار -git flow release finish <إصدار> +### 🚀 البدء -# بدء إصلاح عاجل -git flow hotfix start <إصدار> +يحتاج Git-flow إلى التهيئة لتخصيص إعدادات مشروعك. -# إنهاء الإصلاح العاجل -git flow hotfix finish <إصدار> +**التهيئة (تفاعلية):** +```bash +git flow init ``` +> ستجيب على أسئلة حول اتفاقيات تسمية الفروع. يُنصح باستخدام القيم الافتراضية. -### سير العمل بدون Git Flow: +**التهيئة (استخدام الافتراضيات):** +```bash +git flow init -d +``` -![Git Flow Commands](../Img/git-flow-commands-without-flow.png) +--- +### ✨ الميزات + +الميزات مخصصة لتطوير وظائف جديدة للإصدارات القادمة. عادةً ما توجد فقط في مستودعات المطورين. + +**بدء ميزة جديدة:** ```bash -# إنشاء فرع الميزة -git checkout develop -git checkout -b feature/ميزة-جديدة +git flow feature start MYFEATURE +``` +> ينشئ فرع ميزة بناءً على 'develop' وينتقل إليه -# العمل على الميزة -git add . -git commit -m "إضافة ميزة جديدة" +**إنهاء ميزة:** +```bash +git flow feature finish MYFEATURE +``` +> سيقوم بـ: +> 1. دمج MYFEATURE في 'develop' +> 2. حذف فرع الميزة +> 3. العودة إلى 'develop' -# دمج الميزة في develop -git checkout develop -git merge --no-ff feature/ميزة-جديدة -git branch -d feature/ميزة-جديدة +**نشر ميزة (للتعاون):** +```bash +git flow feature publish MYFEATURE +``` -# إنشاء فرع الإصدار -git checkout develop -git checkout -b release/1.0.0 +**الحصول على ميزة منشورة:** +```bash +git flow feature pull origin MYFEATURE +``` -# إنهاء الإصدار -git checkout master -git merge --no-ff release/1.0.0 -git tag -a 1.0.0 -m "الإصدار 1.0.0" -git checkout develop -git merge --no-ff release/1.0.0 -git branch -d release/1.0.0 +**تتبع ميزة من المصدر:** +```bash +git flow feature track MYFEATURE ``` --- -## 💡 نصائح مفيدة +### 🎁 إنشاء إصدار -### اختصارات مفيدة: +الإصدارات تدعم تحضير إصدارات الإنتاج الجديدة، وتسمح بإصلاحات الأخطاء الطفيفة وتحضير البيانات الوصفية. +**بدء إصدار:** ```bash -# إعداد اختصارات مفيدة -git config --global alias.st status -git config --global alias.co checkout -git config --global alias.br branch -git config --global alias.ci commit -git config --global alias.unstage 'reset HEAD --' -git config --global alias.last 'log -1 HEAD' -git config --global alias.visual '!gitk' +git flow release start RELEASE [BASE] ``` +> ينشئ فرع إصدار من 'develop'. اختيارياً حدد [BASE] وهو SHA-1 للإيداع. -### ملفات .gitignore: +**نشر الإصدار:** +```bash +git flow release publish RELEASE +``` +**تتبع إصدار بعيد:** ```bash -# إنشاء ملف .gitignore -echo "node_modules/" >> .gitignore -echo "*.log" >> .gitignore -echo ".env" >> .gitignore +git flow release track RELEASE +``` -# تجاهل ملفات متتبعة بالفعل -git rm --cached <ملف> -echo "<ملف>" >> .gitignore -git add .gitignore -git commit -m "إضافة ملف إلى .gitignore" +**إنهاء الإصدار:** +```bash +git flow release finish RELEASE ``` +> سيقوم بـ: +> 1. دمج فرع الإصدار في 'master' +> 2. وضع علامة على الإصدار +> 3. إعادة دمج الإصدار في 'develop' +> 4. حذف فرع الإصدار + +> 💡 **لا تنسَ:** ادفع العلامات باستخدام `git push --tags` --- -## 🌍 لغات أخرى +### 🔥 الإصلاحات العاجلة -هذا الدليل المرجعي لـ Git متوفر باللغات التالية: - -- 🇺🇸 [English](../README.md) -- 🇸🇦 **العربية** (الحالي) -- 🇧🇩 [বাংলা](git-cheat-sheet-bn.md) -- 🇩🇪 [Deutsch](git-cheat-sheet-de.md) -- 🇬🇷 [Ελληνικά](git-cheat-sheet-el.md) -- 🇪🇸 [Español](git-cheat-sheet-es.md) -- 🇮🇳 [हिन्दी](git-cheat-sheet-hi.md) -- 🇰🇷 [한국어](git-cheat-sheet-ko.md) -- 🇵🇱 [Polski](git-cheat-sheet-pl.md) -- 🇧🇷 [Português](git-cheat-sheet-pt_BR.md) -- 🇹🇷 [Türkçe](git-cheat-sheet-tr.md) -- 🇨🇳 [中文](git-cheat-sheet-zh.md) +الإصلاحات العاجلة تعالج المشاكل الحرجة في إصدارات الإنتاج الحية. تتفرع من العلامة المقابلة على master. + +**بدء إصلاح عاجل:** +```bash +git flow hotfix start VERSION [BASENAME] +``` + +**إنهاء إصلاح عاجل:** +```bash +git flow hotfix finish VERSION +``` +> يُدمج مرة أخرى في كل من 'develop' و 'master'، ويضع علامة على دمج master --- -## 🤝 المساهمة +### 📊 نظرة عامة على الأوامر -نرحب بالمساهمات! للمساعدة في تحسين هذا المشروع: +

+ أوامر Git Flow +

-1. **أبلغ عن المشاكل**: شارك الأخطاء أو اقتراحات التحسين -2. **أضف لغات جديدة**: أنشئ ترجمات أو حسّن الموجودة -3. **حسّن المحتوى**: أضف أوامر جديدة أو أمثلة أو شروحات -4. **قدم ملاحظات**: شارك تجاربك واقتراحاتك +### 🌊 مخطط Git Flow -### كيفية المساهمة: -- [افتح مشكلة على GitHub](https://github.com/arslanbilal/git-cheat-sheet/issues) -- أرسل طلب سحب (Pull Request) -- اقترح تحسينات على الوثائق +

+ مخطط Git Flow +

--- -## 📄 الترخيص -هذا المشروع مرخص تحت رخصة MIT. راجع ملف [LICENSE](../LICENSE) لمزيد من التفاصيل. +## 🌍 لغات أخرى + +هذا الدليل المرجعي متوفر بعدة لغات: + +| اللغة | الرابط | +|-------|--------| +| 🇸🇦 العربية | **الحالي** | +| 🇧🇩 البنغالية | [git-cheat-sheet-bn.md](git-cheat-sheet-bn.md) | +| 🇧🇷 البرتغالية البرازيلية | [git-cheat-sheet-pt_BR.md](git-cheat-sheet-pt_BR.md) | +| 🇨🇳 الصينية | [git-cheat-sheet-zh.md](git-cheat-sheet-zh.md) | +| 🇩🇪 الألمانية | [git-cheat-sheet-de.md](git-cheat-sheet-de.md) | +| 🇬🇷 اليونانية | [git-cheat-sheet-el.md](git-cheat-sheet-el.md) | +| 🇮🇳 الهندية | [git-cheat-sheet-hi.md](git-cheat-sheet-hi.md) | +| 🇰🇷 الكورية | [git-cheat-sheet-ko.md](git-cheat-sheet-ko.md) | +| 🇵🇱 البولندية | [git-cheat-sheet-pl.md](git-cheat-sheet-pl.md) | +| 🇪🇸 الإسبانية | [git-cheat-sheet-es.md](git-cheat-sheet-es.md) | +| 🇹🇷 التركية | [git-cheat-sheet-tr.md](git-cheat-sheet-tr.md) | +| 🇺🇸 الإنجليزية | [README.md](../README.md) | --- -## 📖 مصادر إضافية +## 🤝 المساهمة + +نرحب بالمساهمات! يمكنك: + +- 🐛 الإبلاغ عن الأخطاء +- ✨ إضافة أوامر Git جديدة +- 🌍 الترجمة إلى لغات جديدة +- 💡 تحسين الشروحات +- 📝 تحسين التنسيق + +**كيفية المساهمة:** +1. انسخ (Fork) هذا المستودع +2. أنشئ فرع الميزة (`git checkout -b feature/AmazingFeature`) +3. أودع تغييراتك (`git commit -m 'Add some AmazingFeature'`) +4. ادفع إلى الفرع (`git push origin feature/AmazingFeature`) +5. افتح طلب سحب (Pull Request) + +--- + +## 📄 الترخيص -- [الوثائق الرسمية لـ Git](https://git-scm.com/doc) -- [دروس Git من Atlassian](https://www.atlassian.com/git/tutorials) -- [ورقة مرجعية لـ Git من GitHub](https://education.github.com/git-cheat-sheet-education.pdf) -- [دروس Git التفاعلية](https://learngitbranching.js.org/) +هذا المشروع مفتوح المصدر ومتاح تحت [رخصة MIT](../LICENSE). --- -
- ⭐ إذا كان هذا الدليل مفيداً، امنحه نجمة!
- برمجة سعيدة مع Git! 🚀 -
+

+ ⭐ امنح هذا المستودع نجمة إذا وجدته مفيداً! +

diff --git a/other-sheets/git-cheat-sheet-bn.md b/other-sheets/git-cheat-sheet-bn.md index 288dd85..bb85cb0 100644 --- a/other-sheets/git-cheat-sheet-bn.md +++ b/other-sheets/git-cheat-sheet-bn.md @@ -1,677 +1,866 @@ -# Git Cheat Sheet বাংলা +# Git এবং Git Flow চিট শিট +[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -![Git Logo](../Img/git-logo.png) - -সবচেয়ে বেশি ব্যবহৃত Git কমান্ডগুলির একটি দ্রুত রেফারেন্স গাইড, সহজ ব্যবহারের জন্য বিভাগ অনুযায়ী সংগঠিত। +

+ Git +

--- -## 📖 এই গাইড সম্পর্কে +## 📖 সম্পর্কে -এই Git রেফারেন্স গাইডটি একটি সম্পূর্ণ রেফারেন্স যা Git এর সাথে কাজের প্রবাহ উন্নত করতে চান এমন সবার জন্য। যারা Git এর সাথে তাদের যাত্রা শুরু করছেন এমন শিক্ষানবিস থেকে শুরু করে অভিজ্ঞ ডেভেলপারদের জন্য, এই গাইডটি আপনার ডেভেলপমেন্ট যাত্রাকে ত্বরান্বিত করতে সংগঠিত এবং শ্রেণীবদ্ধ কমান্ড প্রদান করে। +এই বিস্তৃত Git চিট শিটটি আপনাকে সবকিছু মুখস্ত না করেই Git কমান্ডগুলো আয়ত্ত করতে সাহায্য করবে। আপনি শিক্ষানবিস হোন বা অভিজ্ঞ ডেভেলপার, এই গাইডটি প্রয়োজনীয় Git অপারেশনগুলোর দ্রুত রেফারেন্স প্রদান করে। -### মূল বৈশিষ্ট্য: -- **সংগঠিত বিভাগ**: কমান্ডগুলি স্পষ্ট এবং যৌক্তিক গ্রুপে সাজানো -- **ব্যবহারিক উদাহরণ**: বাস্তব বিশ্বের ব্যবহারের ক্ষেত্রে সহ -- **শিক্ষানবিস-বান্ধব**: স্পষ্ট ব্যাখ্যা এবং টিপস সহ -- **দ্রুত রেফারেন্স**: প্রয়োজনীয় কমান্ডগুলিতে দ্রুত অ্যাক্সেস +**অবদান স্বাগত!** আপনি যা করতে পারেন: +- ব্যাকরণ ত্রুটি ঠিক করুন +- নতুন কমান্ড যোগ করুন +- আপনার ভাষায় অনুবাদ করুন +- ব্যাখ্যা উন্নত করুন --- - -## 📑 সূচিপত্র - -- [🔧 প্রাথমিক সেটআপ](#প্রাথমিক-সেটআপ) -- [⚙️ কনফিগারেশন ফাইল](#কনফিগারেশন-ফাইল) -- [📁 রিপোজিটরি সেটআপ](#রিপোজিটরি-সেটআপ) -- [📊 স্ট্যাটাস কমান্ড](#স্ট্যাটাস-কমান্ড) -- [📝 ফাইল ম্যানেজমেন্ট](#ফাইল-ম্যানেজমেন্ট) -- [💾 কমিট](#কমিট) -- [🌿 ব্রাঞ্চ](#ব্রাঞ্চ) -- [🔀 মার্জ](#মার্জ) -- [🌐 রিমোট রিপোজিটরি](#রিমোট-রিপোজিটরি) -- [📚 হিস্ট্রি এবং লগ](#হিস্ট্রি-এবং-লগ) -- [🔍 অনুসন্ধান](#অনুসন্ধান) -- [📁 সরানো/নাম পরিবর্তন](#সরানো-নাম-পরিবর্তন) -- [🏷️ ট্যাগ](#ট্যাগ) -- [↩️ পরিবর্তন পূর্বাবস্থায় ফেরানো](#পরিবর্তন-পূর্বাবস্থায়-ফেরানো) -- [📦 স্ট্যাশ](#স্ট্যাশ) -- [🌊 Git Flow](#git-flow) -- [💡 উপযোগী টিপস](#উপযোগী-টিপস) -- [🌍 অন্যান্য ভাষা](#অন্যান্য-ভাষা) -- [🤝 অবদান](#অবদান) -- [📄 লাইসেন্স](#লাইসেন্স) -- [📖 অতিরিক্ত সম্পদ](#অতিরিক্ত-সম্পদ) +## 📋 সূচিপত্র + +- [🔧 সেটআপ](#-সেটআপ) +- [⚙️ কনফিগারেশন ফাইল](#️-কনফিগারেশন-ফাইল) +- [🆕 রিপোজিটরি তৈরি](#-রিপোজিটরি-তৈরি) +- [📝 লোকাল পরিবর্তন](#-লোকাল-পরিবর্তন) +- [🔍 অনুসন্ধান](#-অনুসন্ধান) +- [📖 কমিট ইতিহাস](#-কমিট-ইতিহাস) +- [📁 সরানো / নাম পরিবর্তন](#-সরানো--নাম-পরিবর্তন) +- [🌿 ব্রাঞ্চ ও ট্যাগ](#-ব্রাঞ্চ-ও-ট্যাগ) +- [🔄 আপডেট ও প্রকাশ](#-আপডেট-ও-প্রকাশ) +- [🔀 মার্জ ও রিবেস](#-মার্জ-ও-রিবেস) +- [↩️ পূর্বাবস্থায় ফেরানো](#️-পূর্বাবস্থায়-ফেরানো) +- [🌊 Git Flow](#-git-flow) +- [🌍 অন্যান্য ভাষা](#-অন্যান্য-ভাষা) --- -## 🔧 প্রাথমিক সেটআপ +## 🔧 সেটআপ -আপনার ব্যক্তিগত তথ্য দিয়ে Git কনফিগার করুন: +### কনফিগারেশন দেখুন +**বর্তমান কনফিগারেশন দেখুন:** ```bash -# ব্যবহারকারীর নাম সেট করুন -git config --global user.name "আপনার নাম" - -# ইমেইল সেট করুন -git config --global user.email "email@example.com" - -# বর্তমান কনফিগারেশন দেখুন git config --list - -# ডিফল্ট এডিটর সেট করুন -git config --global core.editor "nano" - -# মার্জ টুল সেট করুন -git config --global merge.tool vimdiff ``` ---- +**রিপোজিটরি কনফিগারেশন দেখুন:** +```bash +git config --local --list +``` -## ⚙️ কনফিগারেশন ফাইল +**গ্লোবাল কনফিগারেশন দেখুন:** +```bash +git config --global --list +``` -Git ব্যবহারকারী এবং রিপোজিটরি পছন্দ সংরক্ষণের জন্য কনফিগারেশন ফাইল ব্যবহার করে: +**সিস্টেম কনফিগারেশন দেখুন:** +```bash +git config --system --list +``` -### কনফিগারেশন স্তর: +### ব্যবহারকারী কনফিগারেশন +**ভার্সন ইতিহাসের জন্য আপনার নাম সেট করুন:** ```bash -# সিস্টেম (সব ব্যবহারকারী) -git config --system - -# ব্যবহারকারী (বর্তমান ব্যবহারকারী) -git config --global +git config --global user.name "[firstname lastname]" +``` -# রিপোজিটরি (নির্দিষ্ট প্রকল্প) -git config --local +**আপনার ইমেইল ঠিকানা সেট করুন:** +```bash +git config --global user.email "[valid-email]" ``` -### সাধারণ কনফিগারেশন: +### ডিসপ্লে ও এডিটর সেটিংস +**স্বয়ংক্রিয় কমান্ড লাইন রঙ সক্রিয় করুন:** ```bash -# ব্যবহারকারীর পরিচয় -git config --global user.name "আপনার নাম" -git config --global user.email "email@example.com" +git config --global color.ui auto +``` -# টেক্সট এডিটর -git config --global core.editor nano +**কমিটের জন্য গ্লোবাল এডিটর সেট করুন:** +```bash +git config --global core.editor vi +``` -# মার্জ টুল -git config --global merge.tool vimdiff +--- -# আউটপুটে রঙ -git config --global color.ui auto +## ⚙️ কনফিগারেশন ফাইল -# কনফিগারেশন দেখুন -git config --list -``` +| পরিসর | অবস্থান | কমান্ড ফ্ল্যাগ | +|-------|----------|--------------| +| **রিপোজিটরি** | `/.git/config` | `--local` | +| **ব্যবহারকারী** | `~/.gitconfig` | `--global` | +| **সিস্টেম** | `/etc/gitconfig` | `--system` | --- -## 📁 রিপোজিটরি সেটআপ +## 🆕 রিপোজিটরি তৈরি -### নতুন রিপোজিটরি তৈরি করুন: +### বিদ্যমান রিপোজিটরি ক্লোন করুন +**SSH এর মাধ্যমে:** ```bash -# নতুন Git রিপোজিটরি তৈরি করুন -git init +git clone ssh://user@domain.com/repo.git +``` -# বিদ্যমান রিপোজিটরি ক্লোন করুন -git clone <রিপোজিটরি-url> +**HTTPS এর মাধ্যমে:** +```bash +git clone https://domain.com/user/repo.git +``` -# নির্দিষ্ট ডিরেক্টরিতে ক্লোন করুন -git clone <রিপোজিটরি-url> <ডিরেক্টরি-নাম> +### নতুন রিপোজিটরি শুরু করুন + +**বর্তমান ডিরেক্টরিতে রিপোজিটরি তৈরি করুন:** +```bash +git init +``` + +**নির্দিষ্ট ডিরেক্টরিতে রিপোজিটরি তৈরি করুন:** +```bash +git init ``` --- -## 📊 স্ট্যাটাস কমান্ড +## 📝 লোকাল পরিবর্তন -### আপনার রিপোজিটরির অবস্থা পরীক্ষা করুন: +### স্ট্যাটাস ও পার্থক্য পরীক্ষা করুন +**ওয়ার্কিং ডিরেক্টরির স্ট্যাটাস দেখুন:** ```bash -# রিপোজিটরির বর্তমান অবস্থা দেখুন git status +``` -# সংক্ষিপ্ত ফরম্যাটে অবস্থা দেখুন -git status -s +**ট্র্যাক করা ফাইলের পরিবর্তন দেখুন:** +```bash +git diff +``` -# ট্র্যাক না করা ফাইল উপেক্ষা করে অবস্থা দেখুন -git status --ignored +**নির্দিষ্ট ফাইলের পরিবর্তন দেখুন:** +```bash +git diff +``` -# পরিবর্তিত ফাইলের পার্থক্য দেখুন -git diff +### পরিবর্তন স্টেজিং + +**সব বর্তমান পরিবর্তন যোগ করুন:** +```bash +git add . +``` -# স্টেজিং এরিয়ার পার্থক্য দেখুন -git diff --staged +**নির্দিষ্ট ফাইল যোগ করুন:** +```bash +git add +``` -# ব্রাঞ্চের মধ্যে পার্থক্য দেখুন -git diff <ব্রাঞ্চ১> <ব্রাঞ্চ২> +**ইন্টারঅ্যাক্টিভভাবে ফাইলের অংশ যোগ করুন:** +```bash +git add -p ``` ---- +### পরিবর্তন কমিট করুন -## 📝 ফাইল ম্যানেজমেন্ট +**সব ট্র্যাক করা ফাইলের পরিবর্তন কমিট করুন:** +```bash +git commit -a +``` -### ফাইল যোগ এবং অপসারণ: +**স্টেজ করা পরিবর্তন কমিট করুন:** +```bash +git commit +``` +**বার্তা সহ কমিট করুন:** ```bash -# নির্দিষ্ট ফাইল স্টেজিং এরিয়ায় যোগ করুন -git add <ফাইল> +git commit -m 'message here' +``` -# সব পরিবর্তিত ফাইল যোগ করুন -git add . +**স্টেজিং এড়িয়ে বার্তা সহ কমিট করুন:** +```bash +git commit -am 'message here' +``` -# নির্দিষ্ট ধরনের সব ফাইল যোগ করুন -git add *.txt +**নির্দিষ্ট তারিখে কমিট করুন:** +```bash +git commit --date="`date --date='n day ago'`" -am "" +``` -# ইন্টারঅ্যাক্টিভভাবে যোগ করুন -git add -i +### শেষ কমিট সংশোধন করুন -# রিপোজিটরি এবং ওয়ার্কিং ডিরেক্টরি থেকে ফাইল মুছুন -git rm <ফাইল> +> ⚠️ **সতর্কতা:** প্রকাশিত কমিট সংশোধন করবেন না! -# শুধু রিপোজিটরি থেকে ফাইল মুছুন (ডিরেক্টরিতে রাখুন) -git rm --cached <ফাইল> +**শেষ কমিট সংশোধন করুন:** +```bash +git commit -a --amend +``` -# ফাইল সরান/নাম পরিবর্তন করুন -git mv <উৎস-ফাইল> <গন্তব্য-ফাইল> +**কমিট বার্তা পরিবর্তন না করে সংশোধন করুন:** +```bash +git commit --amend --no-edit ``` ---- +**কমিটারের তারিখ পরিবর্তন করুন:** +```bash +GIT_COMMITTER_DATE="date" git commit --amend +``` -## 💾 কমিট +**লেখকের তারিখ পরিবর্তন করুন:** +```bash +git commit --amend --date="date" +``` -### রিপোজিটরিতে পরিবর্তন সংরক্ষণ করুন: +### পরিবর্তন স্ট্যাশ করা +**বর্তমান পরিবর্তন অস্থায়ীভাবে সংরক্ষণ করুন:** ```bash -# বার্তা সহ কমিট করুন -git commit -m "কমিট বার্তা" +git stash +``` -# সব পরিবর্তিত ফাইল যোগ করে কমিট করুন -git commit -am "কমিট বার্তা" +**শেষ স্ট্যাশ করা পরিবর্তন প্রয়োগ করুন:** +```bash +git stash apply +``` -# শেষ কমিট সংশোধন করুন -git commit --amend +**নির্দিষ্ট স্ট্যাশ প্রয়োগ করুন:** +```bash +git stash apply stash@{stash_number} +``` +> উপলব্ধ স্ট্যাশ দেখতে `git stash list` ব্যবহার করুন -# খালি কমিট করুন (CI/CD ট্রিগারের জন্য উপযোগী) -git commit --allow-empty -m "CI ট্রিগার" +**শেষ স্ট্যাশ মুছুন:** +```bash +git stash drop +``` -# বিস্তারিত বার্তা সহ কমিট করুন (এডিটর খুলবে) -git commit +**অকমিটেড পরিবর্তন অন্য ব্রাঞ্চে স্থানান্তর করুন:** +```bash +git stash +git checkout branch2 +git stash pop ``` --- -## 🌿 ব্রাঞ্চ +## 🔍 অনুসন্ধান -### ব্রাঞ্চের সাথে কাজ করুন: +### টেক্সট অনুসন্ধান +**সব ফাইলে টেক্সট অনুসন্ধান করুন:** ```bash -# সব ব্রাঞ্চ দেখুন -git branch +git grep "Hello" +``` -# রিমোট ব্রাঞ্চ দেখুন -git branch -r +**নির্দিষ্ট ভার্সনে অনুসন্ধান করুন:** +```bash +git grep "Hello" v2.5 +``` -# সব ব্রাঞ্চ দেখুন (লোকাল এবং রিমোট) -git branch -a +### কমিট অনুসন্ধান -# নতুন ব্রাঞ্চ তৈরি করুন -git branch <ব্রাঞ্চ-নাম> +**নির্দিষ্ট কীওয়ার্ড যোগ করা কমিট খুঁজুন:** +```bash +git log -S 'keyword' +``` -# ব্রাঞ্চ পরিবর্তন করুন -git checkout <ব্রাঞ্চ-নাম> +**রেগুলার এক্সপ্রেশন দিয়ে অনুসন্ধান করুন:** +```bash +git log -S 'keyword' --pickaxe-regex +``` -# নতুন ব্রাঞ্চ তৈরি করে সুইচ করুন -git checkout -b <ব্রাঞ্চ-নাম> +--- -# নির্দিষ্ট কমিট থেকে ব্রাঞ্চ তৈরি করুন -git checkout -b <ব্রাঞ্চ-নাম> <কমিট-হ্যাশ> +## 📖 কমিট ইতিহাস -# ব্রাঞ্চ মুছুন -git branch -d <ব্রাঞ্চ-নাম> +### মৌলিক ইতিহাস -# জোর করে ব্রাঞ্চ মুছুন -git branch -D <ব্রাঞ্চ-নাম> +**সব কমিট দেখুন (বিস্তারিত):** +```bash +git log +``` -# বর্তমান ব্রাঞ্চের নাম পরিবর্তন করুন -git branch -m <নতুন-নাম> +**কমিট দেখুন (প্রতিটি এক লাইনে):** +```bash +git log --oneline +``` -# নির্দিষ্ট ব্রাঞ্চের নাম পরিবর্তন করুন -git branch -m <পুরানো-নাম> <নতুন-নাম> +**নির্দিষ্ট লেখকের কমিট দেখুন:** +```bash +git log --author="username" ``` ---- +**নির্দিষ্ট ফাইলের পরিবর্তন দেখুন:** +```bash +git log -p +``` -## 🔀 মার্জ +### উন্নত ইতিহাস -### ব্রাঞ্চের মধ্যে পরিবর্তন মার্জ করুন: +**ব্রাঞ্চ তুলনা করুন:** +```bash +git log --oneline .. --left-right +``` +**কে কখন কী পরিবর্তন করেছে দেখুন:** ```bash -# বর্তমান ব্রাঞ্চে অন্য ব্রাঞ্চ মার্জ করুন -git merge <ব্রাঞ্চ-নাম> +git blame +``` -# ফাস্ট-ফরওয়ার্ড ছাড়া মার্জ করুন (মার্জ কমিট তৈরি করুন) -git merge --no-ff <ব্রাঞ্চ-নাম> +### রেফারেন্স লগ -# শুধু ফাস্ট-ফরওয়ার্ড হলে মার্জ করুন -git merge --ff-only <ব্রাঞ্চ-নাম> +**রেফারেন্স লগ দেখুন:** +```bash +git reflog show +``` -# চলমান মার্জ বাতিল করুন -git merge --abort +**রেফারেন্স লগ মুছুন:** +```bash +git reflog delete +``` -# কনফ্লিক্ট সমাধানের পর মার্জ চালিয়ে যান -git merge --continue +--- + +## 📁 সরানো / নাম পরিবর্তন + +**একটি ফাইলের নাম পরিবর্তন করুন:** +```bash +git mv Index.txt Index.html ``` --- -## 🌐 রিমোট রিপোজিটরি +## 🌿 ব্রাঞ্চ ও ট্যাগ -### রিমোট রিপোজিটরি পরিচালনা: +### ব্রাঞ্চ তালিকা +**লোকাল ব্রাঞ্চ তালিকা দেখুন:** ```bash -# রিমোট রিপোজিটরি দেখুন -git remote - -# URL সহ রিমোট রিপোজিটরি দেখুন -git remote -v +git branch +``` -# রিমোট রিপোজিটরি যোগ করুন -git remote add <নাম> +**সব ব্রাঞ্চ তালিকা দেখুন (লোকাল + রিমোট):** +```bash +git branch -a +``` -# রিমোট রিপোজিটরির URL পরিবর্তন করুন -git remote set-url <নাম> <নতুন-url> +**রিমোট ব্রাঞ্চ তালিকা দেখুন:** +```bash +git branch -r +``` -# রিমোট রিপোজিটরি মুছুন -git remote remove <নাম> +**মার্জ হওয়া ব্রাঞ্চ তালিকা দেখুন:** +```bash +git branch --merged +``` -# রিমোট রিপোজিটরিতে পরিবর্তন পুশ করুন -git push <রিমোট> <ব্রাঞ্চ> +### ব্রাঞ্চ পরিবর্তন ও তৈরি -# ব্রাঞ্চ পুশ করে ট্র্যাকিং সেট করুন -git push -u <রিমোট> <ব্রাঞ্চ> +**বিদ্যমান ব্রাঞ্চে সুইচ করুন:** +```bash +git checkout +``` -# সব ব্রাঞ্চ পুশ করুন -git push --all +**নতুন ব্রাঞ্চ তৈরি করে সুইচ করুন:** +```bash +git checkout -b +``` -# ট্যাগ পুশ করুন -git push --tags +**আগের ব্রাঞ্চে সুইচ করুন:** +```bash +git checkout - +``` -# রিমোট রিপোজিটরি থেকে পরিবর্তন ডাউনলোড করুন -git pull <রিমোট> <ব্রাঞ্চ> +**বিদ্যমান ব্রাঞ্চ থেকে ব্রাঞ্চ তৈরি করুন:** +```bash +git checkout -b +``` -# মার্জ ছাড়া পরিবর্তন ডাউনলোড করুন -git fetch <রিমোট> +**নির্দিষ্ট কমিট থেকে ব্রাঞ্চ তৈরি করুন:** +```bash +git checkout -b +``` -# সব রিমোট ব্রাঞ্চ ডাউনলোড করুন -git fetch --all +**সুইচ না করে ব্রাঞ্চ তৈরি করুন:** +```bash +git branch ``` ---- +**ট্র্যাকিং ব্রাঞ্চ তৈরি করুন:** +```bash +git branch --track +``` -## 📚 হিস্ট্রি এবং লগ +### ব্রাঞ্চ অপারেশন -### কমিট ইতিহাস অন্বেষণ করুন: +**ভিন্ন ব্রাঞ্চ থেকে একটি ফাইল চেকআউট করুন:** +```bash +git checkout -- +``` +**অন্য ব্রাঞ্চ থেকে নির্দিষ্ট কমিট প্রয়োগ করুন:** ```bash -# কমিট ইতিহাস দেখুন -git log +git cherry-pick +``` -# প্রতি কমিটের জন্য এক লাইনে ইতিহাস দেখুন -git log --oneline +**বর্তমান ব্রাঞ্চের নাম পরিবর্তন করুন:** +```bash +git branch -m +``` -# গ্রাফ সহ ইতিহাস দেখুন -git log --graph +**লোকাল ব্রাঞ্চ মুছুন:** +```bash +git branch -d +``` -# নির্দিষ্ট ফাইলের ইতিহাস দেখুন -git log <ফাইল> +**জোর করে লোকাল ব্রাঞ্চ মুছুন:** +```bash +git branch -D +``` +> ⚠️ **সতর্কতা:** আপনি মার্জ না হওয়া পরিবর্তন হারাবেন! -# কমিট পরিসংখ্যান দেখুন -git log --stat +### ট্যাগ -# প্রতি কমিটের পরিবর্তন দেখুন -git log -p +**HEAD-এ ট্যাগ তৈরি করুন:** +```bash +git tag +``` -# শেষ N কমিট দেখুন -git log -n <সংখ্যা> +**টীকাযুক্ত ট্যাগ তৈরি করুন:** +```bash +git tag -a +``` -# তারিখের মধ্যে কমিট দেখুন -git log --since="2023-01-01" --until="2023-12-31" +**বার্তা সহ ট্যাগ তৈরি করুন:** +```bash +git tag -am 'message here' +``` -# লেখক অনুযায়ী কমিট দেখুন -git log --author="লেখকের নাম" +**সব ট্যাগ তালিকা দেখুন:** +```bash +git tag +``` -# কমিট বার্তায় অনুসন্ধান করুন -git log --grep="কীওয়ার্ড" +**বার্তা সহ ট্যাগ তালিকা দেখুন:** +```bash +git tag -n ``` --- -## 🔍 অনুসন্ধান +## 🔄 আপডেট ও প্রকাশ -### ইতিহাস এবং বিষয়বস্তুতে অনুসন্ধান: +### রিমোট ব্যবস্থাপনা +**কনফিগার করা রিমোট তালিকা দেখুন:** ```bash -# কমিট বার্তায় অনুসন্ধান করুন -git log --grep="কীওয়ার্ড" +git remote -v +``` -# কোডের পরিবর্তনে অনুসন্ধান করুন -git log -S "কোডের অংশ" +**রিমোটের তথ্য দেখুন:** +```bash +git remote show +``` -# কাজের ফাইলে অনুসন্ধান করুন -git grep "প্যাটার্ন" +**নতুন রিমোট যোগ করুন:** +```bash +git remote add +``` -# নির্দিষ্ট কমিটে অনুসন্ধান করুন -git grep "প্যাটার্ন" <কমিট-হ্যাশ> +**রিমোটের নাম পরিবর্তন করুন:** +```bash +git remote rename +``` -# বড়/ছোট হাতের অক্ষর উপেক্ষা করে অনুসন্ধান -git grep -i "প্যাটার্ন" +**রিমোট মুছুন:** +```bash +git remote rm +``` +> ℹ️ **নোট:** এটি শুধুমাত্র লোকালভাবে রিমোট রেফারেন্স মুছে দেয়, রিমোট রিপোজিটরি নিজে নয়। -# পূর্ণ শব্দ অনুসন্ধান -git grep -w "শব্দ" +### ফেচ ও পুল -# লাইন নম্বর দেখান -git grep -n "প্যাটার্ন" +**মার্জ না করে পরিবর্তন ডাউনলোড করুন:** +```bash +git fetch ``` ---- - -## 📁 সরানো/নাম পরিবর্তন +**পরিবর্তন ডাউনলোড ও মার্জ করুন:** +```bash +git pull +``` -### ফাইল সরানো এবং নাম পরিবর্তন: +**মেইন ব্রাঞ্চ থেকে পরিবর্তন আনুন:** +```bash +git pull origin master +``` +**রিবেস সহ পুল করুন:** ```bash -# ফাইলের নাম পরিবর্তন করুন -git mv পুরানো_নাম.txt নতুন_নাম.txt +git pull --rebase +``` -# ফাইল ফোল্ডারে সরান -git mv ফাইল.txt ফোল্ডার/ +### পুশ ও প্রকাশ -# ফোল্ডারের নাম পরিবর্তন করুন -git mv পুরানো_ফোল্ডার নতুন_ফোল্ডার +**লোকাল পরিবর্তন প্রকাশ করুন:** +```bash +git push +``` -# git mv ছাড়া নাম পরিবর্তনের প্রক্রিয়া -mv পুরানো_নাম.txt নতুন_নাম.txt -git add নতুন_নাম.txt -git rm পুরানো_নাম.txt +**রিমোট ব্রাঞ্চ মুছুন:** +```bash +# Git v1.7.0+ +git push --delete -# লগে নাম পরিবর্তন খুঁজুন -git log --follow ফাইল.txt +# Git v1.5.0+ +git push : +``` -# সরানো ট্র্যাক করুন -git log --stat -M +**ট্যাগ প্রকাশ করুন:** +```bash +git push --tags ``` --- -## 🏷️ ট্যাগ +## 🔀 মার্জ ও রিবেস -### ভার্সন ট্যাগ পরিচালনা: +### মার্জ অপারেশন +**বর্তমান HEAD-এ ব্রাঞ্চ মার্জ করুন:** ```bash -# সব ট্যাগ দেখুন -git tag - -# হালকা ট্যাগ তৈরি করুন -git tag <ট্যাগ-নাম> - -# টীকাযুক্ত ট্যাগ তৈরি করুন -git tag -a <ট্যাগ-নাম> -m "ট্যাগ বার্তা" - -# নির্দিষ্ট কমিটে ট্যাগ তৈরি করুন -git tag -a <ট্যাগ-নাম> <কমিট-হ্যাশ> +git merge +``` -# ট্যাগের তথ্য দেখুন -git show <ট্যাগ-নাম> +**গ্লোবালভাবে মার্জ টুল কনফিগার করুন:** +```bash +git config --global merge.tool meld +``` -# লোকাল ট্যাগ মুছুন -git tag -d <ট্যাগ-নাম> +**কনফিগার করা মার্জ টুল ব্যবহার করুন:** +```bash +git mergetool +``` -# রিমোট ট্যাগ মুছুন -git push --delete <রিমোট> <ট্যাগ-নাম> +### রিবেস অপারেশন -# নির্দিষ্ট ট্যাগ পুশ করুন -git push <রিমোট> <ট্যাগ-নাম> +> ⚠️ **সতর্কতা:** প্রকাশিত কমিট রিবেস করবেন না! -# সব ট্যাগ পুশ করুন -git push <রিমোট> --tags +**বর্তমান HEAD ব্রাঞ্চে রিবেস করুন:** +```bash +git rebase ``` ---- +**রিবেস বাতিল করুন:** +```bash +git rebase --abort +``` -## ↩️ পরিবর্তন পূর্বাবস্থায় ফেরানো +**কনফ্লিক্ট সমাধানের পর রিবেস চালিয়ে যান:** +```bash +git rebase --continue +``` -### পরিবর্তন ফিরিয়ে আনুন: +### কনফ্লিক্ট সমাধান +**ফাইলকে সমাধানকৃত হিসেবে চিহ্নিত করুন:** ```bash -# নির্দিষ্ট ফাইলের পরিবর্তন বাতিল করুন -git checkout <ফাইল> - -# সব অকমিট পরিবর্তন বাতিল করুন -git checkout . +git add +``` -# নির্দিষ্ট ভার্সনে ফাইল ফিরিয়ে আনুন -git checkout <কমিট-হ্যাশ> <ফাইল> +**সমাধানকৃত ফাইল মুছুন:** +```bash +git rm +``` -# স্টেজিং এরিয়া থেকে ফাইল সরান -git reset <ফাইল> +### কমিট স্কোয়াশ করা -# স্টেজিং এরিয়া থেকে সব ফাইল সরান -git reset +**স্কোয়াশ করার জন্য ইন্টারঅ্যাক্টিভ রিবেস:** +```bash +git rebase -i +``` -# পূর্ববর্তী কমিটে ফিরে যান (পরিবর্তন রাখুন) -git reset --soft HEAD~1 +**স্কোয়াশ কনফিগারেশনের উদাহরণ:** +``` +# আগে +pick +pick +pick + +# পরে (commit_id2 এবং commit_id3 কে commit_id তে স্কোয়াশ করুন) +pick +squash +squash +``` -# পূর্ববর্তী কমিটে ফিরে যান (পরিবর্তন বাতিল করুন) -git reset --hard HEAD~1 +--- -# নির্দিষ্ট কমিটে ফিরে যান -git reset --hard <কমিট-হ্যাশ> +## ↩️ পূর্বাবস্থায় ফেরানো -# অন্য কমিট বাতিল করে নতুন কমিট তৈরি করুন -git revert <কমিট-হ্যাশ> +### পরিবর্তন বাতিল করুন -# একাধিক কমিট বাতিল করুন -git revert <হ্যাশ-থেকে>..<হ্যাশ-পর্যন্ত> +**সব লোকাল পরিবর্তন বাতিল করুন:** +```bash +git reset --hard HEAD ``` ---- - -## 📦 স্ট্যাশ - -### অস্থায়ীভাবে কাজ সংরক্ষণ করুন: +**সব ফাইল আনস্টেজ করুন:** +```bash +git reset HEAD +``` +**নির্দিষ্ট ফাইলের পরিবর্তন বাতিল করুন:** ```bash -# বর্তমান পরিবর্তন স্ট্যাশে সংরক্ষণ করুন -git stash +git checkout HEAD +``` -# বর্ণনামূলক বার্তা সহ সংরক্ষণ করুন -git stash save "বর্ণনামূলক বার্তা" +### রিসেট অপারেশন -# সব স্ট্যাশ দেখুন -git stash list +**আগের কমিটে রিসেট করুন (সব পরিবর্তন বাতিল করুন):** +```bash +git reset --hard +``` -# শেষ স্ট্যাশ প্রয়োগ করুন -git stash apply +**রিমোট ব্রাঞ্চের অবস্থায় রিসেট করুন:** +```bash +git reset --hard +# উদাহরণ: git reset --hard upstream/master +``` -# নির্দিষ্ট স্ট্যাশ প্রয়োগ করুন -git stash apply stash@{0} +**পরিবর্তন আনস্টেজড হিসেবে রেখে রিসেট করুন:** +```bash +git reset +``` -# শেষ স্ট্যাশ প্রয়োগ করে মুছে ফেলুন -git stash pop +**অকমিটেড লোকাল পরিবর্তন রেখে রিসেট করুন:** +```bash +git reset --keep +``` -# নির্দিষ্ট স্ট্যাশ মুছুন -git stash drop stash@{0} +### কমিট রিভার্ট -# সব স্ট্যাশ মুছুন -git stash clear +**কমিট রিভার্ট করুন (বিপরীত পরিবর্তন সহ নতুন কমিট তৈরি করুন):** +```bash +git revert +``` -# স্ট্যাশের পরিবর্তন দেখুন -git stash show stash@{0} +### উপেক্ষিত ফাইল পরিষ্কার করুন -# স্ট্যাশ থেকে ব্রাঞ্চ তৈরি করুন -git stash branch <ব্রাঞ্চ-নাম> stash@{0} +**ভুলবশত কমিট হওয়া উপেক্ষিত ফাইল মুছুন:** +```bash +git rm -r --cached . +git add . +git commit -m "remove ignored files" ``` --- ## 🌊 Git Flow -Git Flow একটি ব্রাঞ্চিং মডেল যা প্রজেক্ট রিলিজের চারপাশে ডিজাইন করা কঠোর ওয়ার্কফ্লো সংজ্ঞায়িত করে। +**উন্নত Git-flow:** [git-flow-avh](https://github.com/petervanderdoes/gitflow-avh) -### মূল ব্রাঞ্চ: -- **master/main**: প্রোডাকশন কোড -- **develop**: মূল ডেভেলপমেন্ট ব্রাঞ্চ +### 📋 সূচিপত্র +- [🔧 সেটআপ](#setup-1) +- [🚀 শুরু করা](#getting-started) +- [✨ ফিচার](#features) +- [🎁 রিলিজ তৈরি](#make-a-release) +- [🔥 হটফিক্স](#hotfixes) +- [📊 কমান্ড ওভারভিউ](#commands-overview) -### সাপোর্ট ব্রাঞ্চ: -- **feature**: নতুন ফিচারের জন্য -- **release**: নতুন ভার্সন প্রস্তুতির জন্য -- **hotfix**: প্রোডাকশনে জরুরি সংশোধনের জন্য +--- -### Git Flow কমান্ড: +### 🔧 সেটআপ {#setup-1} +> **পূর্বশর্ত:** কার্যকরী Git ইনস্টলেশন প্রয়োজন। Git-flow macOS, Linux এবং Windows-এ কাজ করে। + +**macOS (Homebrew):** ```bash -# git flow শুরু করুন -git flow init +brew install git-flow-avh +``` -# নতুন ফিচার শুরু করুন -git flow feature start <ফিচার-নাম> +**macOS (MacPorts):** +```bash +port install git-flow +``` -# ফিচার শেষ করুন -git flow feature finish <ফিচার-নাম> +**Linux (Debian-ভিত্তিক):** +```bash +sudo apt-get install git-flow +``` -# ফিচার প্রকাশ করুন -git flow feature publish <ফিচার-নাম> +**Windows (Cygwin):** +> wget এবং util-linux প্রয়োজন +```bash +wget -q -O - --no-check-certificate https://raw.githubusercontent.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh install | bash +``` -# রিলিজ শুরু করুন -git flow release start <ভার্সন> +--- -# রিলিজ শেষ করুন -git flow release finish <ভার্সন> +### 🚀 শুরু করা -# হটফিক্স শুরু করুন -git flow hotfix start <ভার্সন> +আপনার প্রজেক্ট সেটআপ কাস্টমাইজ করতে Git-flow-এর ইনিশিয়ালাইজেশন প্রয়োজন। -# হটফিক্স শেষ করুন -git flow hotfix finish <ভার্সন> +**ইনিশিয়ালাইজ করুন (ইন্টারঅ্যাক্টিভ):** +```bash +git flow init ``` +> আপনাকে ব্রাঞ্চ নামকরণ নিয়ম সম্পর্কে প্রশ্নের উত্তর দিতে হবে। ডিফল্ট মান সুপারিশ করা হয়। -### Git Flow ছাড়া ওয়ার্কফ্লো: +**ইনিশিয়ালাইজ করুন (ডিফল্ট ব্যবহার করুন):** +```bash +git flow init -d +``` -![Git Flow Commands](../Img/git-flow-commands-without-flow.png) +--- +### ✨ ফিচার + +ফিচারগুলো আসন্ন রিলিজের জন্য নতুন কার্যকারিতা ডেভেলপ করতে ব্যবহৃত হয়। এগুলো সাধারণত শুধুমাত্র ডেভেলপার রিপোজিটরিতে থাকে। + +**নতুন ফিচার শুরু করুন:** ```bash -# ফিচার ব্রাঞ্চ তৈরি করুন -git checkout develop -git checkout -b feature/নতুন-ফিচার +git flow feature start MYFEATURE +``` +> 'develop' ভিত্তিক ফিচার ব্রাঞ্চ তৈরি করে এবং সেখানে সুইচ করে -# ফিচারে কাজ করুন -git add . -git commit -m "নতুন ফিচার যোগ করুন" +**ফিচার শেষ করুন:** +```bash +git flow feature finish MYFEATURE +``` +> এটি করবে: +> 1. MYFEATURE কে 'develop'-এ মার্জ করবে +> 2. ফিচার ব্রাঞ্চ মুছে দেবে +> 3. 'develop'-এ ফিরে যাবে -# develop এ ফিচার মার্জ করুন -git checkout develop -git merge --no-ff feature/নতুন-ফিচার -git branch -d feature/নতুন-ফিচার +**ফিচার প্রকাশ করুন (সহযোগিতার জন্য):** +```bash +git flow feature publish MYFEATURE +``` -# রিলিজ ব্রাঞ্চ তৈরি করুন -git checkout develop -git checkout -b release/1.0.0 +**প্রকাশিত ফিচার আনুন:** +```bash +git flow feature pull origin MYFEATURE +``` -# রিলিজ সম্পন্ন করুন -git checkout master -git merge --no-ff release/1.0.0 -git tag -a 1.0.0 -m "ভার্সন 1.0.0" -git checkout develop -git merge --no-ff release/1.0.0 -git branch -d release/1.0.0 +**অরিজিন ফিচার ট্র্যাক করুন:** +```bash +git flow feature track MYFEATURE ``` --- -## 💡 উপযোগী টিপস +### 🎁 রিলিজ তৈরি -### উপযোগী অ্যালিয়াস: +রিলিজ নতুন প্রোডাকশন রিলিজের প্রস্তুতি সমর্থন করে, ছোট বাগ ফিক্স এবং মেটা-ডেটা প্রস্তুত করার অনুমতি দেয়। +**রিলিজ শুরু করুন:** ```bash -# উপযোগী অ্যালিয়াস সেট করুন -git config --global alias.st status -git config --global alias.co checkout -git config --global alias.br branch -git config --global alias.ci commit -git config --global alias.unstage 'reset HEAD --' -git config --global alias.last 'log -1 HEAD' -git config --global alias.visual '!gitk' +git flow release start RELEASE [BASE] ``` +> 'develop' থেকে রিলিজ ব্রাঞ্চ তৈরি করে। ঐচ্ছিকভাবে [BASE] কমিট SHA-1 উল্লেখ করুন। -### .gitignore ফাইল: +**রিলিজ প্রকাশ করুন:** +```bash +git flow release publish RELEASE +``` +**রিমোট রিলিজ ট্র্যাক করুন:** ```bash -# .gitignore ফাইল তৈরি করুন -echo "node_modules/" >> .gitignore -echo "*.log" >> .gitignore -echo ".env" >> .gitignore +git flow release track RELEASE +``` -# ইতিমধ্যে ট্র্যাক করা ফাইল উপেক্ষা করুন -git rm --cached <ফাইল> -echo "<ফাইল>" >> .gitignore -git add .gitignore -git commit -m ".gitignore এ ফাইল যোগ করুন" +**রিলিজ শেষ করুন:** +```bash +git flow release finish RELEASE ``` +> এটি করবে: +> 1. রিলিজ ব্রাঞ্চকে 'master'-এ মার্জ করবে +> 2. রিলিজ ট্যাগ করবে +> 3. 'develop'-এ রিলিজ ব্যাক-মার্জ করবে +> 4. রিলিজ ব্রাঞ্চ মুছে দেবে + +> 💡 **ভুলবেন না:** `git push --tags` দিয়ে আপনার ট্যাগ পুশ করুন --- -## 🌍 অন্যান্য ভাষা +### 🔥 হটফিক্স -এই Git চিট শিট নিম্নলিখিত ভাষায় উপলব্ধ: - -- 🇺🇸 [English](../README.md) -- 🇸🇦 [العربية](git-cheat-sheet-ar.md) -- 🇧🇩 **বাংলা** (বর্তমান) -- 🇩🇪 [Deutsch](git-cheat-sheet-de.md) -- 🇬🇷 [Ελληνικά](git-cheat-sheet-el.md) -- 🇪🇸 [Español](git-cheat-sheet-es.md) -- 🇮🇳 [हिन्दी](git-cheat-sheet-hi.md) -- 🇰🇷 [한국어](git-cheat-sheet-ko.md) -- 🇵🇱 [Polski](git-cheat-sheet-pl.md) -- 🇧🇷 [Português](git-cheat-sheet-pt_BR.md) -- 🇹🇷 [Türkçe](git-cheat-sheet-tr.md) -- 🇨🇳 [中文](git-cheat-sheet-zh.md) +হটফিক্স লাইভ প্রোডাকশন ভার্সনের গুরুতর সমস্যা সমাধান করে। এগুলো master-এর সংশ্লিষ্ট ট্যাগ থেকে ব্রাঞ্চ করে। + +**হটফিক্স শুরু করুন:** +```bash +git flow hotfix start VERSION [BASENAME] +``` + +**হটফিক্স শেষ করুন:** +```bash +git flow hotfix finish VERSION +``` +> 'develop' এবং 'master' উভয়েই ব্যাক-মার্জ করে এবং master মার্জ ট্যাগ করে --- -## 🤝 অবদান +### 📊 কমান্ড ওভারভিউ -আমরা অবদানকে স্বাগত জানাই! এই প্রকল্পটি উন্নত করতে সাহায্য করুন: +

+ Git Flow Commands +

-1. **সমস্যা রিপোর্ট করুন**: ত্রুটি বা উন্নতির পরামর্শ শেয়ার করুন -2. **নতুন ভাষা যোগ করুন**: অনুবাদ তৈরি করুন বা বিদ্যমান উন্নত করুন -3. **বিষয়বস্তু উন্নত করুন**: নতুন কমান্ড, উদাহরণ বা ব্যাখ্যা যোগ করুন -4. **প্রতিক্রিয়া দিন**: আপনার অভিজ্ঞতা এবং পরামর্শ শেয়ার করুন +### 🌊 Git Flow স্কিমা -### কিভাবে অবদান রাখবেন: -- [GitHub এ ইস্যু খুলুন](https://github.com/arslanbilal/git-cheat-sheet/issues) -- Pull request জমা দিন -- ডকুমেন্টেশন উন্নতির পরামর্শ দিন +

+ Git Flow Schema +

--- -## 📄 লাইসেন্স -এই প্রকল্পটি MIT লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত। বিস্তারিত জানতে [LICENSE](../LICENSE) ফাইল দেখুন। +## 🌍 অন্যান্য ভাষা + +এই চিট শিটটি একাধিক ভাষায় উপলব্ধ: + +| ভাষা | লিংক | +|----------|------| +| 🇸🇦 আরবি | [git-cheat-sheet-ar.md](git-cheat-sheet-ar.md) | +| 🇧🇩 **বাংলা** | **(বর্তমান)** | +| 🇧🇷 ব্রাজিলিয়ান পর্তুগিজ | [git-cheat-sheet-pt_BR.md](git-cheat-sheet-pt_BR.md) | +| 🇨🇳 চীনা | [git-cheat-sheet-zh.md](git-cheat-sheet-zh.md) | +| 🇩🇪 জার্মান | [git-cheat-sheet-de.md](git-cheat-sheet-de.md) | +| 🇬🇷 গ্রিক | [git-cheat-sheet-el.md](git-cheat-sheet-el.md) | +| 🇮🇳 হিন্দি | [git-cheat-sheet-hi.md](git-cheat-sheet-hi.md) | +| 🇰🇷 কোরিয়ান | [git-cheat-sheet-ko.md](git-cheat-sheet-ko.md) | +| 🇵🇱 পোলিশ | [git-cheat-sheet-pl.md](git-cheat-sheet-pl.md) | +| 🇪🇸 স্প্যানিশ | [git-cheat-sheet-es.md](git-cheat-sheet-es.md) | +| 🇹🇷 তুর্কি | [git-cheat-sheet-tr.md](git-cheat-sheet-tr.md) | +| 🇺🇸 ইংরেজি | [README.md](../README.md) | --- -## 📖 অতিরিক্ত সম্পদ +## 🤝 অবদান + +আমরা অবদানকে স্বাগত জানাই! আপনি যা করতে পারেন: + +- 🐛 বাগ বা টাইপো রিপোর্ট করুন +- ✨ নতুন Git কমান্ড যোগ করুন +- 🌍 নতুন ভাষায় অনুবাদ করুন +- 💡 ব্যাখ্যা উন্নত করুন +- 📝 ফরম্যাটিং উন্নত করুন + +**কিভাবে অবদান রাখবেন:** +1. এই রিপোজিটরি ফর্ক করুন +2. আপনার ফিচার ব্রাঞ্চ তৈরি করুন (`git checkout -b feature/AmazingFeature`) +3. আপনার পরিবর্তন কমিট করুন (`git commit -m 'Add some AmazingFeature'`) +4. ব্রাঞ্চে পুশ করুন (`git push origin feature/AmazingFeature`) +5. একটি Pull Request খুলুন + +--- + +## 📄 লাইসেন্স -- [Git অফিসিয়াল ডকুমেন্টেশন](https://git-scm.com/doc) -- [Atlassian Git টিউটোরিয়াল](https://www.atlassian.com/git/tutorials) -- [GitHub Git চিট শিট](https://education.github.com/git-cheat-sheet-education.pdf) -- [ইন্টারঅ্যাক্টিভ Git টিউটোরিয়াল](https://learngitbranching.js.org/) +এই প্রকল্পটি ওপেন সোর্স এবং [MIT লাইসেন্স](../LICENSE)-এর অধীনে উপলব্ধ। --- -
- ⭐ এই চিট শিট যদি উপকারী হয় তাহলে এটিকে স্টার দিন!
- Git এর সাথে হ্যাপি কোডিং! 🚀 -
+

+ ⭐ এই রিপোজিটরি সহায়ক হলে স্টার দিন! +

diff --git a/other-sheets/git-cheat-sheet-de.md b/other-sheets/git-cheat-sheet-de.md index 114c0f3..4cbe850 100644 --- a/other-sheets/git-cheat-sheet-de.md +++ b/other-sheets/git-cheat-sheet-de.md @@ -1,8 +1,9 @@ -# Git Cheat Sheet Deutsch +# Git und Git Flow Cheat Sheet +[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -![Git Logo](../Img/git-logo.png) - -Dieses umfassende Git-Cheat-Sheet hilft Ihnen dabei, Git-Befehle zu beherrschen, ohne alles auswendig zu lernen. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, dieser Leitfaden bietet eine schnelle Referenz für wichtige Git-Operationen. +

+ Git +

--- @@ -20,7 +21,6 @@ Dieses umfassende Git-Cheat-Sheet hilft Ihnen dabei, Git-Befehle zu beherrschen, ## 📋 Inhaltsverzeichnis -- [📖 Über](#-Über) - [🔧 Setup](#-setup) - [⚙️ Konfigurationsdateien](#️-konfigurationsdateien) - [🆕 Repository erstellen](#-repository-erstellen) @@ -32,13 +32,8 @@ Dieses umfassende Git-Cheat-Sheet hilft Ihnen dabei, Git-Befehle zu beherrschen, - [🔄 Aktualisieren & Veröffentlichen](#-aktualisieren--veröffentlichen) - [🔀 Merge & Rebase](#-merge--rebase) - [↩️ Rückgängig machen](#️-rückgängig-machen) -- [📦 Zwischenspeichern (Stash)](#-zwischenspeichern-stash) - [🌊 Git Flow](#-git-flow) -- [💡 Nützliche Tipps](#-nützliche-tipps) - [🌍 Andere Sprachen](#-andere-sprachen) -- [🤝 Beitragen](#-beitragen) -- [📄 Lizenz](#-lizenz) -- [📖 Zusätzliche Ressourcen](#-zusätzliche-ressourcen) --- @@ -661,62 +656,6 @@ git commit -m "ignorierte Dateien entfernen" --- -## 📦 Zwischenspeichern (Stash) - -### Änderungen temporär speichern - -**Aktuelle Änderungen zwischenspeichern:** -```bash -git stash -``` - -**Mit beschreibender Nachricht zwischenspeichern:** -```bash -git stash save "Beschreibende Nachricht" -``` - -**Alle Stashes anzeigen:** -```bash -git stash list -``` - -**Letzten Stash anwenden:** -```bash -git stash apply -``` - -**Spezifischen Stash anwenden:** -```bash -git stash apply stash@{0} -``` - -**Letzten Stash anwenden und entfernen:** -```bash -git stash pop -``` - -**Spezifischen Stash entfernen:** -```bash -git stash drop stash@{0} -``` - -**Alle Stashes entfernen:** -```bash -git stash clear -``` - -**Änderungen in einem Stash anzeigen:** -```bash -git stash show stash@{0} -``` - -**Branch aus Stash erstellen:** -```bash -git stash branch stash@{0} -``` - ---- - ## 🌊 Git Flow **Verbesserter Git-flow:** [git-flow-avh](https://github.com/petervanderdoes/gitflow-avh) @@ -876,52 +815,6 @@ git flow hotfix finish VERSION --- -## 💡 Nützliche Tipps - -### Nützliche Aliases - -**Nützliche Aliases konfigurieren:** -```bash -git config --global alias.st status -git config --global alias.co checkout -git config --global alias.br branch -git config --global alias.ci commit -git config --global alias.unstage 'reset HEAD --' -git config --global alias.last 'log -1 HEAD' -git config --global alias.visual '!gitk' -``` - -### .gitignore Dateien - -**.gitignore Datei erstellen:** -```bash -echo "node_modules/" >> .gitignore -echo "*.log" >> .gitignore -echo ".env" >> .gitignore - -# Bereits verfolgte Dateien ignorieren -git rm --cached -echo "" >> .gitignore -git add .gitignore -git commit -m "Datei zu .gitignore hinzufügen" -``` - -### Git Hooks - -**Lokale Hooks konfigurieren:** -```bash -# Pre-commit Hook (Beispiel) -cat > .git/hooks/pre-commit << 'EOF' -#!/bin/sh -# Tests vor jedem Commit ausführen -npm test -EOF - -chmod +x .git/hooks/pre-commit -``` - ---- - ## 🌍 Andere Sprachen Dieses Cheat-Sheet ist in mehreren Sprachen verfügbar: @@ -933,11 +826,12 @@ Dieses Cheat-Sheet ist in mehreren Sprachen verfügbar: | 🇧🇩 Bengali | [git-cheat-sheet-bn.md](./git-cheat-sheet-bn.md) | | 🇧🇷 Brasilianisches Portugiesisch | [git-cheat-sheet-pt_BR.md](./git-cheat-sheet-pt_BR.md) | | 🇨🇳 Chinesisch | [git-cheat-sheet-zh.md](./git-cheat-sheet-zh.md) | -| 🇪🇸 Spanisch | [git-cheat-sheet-es.md](./git-cheat-sheet-es.md) | +| 🇩🇪 **Deutsch (aktuell)** | | | 🇬🇷 Griechisch | [git-cheat-sheet-el.md](./git-cheat-sheet-el.md) | | 🇮🇳 Hindi | [git-cheat-sheet-hi.md](./git-cheat-sheet-hi.md) | | 🇰🇷 Koreanisch | [git-cheat-sheet-ko.md](./git-cheat-sheet-ko.md) | | 🇵🇱 Polnisch | [git-cheat-sheet-pl.md](./git-cheat-sheet-pl.md) | +| 🇪🇸 Spanisch | [git-cheat-sheet-es.md](./git-cheat-sheet-es.md) | | 🇹🇷 Türkisch | [git-cheat-sheet-tr.md](./git-cheat-sheet-tr.md) | --- @@ -967,17 +861,6 @@ Dieses Projekt ist Open Source und unter der [MIT-Lizenz](LICENSE) verfügbar. --- -## 📖 Zusätzliche Ressourcen - -- [Offizielle Git-Dokumentation](https://git-scm.com/doc) -- [Atlassian Git-Tutorials](https://www.atlassian.com/git/tutorials) -- [GitHub Git Cheat Sheet](https://education.github.com/git-cheat-sheet-education.pdf) -- [Interaktives Git-Tutorial](https://learngitbranching.js.org/) -- [Pro Git Buch (kostenlos)](https://git-scm.com/book/de/v2) -- [Git Workflows](https://www.atlassian.com/git/tutorials/comparing-workflows) - ---- -

⭐ Geben Sie diesem Repository einen Stern, wenn es hilfreich war!

diff --git a/other-sheets/git-cheat-sheet-el.md b/other-sheets/git-cheat-sheet-el.md index ae20ff7..4fc7042 100644 --- a/other-sheets/git-cheat-sheet-el.md +++ b/other-sheets/git-cheat-sheet-el.md @@ -1,677 +1,865 @@ -# Git Cheat Sheet Ελληνικά +# Σύντομος Οδηγός Git και Git Flow +[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -![Git Logo](../Img/git-logo.png) - -Ένας γρήγορος οδηγός αναφοράς για τις πιο χρησιμοποιούμενες εντολές Git, οργανωμένες σε κατηγορίες για εύκολη χρήση. +

+ Git +

--- -## 📖 Σχετικά με τον Οδηγό +## 📖 Σχετικά -Αυτός ο περιεκτικός οδηγός αναφοράς Git είναι μια πλήρης αναφορά για όλους όσους θέλουν να βελτιώσουν τη ροή εργασίας τους με το Git. Από αρχάριους που ξεκινούν το ταξίδι τους με το Git μέχρι έμπειρους προγραμματιστές, αυτός ο οδηγός παρέχει οργανωμένες και κατηγοριοποιημένες εντολές για να επιταχύνει το ταξίδι ανάπτυξής σας. +Αυτός ο περιεκτικός σύντομος οδηγός Git σας βοηθά να κατακτήσετε τις εντολές Git χωρίς να χρειάζεται να τις απομνημονεύσετε όλες. Είτε είστε αρχάριος είτε έμπειρος προγραμματιστής, αυτός ο οδηγός παρέχει γρήγορη αναφορά στις βασικές λειτουργίες Git. -### Βασικά Χαρακτηριστικά: -- **Οργανωμένες κατηγορίες**: Οι εντολές είναι ταξινομημένες σε σαφείς και λογικές ομάδες -- **Πρακτικά παραδείγματα**: Με περιπτώσεις χρήσης από τον πραγματικό κόσμο -- **Φιλικό προς αρχάριους**: Με σαφείς εξηγήσεις και συμβουλές -- **Γρήγορη αναφορά**: Γρήγορη πρόσβαση στις απαραίτητες εντολές +**Οι συνεισφορές είναι ευπρόσδεκτες!** Μπορείτε να: +- Διορθώσετε γραμματικά λάθη +- Προσθέσετε νέες εντολές +- Μεταφράσετε στη γλώσσα σας +- Βελτιώσετε τις εξηγήσεις --- - -## 📑 Πίνακας Περιεχομένων - -- [📖 Σχετικά με τον Οδηγό](#σχετικά-με-τον-οδηγό) -- [🔧 Αρχική Ρύθμιση](#αρχική-ρύθμιση) -- [📁 Ρύθμιση Αποθετηρίου](#ρύθμιση-αποθετηρίου) -- [📊 Εντολές Κατάστασης](#εντολές-κατάστασης) -- [📝 Διαχείριση Αρχείων](#διαχείριση-αρχείων) -- [💾 Υποβολές (Commits)](#υποβολές-commits) -- [🌿 Κλάδοι (Branches)](#κλάδοι-branches) -- [🔀 Συγχώνευση (Merge)](#συγχώνευση-merge) -- [🌐 Απομακρυσμένα Αποθετήρια](#απομακρυσμένα-αποθετήρια) -- [📚 Ιστορικό και Αρχεία](#ιστορικό-και-αρχεία) -- [🏷️ Ετικέτες (Tags)](#ετικέτες-tags) -- [↩️ Αναίρεση Αλλαγών](#αναίρεση-αλλαγών) -- [📦 Αποθήκευση (Stash)](#αποθήκευση-stash) -- [🌊 Git Flow](#git-flow) -- [⚙️ Αρχεία Ρυθμίσεων](#αρχεία-ρυθμίσεων) -- [🔍 Αναζήτηση](#αναζήτηση) -- [📁 Μετακίνηση/Μετονομασία](#μετακίνησημετονομασία) -- [💡 Χρήσιμες Συμβουλές](#χρήσιμες-συμβουλές) -- [🌍 Άλλες Γλώσσες](#άλλες-γλώσσες) -- [🤝 Συνεισφορά](#συνεισφορά) -- [📄 Άδεια Χρήσης](#άδεια-χρήσης) -- [📖 Επιπλέον Πόροι](#επιπλέον-πόροι) +## 📋 Πίνακας Περιεχομένων + +- [🔧 Ρύθμιση](#-ρύθμιση) +- [⚙️ Αρχεία Ρυθμίσεων](#️-αρχεία-ρυθμίσεων) +- [🆕 Δημιουργία Αποθετηρίου](#-δημιουργία-αποθετηρίου) +- [📝 Τοπικές Αλλαγές](#-τοπικές-αλλαγές) +- [🔍 Αναζήτηση](#-αναζήτηση) +- [📖 Ιστορικό Υποβολών](#-ιστορικό-υποβολών) +- [📁 Μετακίνηση / Μετονομασία](#-μετακίνηση--μετονομασία) +- [🌿 Κλάδοι & Ετικέτες](#-κλάδοι--ετικέτες) +- [🔄 Ενημέρωση & Δημοσίευση](#-ενημέρωση--δημοσίευση) +- [🔀 Συγχώνευση & Rebase](#-συγχώνευση--rebase) +- [↩️ Αναίρεση](#️-αναίρεση) +- [🌊 Git Flow](#-git-flow) +- [🌍 Άλλες Γλώσσες](#-άλλες-γλώσσες) --- -## 🔧 Αρχική Ρύθμιση +## 🔧 Ρύθμιση -Ρυθμίστε το Git με τις προσωπικές σας πληροφορίες: +### Προβολή Ρυθμίσεων +**Εμφάνιση τρέχουσας ρύθμισης:** ```bash -# Ρύθμιση ονόματος χρήστη -git config --global user.name "Το Όνομά Σας" - -# Ρύθμιση email -git config --global user.email "email@example.com" - -# Προβολή τρεχουσών ρυθμίσεων git config --list +``` -# Ρύθμιση προεπιλεγμένου επεξεργαστή -git config --global core.editor "nano" +**Εμφάνιση ρυθμίσεων αποθετηρίου:** +```bash +git config --local --list +``` -# Ρύθμιση εργαλείου συγχώνευσης -git config --global merge.tool vimdiff +**Εμφάνιση καθολικών ρυθμίσεων:** +```bash +git config --global --list ``` ---- +**Εμφάνιση ρυθμίσεων συστήματος:** +```bash +git config --system --list +``` -## 📁 Ρύθμιση Αποθετηρίου +### Ρύθμιση Χρήστη -### Δημιουργία νέου αποθετηρίου: +**Ορισμός ονόματος για το ιστορικό εκδόσεων:** +```bash +git config --global user.name "[firstname lastname]" +``` +**Ορισμός διεύθυνσης email:** ```bash -# Δημιουργία νέου Git αποθετηρίου -git init +git config --global user.email "[valid-email]" +``` -# Κλωνοποίηση υπάρχοντος αποθετηρίου -git clone +### Ρυθμίσεις Εμφάνισης & Επεξεργαστή -# Κλωνοποίηση σε συγκεκριμένο φάκελο -git clone <όνομα-φακέλου> +**Ενεργοποίηση αυτόματου χρωματισμού γραμμής εντολών:** +```bash +git config --global color.ui auto ``` ---- - -## 📊 Εντολές Κατάστασης +**Ορισμός καθολικού επεξεργαστή για υποβολές:** +```bash +git config --global core.editor vi +``` -### Έλεγχος κατάστασης του αποθετηρίου σας: +--- -```bash -# Προβολή τρέχουσας κατάστασης αποθετηρίου -git status +## ⚙️ Αρχεία Ρυθμίσεων -# Προβολή κατάστασης σε σύντομη μορφή -git status -s +| Εύρος | Τοποθεσία | Σημαία Εντολής | +|-------|----------|--------------| +| **Αποθετήριο** | `/.git/config` | `--local` | +| **Χρήστης** | `~/.gitconfig` | `--global` | +| **Σύστημα** | `/etc/gitconfig` | `--system` | -# Προβολή κατάστασης αγνοώντας μη παρακολουθούμενα αρχεία -git status --ignored +--- -# Προβολή διαφορών σε τροποποιημένα αρχεία -git diff +## 🆕 Δημιουργία Αποθετηρίου -# Προβολή διαφορών στην περιοχή staging -git diff --staged +### Κλωνοποίηση Υπάρχοντος Αποθετηρίου -# Προβολή διαφορών μεταξύ κλάδων -git diff <κλάδος1> <κλάδος2> +**Μέσω SSH:** +```bash +git clone ssh://user@domain.com/repo.git ``` ---- - -## 📝 Διαχείριση Αρχείων +**Μέσω HTTPS:** +```bash +git clone https://domain.com/user/repo.git +``` -### Προσθήκη και αφαίρεση αρχείων: +### Αρχικοποίηση Νέου Αποθετηρίου +**Δημιουργία αποθετηρίου στον τρέχοντα κατάλογο:** ```bash -# Προσθήκη συγκεκριμένου αρχείου στην περιοχή staging -git add <αρχείο> +git init +``` -# Προσθήκη όλων των τροποποιημένων αρχείων -git add . +**Δημιουργία αποθετηρίου σε συγκεκριμένο κατάλογο:** +```bash +git init +``` -# Προσθήκη όλων των αρχείων συγκεκριμένου τύπου -git add *.txt +--- -# Διαδραστική προσθήκη -git add -i +## 📝 Τοπικές Αλλαγές -# Αφαίρεση αρχείου από αποθετήριο και φάκελο εργασίας -git rm <αρχείο> +### Έλεγχος Κατάστασης & Διαφορών -# Αφαίρεση αρχείου μόνο από αποθετήριο (διατήρηση στον φάκελο) -git rm --cached <αρχείο> +**Προβολή κατάστασης καταλόγου εργασίας:** +```bash +git status +``` -# Μετακίνηση/μετονομασία αρχείου -git mv <αρχείο-πηγής> <αρχείο-προορισμού> +**Εμφάνιση αλλαγών σε παρακολουθούμενα αρχεία:** +```bash +git diff ``` ---- +**Εμφάνιση αλλαγών σε συγκεκριμένο αρχείο:** +```bash +git diff +``` -## 💾 Υποβολές (Commits) +### Προσθήκη Αλλαγών στο Staging -### Αποθήκευση αλλαγών στο αποθετήριο: +**Προσθήκη όλων των τρεχουσών αλλαγών:** +```bash +git add . +``` +**Προσθήκη συγκεκριμένων αρχείων:** ```bash -# Υποβολή με μήνυμα -git commit -m "Μήνυμα υποβολής" +git add +``` -# Υποβολή προσθέτοντας όλα τα τροποποιημένα αρχεία -git commit -am "Μήνυμα υποβολής" +**Διαδραστική προσθήκη τμημάτων αρχείου:** +```bash +git add -p +``` -# Τροποποίηση της τελευταίας υποβολής -git commit --amend +### Υποβολή Αλλαγών -# Κενή υποβολή (χρήσιμη για CI/CD triggers) -git commit --allow-empty -m "Trigger CI" +**Υποβολή όλων των αλλαγών παρακολουθούμενων αρχείων:** +```bash +git commit -a +``` -# Υποβολή με λεπτομερές μήνυμα (ανοίγει επεξεργαστή) +**Υποβολή αλλαγών στο staging:** +```bash git commit ``` ---- - -## 🌿 Κλάδοι (Branches) +**Υποβολή με μήνυμα:** +```bash +git commit -m 'message here' +``` -### Εργασία με κλάδους: +**Παράλειψη staging και υποβολή με μήνυμα:** +```bash +git commit -am 'message here' +``` +**Υποβολή με συγκεκριμένη ημερομηνία:** ```bash -# Προβολή όλων των κλάδων -git branch +git commit --date="`date --date='n day ago'`" -am "" +``` -# Προβολή απομακρυσμένων κλάδων -git branch -r +### Τροποποίηση Τελευταίας Υποβολής -# Προβολή όλων των κλάδων (τοπικών και απομακρυσμένων) -git branch -a +> ⚠️ **Προσοχή:** Μην τροποποιείτε δημοσιευμένες υποβολές! -# Δημιουργία νέου κλάδου -git branch <όνομα-κλάδου> +**Τροποποίηση τελευταίας υποβολής:** +```bash +git commit -a --amend +``` -# Μετάβαση σε κλάδο -git checkout <όνομα-κλάδου> +**Τροποποίηση χωρίς αλλαγή μηνύματος υποβολής:** +```bash +git commit --amend --no-edit +``` -# Δημιουργία και μετάβαση σε νέο κλάδο -git checkout -b <όνομα-κλάδου> +**Αλλαγή ημερομηνίας committer:** +```bash +GIT_COMMITTER_DATE="date" git commit --amend +``` -# Δημιουργία κλάδου από συγκεκριμένη υποβολή -git checkout -b <όνομα-κλάδου> +**Αλλαγή ημερομηνίας συγγραφέα:** +```bash +git commit --amend --date="date" +``` + +### Προσωρινή Αποθήκευση Αλλαγών -# Διαγραφή κλάδου -git branch -d <όνομα-κλάδου> +**Προσωρινή αποθήκευση τρεχουσών αλλαγών:** +```bash +git stash +``` + +**Εφαρμογή τελευταίων αποθηκευμένων αλλαγών:** +```bash +git stash apply +``` -# Βίαιη διαγραφή κλάδου -git branch -D <όνομα-κλάδου> +**Εφαρμογή συγκεκριμένου stash:** +```bash +git stash apply stash@{stash_number} +``` +> Χρησιμοποιήστε `git stash list` για να δείτε τα διαθέσιμα stashes -# Μετονομασία τρέχοντος κλάδου -git branch -m <νέο-όνομα> +**Αφαίρεση τελευταίου stash:** +```bash +git stash drop +``` -# Μετονομασία συγκεκριμένου κλάδου -git branch -m <παλιό-όνομα> <νέο-όνομα> +**Μεταφορά μη υποβληθεισών αλλαγών σε άλλο κλάδο:** +```bash +git stash +git checkout branch2 +git stash pop ``` --- -## 🔀 Συγχώνευση (Merge) +## 🔍 Αναζήτηση -### Συγχώνευση αλλαγών μεταξύ κλάδων: +### Αναζήτηση Κειμένου +**Αναζήτηση κειμένου σε όλα τα αρχεία:** ```bash -# Συγχώνευση κλάδου στον τρέχοντα κλάδο -git merge <όνομα-κλάδου> +git grep "Hello" +``` -# Συγχώνευση χωρίς fast-forward (δημιουργία merge commit) -git merge --no-ff <όνομα-κλάδου> +**Αναζήτηση σε συγκεκριμένη έκδοση:** +```bash +git grep "Hello" v2.5 +``` -# Συγχώνευση μόνο αν είναι fast-forward -git merge --ff-only <όνομα-κλάδου> +### Αναζήτηση Υποβολών -# Ακύρωση τρέχουσας συγχώνευσης -git merge --abort +**Εύρεση υποβολών που εισήγαγαν συγκεκριμένη λέξη-κλειδί:** +```bash +git log -S 'keyword' +``` -# Συνέχιση συγχώνευσης μετά την επίλυση συγκρούσεων -git merge --continue +**Αναζήτηση με κανονική έκφραση:** +```bash +git log -S 'keyword' --pickaxe-regex ``` --- -## 🌐 Απομακρυσμένα Αποθετήρια +## 📖 Ιστορικό Υποβολών -### Διαχείριση απομακρυσμένων αποθετηρίων: +### Βασικό Ιστορικό +**Εμφάνιση όλων των υποβολών (αναλυτικά):** ```bash -# Προβολή απομακρυσμένων αποθετηρίων -git remote +git log +``` -# Προβολή απομακρυσμένων αποθετηρίων με URLs -git remote -v +**Εμφάνιση υποβολών (μία γραμμή ανά υποβολή):** +```bash +git log --oneline +``` -# Προσθήκη απομακρυσμένου αποθετηρίου -git remote add <όνομα> +**Εμφάνιση υποβολών συγκεκριμένου συγγραφέα:** +```bash +git log --author="username" +``` -# Αλλαγή URL απομακρυσμένου αποθετηρίου -git remote set-url <όνομα> <νέο-url> +**Εμφάνιση αλλαγών για συγκεκριμένο αρχείο:** +```bash +git log -p +``` -# Αφαίρεση απομακρυσμένου αποθετηρίου -git remote remove <όνομα> +### Προχωρημένο Ιστορικό -# Αποστολή αλλαγών στο απομακρυσμένο αποθετήριο -git push <απομακρυσμένο> <κλάδος> +**Σύγκριση κλάδων:** +```bash +git log --oneline .. --left-right +``` -# Αποστολή κλάδου και ρύθμιση παρακολούθησης -git push -u <απομακρυσμένο> <κλάδος> +**Εμφάνιση ποιος άλλαξε τι και πότε:** +```bash +git blame +``` -# Αποστολή όλων των κλάδων -git push --all +### Αρχεία Αναφοράς -# Αποστολή ετικετών -git push --tags +**Εμφάνιση αρχείου αναφοράς:** +```bash +git reflog show +``` -# Λήψη αλλαγών από απομακρυσμένο αποθετήριο -git pull <απομακρυσμένο> <κλάδος> +**Διαγραφή αρχείου αναφοράς:** +```bash +git reflog delete +``` + +--- -# Λήψη αλλαγών χωρίς συγχώνευση -git fetch <απομακρυσμένο> +## 📁 Μετακίνηση / Μετονομασία -# Λήψη όλων των απομακρυσμένων κλάδων -git fetch --all +**Μετονομασία αρχείου:** +```bash +git mv Index.txt Index.html ``` --- -## 📚 Ιστορικό και Αρχεία +## 🌿 Κλάδοι & Ετικέτες -### Εξερεύνηση ιστορικού υποβολών: +### Λίστα Κλάδων +**Λίστα τοπικών κλάδων:** ```bash -# Προβολή ιστορικού υποβολών -git log +git branch +``` -# Προβολή ιστορικού σε μία γραμμή ανά υποβολή -git log --oneline +**Λίστα όλων των κλάδων (τοπικών + απομακρυσμένων):** +```bash +git branch -a +``` -# Προβολή ιστορικού με γράφημα -git log --graph +**Λίστα απομακρυσμένων κλάδων:** +```bash +git branch -r +``` -# Προβολή ιστορικού συγκεκριμένου αρχείου -git log <αρχείο> +**Λίστα συγχωνευμένων κλάδων:** +```bash +git branch --merged +``` -# Προβολή στατιστικών υποβολών -git log --stat +### Εναλλαγή & Δημιουργία Κλάδων -# Προβολή αλλαγών σε κάθε υποβολή -git log -p +**Εναλλαγή σε υπάρχοντα κλάδο:** +```bash +git checkout +``` -# Προβολή τελευταίων N υποβολών -git log -n <αριθμός> +**Δημιουργία και εναλλαγή σε νέο κλάδο:** +```bash +git checkout -b +``` -# Προβολή υποβολών μεταξύ ημερομηνιών -git log --since="2023-01-01" --until="2023-12-31" +**Εναλλαγή στον προηγούμενο κλάδο:** +```bash +git checkout - +``` -# Προβολή υποβολών ανά συγγραφέα -git log --author="Όνομα Συγγραφέα" +**Δημιουργία κλάδου από υπάρχοντα κλάδο:** +```bash +git checkout -b +``` -# Αναζήτηση σε μηνύματα υποβολών -git log --grep="λέξη κλειδί" +**Δημιουργία κλάδου από συγκεκριμένη υποβολή:** +```bash +git checkout -b ``` ---- +**Δημιουργία κλάδου χωρίς εναλλαγή:** +```bash +git branch +``` -## 🏷️ Ετικέτες (Tags) +**Δημιουργία κλάδου παρακολούθησης:** +```bash +git branch --track +``` -### Διαχείριση ετικετών έκδοσης: +### Λειτουργίες Κλάδων +**Checkout μεμονωμένου αρχείου από διαφορετικό κλάδο:** ```bash -# Προβολή όλων των ετικετών -git tag +git checkout -- +``` + +**Εφαρμογή συγκεκριμένης υποβολής από άλλο κλάδο:** +```bash +git cherry-pick +``` -# Δημιουργία ελαφριάς ετικέτας -git tag <όνομα-ετικέτας> +**Μετονομασία τρέχοντος κλάδου:** +```bash +git branch -m +``` + +**Διαγραφή τοπικού κλάδου:** +```bash +git branch -d +``` -# Δημιουργία σχολιασμένης ετικέτας -git tag -a <όνομα-ετικέτας> -m "Μήνυμα ετικέτας" +**Αναγκαστική διαγραφή τοπικού κλάδου:** +```bash +git branch -D +``` +> ⚠️ **Προσοχή:** Θα χάσετε τις μη συγχωνευμένες αλλαγές! -# Δημιουργία ετικέτας σε συγκεκριμένη υποβολή -git tag -a <όνομα-ετικέτας> +### Ετικέτες -# Προβολή πληροφοριών ετικέτας -git show <όνομα-ετικέτας> +**Δημιουργία ετικέτας στο HEAD:** +```bash +git tag +``` -# Διαγραφή τοπικής ετικέτας -git tag -d <όνομα-ετικέτας> +**Δημιουργία σχολιασμένης ετικέτας:** +```bash +git tag -a +``` -# Διαγραφή απομακρυσμένης ετικέτας -git push --delete <απομακρυσμένο> <όνομα-ετικέτας> +**Δημιουργία ετικέτας με μήνυμα:** +```bash +git tag -am 'message here' +``` -# Αποστολή συγκεκριμένης ετικέτας -git push <απομακρυσμένο> <όνομα-ετικέτας> +**Λίστα όλων των ετικετών:** +```bash +git tag +``` -# Αποστολή όλων των ετικετών -git push <απομακρυσμένο> --tags +**Λίστα ετικετών με μηνύματα:** +```bash +git tag -n ``` --- -## ↩️ Αναίρεση Αλλαγών +## 🔄 Ενημέρωση & Δημοσίευση -### Επαναφορά τροποποιήσεων: +### Διαχείριση Απομακρυσμένων +**Λίστα ρυθμισμένων απομακρυσμένων:** ```bash -# Ακύρωση αλλαγών σε συγκεκριμένο αρχείο -git checkout <αρχείο> +git remote -v +``` -# Ακύρωση όλων των μη υποβληθεισών αλλαγών -git checkout . +**Εμφάνιση πληροφοριών απομακρυσμένου:** +```bash +git remote show +``` -# Επαναφορά αρχείου σε συγκεκριμένη έκδοση -git checkout <αρχείο> +**Προσθήκη νέου απομακρυσμένου:** +```bash +git remote add +``` -# Αφαίρεση αρχείου από την περιοχή staging -git reset <αρχείο> +**Μετονομασία απομακρυσμένου:** +```bash +git remote rename +``` -# Αφαίρεση όλων των αρχείων από την περιοχή staging -git reset +**Αφαίρεση απομακρυσμένου:** +```bash +git remote rm +``` +> ℹ️ **Σημείωση:** Αυτό αφαιρεί μόνο την τοπική αναφορά στο απομακρυσμένο, όχι το ίδιο το απομακρυσμένο αποθετήριο. -# Επιστροφή στην προηγούμενη υποβολή (διατήρηση αλλαγών) -git reset --soft HEAD~1 +### Fetch & Pull -# Επιστροφή στην προηγούμενη υποβολή (ακύρωση αλλαγών) -git reset --hard HEAD~1 +**Λήψη αλλαγών χωρίς συγχώνευση:** +```bash +git fetch +``` -# Επιστροφή σε συγκεκριμένη υποβολή -git reset --hard +**Λήψη και συγχώνευση αλλαγών:** +```bash +git pull +``` -# Δημιουργία υποβολής που ακυρώνει άλλη υποβολή -git revert +**Λήψη αλλαγών από τον κύριο κλάδο:** +```bash +git pull origin master +``` -# Ακύρωση πολλαπλών υποβολών -git revert .. +**Pull με rebase:** +```bash +git pull --rebase ``` ---- +### Push & Δημοσίευση -## 📦 Αποθήκευση (Stash) +**Δημοσίευση τοπικών αλλαγών:** +```bash +git push +``` + +**Διαγραφή απομακρυσμένου κλάδου:** +```bash +# Git v1.7.0+ +git push --delete -### Προσωρινή αποθήκευση εργασίας: +# Git v1.5.0+ +git push : +``` +**Δημοσίευση ετικετών:** ```bash -# Αποθήκευση τρεχουσών αλλαγών στο stash -git stash +git push --tags +``` -# Αποθήκευση με περιγραφικό μήνυμα -git stash save "Περιγραφικό μήνυμα" +--- -# Προβολή όλων των stashes -git stash list +## 🔀 Συγχώνευση & Rebase -# Εφαρμογή του τελευταίου stash -git stash apply +### Λειτουργίες Συγχώνευσης -# Εφαρμογή συγκεκριμένου stash -git stash apply stash@{0} +**Συγχώνευση κλάδου στο τρέχον HEAD:** +```bash +git merge +``` -# Εφαρμογή και διαγραφή του τελευταίου stash -git stash pop +**Ρύθμιση εργαλείου συγχώνευσης καθολικά:** +```bash +git config --global merge.tool meld +``` -# Διαγραφή συγκεκριμένου stash -git stash drop stash@{0} +**Χρήση ρυθμισμένου εργαλείου συγχώνευσης:** +```bash +git mergetool +``` -# Διαγραφή όλων των stashes -git stash clear +### Λειτουργίες Rebase -# Προβολή αλλαγών σε stash -git stash show stash@{0} +> ⚠️ **Προσοχή:** Μην κάνετε rebase σε δημοσιευμένες υποβολές! -# Δημιουργία κλάδου από stash -git stash branch <όνομα-κλάδου> stash@{0} +**Rebase τρέχοντος HEAD πάνω σε κλάδο:** +```bash +git rebase ``` ---- +**Ακύρωση rebase:** +```bash +git rebase --abort +``` -## 🌊 Git Flow +**Συνέχιση rebase μετά την επίλυση συγκρούσεων:** +```bash +git rebase --continue +``` -Το Git Flow είναι ένα μοντέλο διακλάδωσης που ορίζει μια αυστηρή ροή εργασίας σχεδιασμένη γύρω από την έκδοση του έργου. +### Επίλυση Συγκρούσεων -### Κύριοι κλάδοι: -- **master/main**: Κώδικας παραγωγής -- **develop**: Κύριος κλάδος ανάπτυξης +**Σήμανση αρχείου ως επιλυμένου:** +```bash +git add +``` -### Κλάδοι υποστήριξης: -- **feature**: Για νέες λειτουργίες -- **release**: Για προετοιμασία νέων εκδόσεων -- **hotfix**: Για επείγουσες διορθώσεις στην παραγωγή +**Αφαίρεση επιλυμένου αρχείου:** +```bash +git rm +``` -### Εντολές Git Flow: +### Συμπίεση Υποβολών +**Διαδραστικό rebase για συμπίεση:** ```bash -# Αρχικοποίηση git flow -git flow init +git rebase -i +``` + +**Παράδειγμα ρύθμισης συμπίεσης:** +``` +# Πριν +pick +pick +pick + +# Μετά (συμπίεση commit_id2 και commit_id3 στο commit_id) +pick +squash +squash +``` -# Έναρξη νέας λειτουργίας -git flow feature start <όνομα-λειτουργίας> +--- -# Ολοκλήρωση λειτουργίας -git flow feature finish <όνομα-λειτουργίας> +## ↩️ Αναίρεση -# Δημοσίευση λειτουργίας -git flow feature publish <όνομα-λειτουργίας> +### Απόρριψη Αλλαγών -# Έναρξη έκδοσης -git flow release start <έκδοση> +**Απόρριψη όλων των τοπικών αλλαγών:** +```bash +git reset --hard HEAD +``` -# Ολοκλήρωση έκδοσης -git flow release finish <έκδοση> +**Αφαίρεση όλων των αρχείων από το staging:** +```bash +git reset HEAD +``` + +**Απόρριψη αλλαγών σε συγκεκριμένο αρχείο:** +```bash +git checkout HEAD +``` -# Έναρξη hotfix -git flow hotfix start <έκδοση> +### Λειτουργίες Επαναφοράς -# Ολοκλήρωση hotfix -git flow hotfix finish <έκδοση> +**Επαναφορά σε προηγούμενη υποβολή (απόρριψη όλων των αλλαγών):** +```bash +git reset --hard ``` -### Ροή εργασίας χωρίς Git Flow: +**Επαναφορά στην κατάσταση απομακρυσμένου κλάδου:** +```bash +git reset --hard +# Παράδειγμα: git reset --hard upstream/master +``` -![Git Flow Commands](../Img/git-flow-commands-without-flow.png) +**Επαναφορά διατηρώντας αλλαγές ως unstaged:** +```bash +git reset +``` +**Επαναφορά διατηρώντας μη υποβληθείσες τοπικές αλλαγές:** ```bash -# Δημιουργία κλάδου λειτουργίας -git checkout develop -git checkout -b feature/νέα-λειτουργία +git reset --keep +``` -# Εργασία στη λειτουργία -git add . -git commit -m "Προσθήκη νέας λειτουργίας" +### Αντιστροφή Υποβολών -# Συγχώνευση λειτουργίας στο develop -git checkout develop -git merge --no-ff feature/νέα-λειτουργία -git branch -d feature/νέα-λειτουργία +**Αντιστροφή υποβολής (δημιουργία νέας υποβολής με αντίθετες αλλαγές):** +```bash +git revert +``` -# Δημιουργία κλάδου έκδοσης -git checkout develop -git checkout -b release/1.0.0 +### Καθαρισμός Αγνοημένων Αρχείων -# Ολοκλήρωση έκδοσης -git checkout master -git merge --no-ff release/1.0.0 -git tag -a 1.0.0 -m "Έκδοση 1.0.0" -git checkout develop -git merge --no-ff release/1.0.0 -git branch -d release/1.0.0 +**Αφαίρεση αρχείων που υποβλήθηκαν κατά λάθος και πρέπει να αγνοηθούν:** +```bash +git rm -r --cached . +git add . +git commit -m "remove ignored files" ``` --- -## 💡 Χρήσιμες Συμβουλές +## 🌊 Git Flow + +**Βελτιωμένο Git-flow:** [git-flow-avh](https://github.com/petervanderdoes/gitflow-avh) + +### 📋 Πίνακας Περιεχομένων +- [🔧 Ρύθμιση](#setup-1) +- [🚀 Ξεκινώντας](#ξεκινώντας) +- [✨ Λειτουργίες](#λειτουργίες) +- [🎁 Δημιουργία Έκδοσης](#δημιουργία-έκδοσης) +- [🔥 Hotfixes](#hotfixes) +- [📊 Επισκόπηση Εντολών](#επισκόπηση-εντολών) + +--- + +### 🔧 Ρύθμιση {#setup-1} -### Χρήσιμα aliases: +> **Προαπαιτούμενο:** Απαιτείται λειτουργική εγκατάσταση Git. Το Git-flow λειτουργεί σε macOS, Linux και Windows. +**macOS (Homebrew):** ```bash -# Ρύθμιση χρήσιμων aliases -git config --global alias.st status -git config --global alias.co checkout -git config --global alias.br branch -git config --global alias.ci commit -git config --global alias.unstage 'reset HEAD --' -git config --global alias.last 'log -1 HEAD' -git config --global alias.visual '!gitk' +brew install git-flow-avh ``` -### Αρχεία .gitignore: +**macOS (MacPorts):** +```bash +port install git-flow +``` +**Linux (βασισμένο σε Debian):** ```bash -# Δημιουργία αρχείου .gitignore -echo "node_modules/" >> .gitignore -echo "*.log" >> .gitignore -echo ".env" >> .gitignore +sudo apt-get install git-flow +``` -# Αγνόηση ήδη παρακολουθούμενων αρχείων -git rm --cached <αρχείο> -echo "<αρχείο>" >> .gitignore -git add .gitignore -git commit -m "Προσθήκη αρχείου στο .gitignore" +**Windows (Cygwin):** +> Απαιτεί wget και util-linux +```bash +wget -q -O - --no-check-certificate https://raw.githubusercontent.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh install | bash ``` --- -## ⚙️ Αρχεία Ρυθμίσεων +### 🚀 Ξεκινώντας -Το Git χρησιμοποιεί αρχεία ρυθμίσεων για την αποθήκευση προτιμήσεων χρήστη και αποθετηρίου: +Το Git-flow χρειάζεται αρχικοποίηση για να προσαρμόσει τη ρύθμιση του έργου σας. -### Επίπεδα ρυθμίσεων: +**Αρχικοποίηση (διαδραστική):** +```bash +git flow init +``` +> Θα απαντήσετε σε ερωτήσεις σχετικά με τις συμβάσεις ονομασίας κλάδων. Συνιστώνται οι προεπιλεγμένες τιμές. +**Αρχικοποίηση (χρήση προεπιλογών):** ```bash -# Συστήματος (όλοι οι χρήστες) -git config --system +git flow init -d +``` -# Χρήστη (τρέχων χρήστης) -git config --global +--- -# Αποθετηρίου (συγκεκριμένο έργο) -git config --local -``` +### ✨ Λειτουργίες -### Κοινές ρυθμίσεις: +Οι λειτουργίες χρησιμοποιούνται για την ανάπτυξη νέας λειτουργικότητας για επερχόμενες εκδόσεις. Συνήθως υπάρχουν μόνο σε αποθετήρια προγραμματιστών. +**Έναρξη νέας λειτουργίας:** ```bash -# Ταυτότητα χρήστη -git config --global user.name "Το Όνομά σας" -git config --global user.email "email@example.com" +git flow feature start MYFEATURE +``` +> Δημιουργεί κλάδο λειτουργίας βασισμένο στο 'develop' και μεταβαίνει σε αυτόν -# Επεξεργαστής κειμένου -git config --global core.editor nano +**Ολοκλήρωση λειτουργίας:** +```bash +git flow feature finish MYFEATURE +``` +> Αυτό θα: +> 1. Συγχωνεύσει το MYFEATURE στο 'develop' +> 2. Αφαιρέσει τον κλάδο λειτουργίας +> 3. Μεταβεί πίσω στο 'develop' -# Εργαλείο συγχώνευσης -git config --global merge.tool vimdiff +**Δημοσίευση λειτουργίας (για συνεργασία):** +```bash +git flow feature publish MYFEATURE +``` -# Χρώματα στην έξοδο -git config --global color.ui auto +**Λήψη δημοσιευμένης λειτουργίας:** +```bash +git flow feature pull origin MYFEATURE +``` -# Προβολή ρυθμίσεων -git config --list +**Παρακολούθηση λειτουργίας origin:** +```bash +git flow feature track MYFEATURE ``` --- -## 🔍 Αναζήτηση +### 🎁 Δημιουργία Έκδοσης -### Αναζήτηση στο ιστορικό και περιεχόμενο: +Οι εκδόσεις υποστηρίζουν την προετοιμασία νέων εκδόσεων παραγωγής, επιτρέποντας μικρές διορθώσεις σφαλμάτων και προετοιμασία μεταδεδομένων. +**Έναρξη έκδοσης:** ```bash -# Αναζήτηση στα μηνύματα υποβολών -git log --grep="λέξη-κλειδί" - -# Αναζήτηση αλλαγών στον κώδικα -git log -S "κομμάτι κώδικα" - -# Αναζήτηση σε αρχεία εργασίας -git grep "μοτίβο" - -# Αναζήτηση σε συγκεκριμένη υποβολή -git grep "μοτίβο" +git flow release start RELEASE [BASE] +``` +> Δημιουργεί κλάδο έκδοσης από το 'develop'. Προαιρετικά καθορίστε [BASE] commit SHA-1. -# Αναζήτηση με αγνόηση πεζών/κεφαλαίων -git grep -i "μοτίβο" +**Δημοσίευση έκδοσης:** +```bash +git flow release publish RELEASE +``` -# Αναζήτηση ολόκληρων λέξεων -git grep -w "λέξη" +**Παρακολούθηση απομακρυσμένης έκδοσης:** +```bash +git flow release track RELEASE +``` -# Εμφάνιση αριθμών γραμμών -git grep -n "μοτίβο" +**Ολοκλήρωση έκδοσης:** +```bash +git flow release finish RELEASE ``` +> Αυτό θα: +> 1. Συγχωνεύσει τον κλάδο έκδοσης στο 'master' +> 2. Προσθέσει ετικέτα στην έκδοση +> 3. Συγχωνεύσει ξανά την έκδοση στο 'develop' +> 4. Αφαιρέσει τον κλάδο έκδοσης + +> 💡 **Μην ξεχάσετε:** Κάντε push τις ετικέτες σας με `git push --tags` --- -## 📁 Μετακίνηση/Μετονομασία +### 🔥 Hotfixes -### Μετακίνηση και μετονομασία αρχείων: +Τα hotfixes αντιμετωπίζουν κρίσιμα ζητήματα σε ζωντανές εκδόσεις παραγωγής. Διακλαδίζονται από την αντίστοιχη ετικέτα στο master. +**Έναρξη hotfix:** ```bash -# Μετονομασία αρχείου -git mv παλιό_όνομα.txt νέο_όνομα.txt +git flow hotfix start VERSION [BASENAME] +``` -# Μετακίνηση αρχείου σε φάκελο -git mv αρχείο.txt φάκελος/ +**Ολοκλήρωση hotfix:** +```bash +git flow hotfix finish VERSION +``` +> Συγχωνεύεται πίσω τόσο στο 'develop' όσο και στο 'master', και προσθέτει ετικέτα στη συγχώνευση master -# Μετονομασία φακέλου -git mv παλιός_φάκελος νέος_φάκελος +--- -# Διαδικασία μετονομασίας χωρίς git mv -mv παλιό_όνομα.txt νέο_όνομα.txt -git add νέο_όνομα.txt -git rm παλιό_όνομα.txt +### 📊 Επισκόπηση Εντολών -# Εντοπισμός μετονομασιών στο log -git log --follow αρχείο.txt +

+ Git Flow Commands +

-# Παρακολούθηση μετακινήσεων -git log --stat -M -``` +### 🌊 Σχήμα Git Flow + +

+ Git Flow Schema +

--- + ## 🌍 Άλλες Γλώσσες -Αυτό το Git cheat sheet είναι διαθέσιμο σε διάφορες γλώσσες: +Αυτός ο σύντομος οδηγός είναι διαθέσιμος σε πολλές γλώσσες: -| Γλώσσα | Αρχείο | -|--------|---------| -| 🇺🇸 English | [README.md](../README.md) | -| 🇸🇦 العربية | [git-cheat-sheet-ar.md](git-cheat-sheet-ar.md) | -| 🇧🇩 বাংলা | [git-cheat-sheet-bn.md](git-cheat-sheet-bn.md) | -| 🇩🇪 Deutsch | [git-cheat-sheet-de.md](git-cheat-sheet-de.md) | +| Γλώσσα | Σύνδεσμος | +|----------|------| +| 🇸🇦 Αραβικά | [git-cheat-sheet-ar.md](git-cheat-sheet-ar.md) | +| 🇧🇩 Μπενγκάλι | [git-cheat-sheet-bn.md](git-cheat-sheet-bn.md) | +| 🇧🇷 Βραζιλιάνικα Πορτογαλικά | [git-cheat-sheet-pt_BR.md](git-cheat-sheet-pt_BR.md) | +| 🇨🇳 Κινέζικα | [git-cheat-sheet-zh.md](git-cheat-sheet-zh.md) | +| 🇩🇪 Γερμανικά | [git-cheat-sheet-de.md](git-cheat-sheet-de.md) | | 🇬🇷 **Ελληνικά** | [git-cheat-sheet-el.md](git-cheat-sheet-el.md) | -| 🇪🇸 Español | [git-cheat-sheet-es.md](git-cheat-sheet-es.md) | -| 🇮🇳 हिन्दी | [git-cheat-sheet-hi.md](git-cheat-sheet-hi.md) | -| 🇰🇷 한국어 | [git-cheat-sheet-ko.md](git-cheat-sheet-ko.md) | -| 🇵🇱 Polski | [git-cheat-sheet-pl.md](git-cheat-sheet-pl.md) | -| 🇧🇷 Português (Brasil) | [git-cheat-sheet-pt_BR.md](git-cheat-sheet-pt_BR.md) | -| 🇹🇷 Türkçe | [git-cheat-sheet-tr.md](git-cheat-sheet-tr.md) | -| 🇨🇳 中文 | [git-cheat-sheet-zh.md](git-cheat-sheet-zh.md) | +| 🇮🇳 Χίντι | [git-cheat-sheet-hi.md](git-cheat-sheet-hi.md) | +| 🇰🇷 Κορεάτικα | [git-cheat-sheet-ko.md](git-cheat-sheet-ko.md) | +| 🇵🇱 Πολωνικά | [git-cheat-sheet-pl.md](git-cheat-sheet-pl.md) | +| 🇪🇸 Ισπανικά | [git-cheat-sheet-es.md](git-cheat-sheet-es.md) | +| 🇹🇷 Τούρκικα | [git-cheat-sheet-tr.md](git-cheat-sheet-tr.md) | --- ## 🤝 Συνεισφορά -Οι συνεισφορές είναι ευπρόσδεκτες! Αν θέλετε να βελτιώσετε αυτό το cheat sheet: +Καλωσορίζουμε τις συνεισφορές! Μπορείτε να: -1. Κάντε Fork το αποθετήριο -2. Δημιουργήστε έναν κλάδο λειτουργίας (`git checkout -b feature/βελτίωση`) -3. Κάντε commit τις αλλαγές σας (`git commit -am 'Προσθήκη νέας λειτουργίας'`) -4. Κάντε Push στον κλάδο (`git push origin feature/βελτίωση`) -5. Δημιουργήστε ένα Pull Request +- 🐛 Αναφέρετε σφάλματα ή τυπογραφικά λάθη +- ✨ Προσθέσετε νέες εντολές Git +- 🌍 Μεταφράσετε σε νέες γλώσσες +- 💡 Βελτιώσετε τις εξηγήσεις +- 📝 Βελτιώσετε τη μορφοποίηση -Παρακαλούμε ακολουθήστε τις οδηγίες συνεισφοράς και διασφαλίστε ότι ο κώδικάς σας ακολουθεί τα υπάρχοντα πρότυπα. +**Πώς να συνεισφέρετε:** +1. Κάντε Fork αυτό το αποθετήριο +2. Δημιουργήστε τον κλάδο λειτουργίας σας (`git checkout -b feature/AmazingFeature`) +3. Κάντε commit τις αλλαγές σας (`git commit -m 'Add some AmazingFeature'`) +4. Κάντε push στον κλάδο (`git push origin feature/AmazingFeature`) +5. Ανοίξτε ένα Pull Request --- ## 📄 Άδεια Χρήσης -Αυτό το έργο αδειοδοτείται με την [MIT License](https://opensource.org/licenses/MIT). - -Μπορείτε ελεύθερα να χρησιμοποιήσετε, τροποποιήσετε και διανείμετε αυτό το cheat sheet σύμφωνα με τους όρους της άδειας MIT. - ---- - -## 📖 Επιπλέον Πόροι - -- [Επίσημη Τεκμηρίωση Git](https://git-scm.com/doc) -- [Atlassian Git Tutorials](https://www.atlassian.com/git/tutorials) -- [GitHub Git Cheat Sheet](https://education.github.com/git-cheat-sheet-education.pdf) -- [Διαδραστικό Git Tutorial](https://learngitbranching.js.org/) +Αυτό το έργο είναι ανοιχτού κώδικα και διαθέσιμο υπό την [Άδεια MIT](LICENSE). --- -**Σημείωση**: Αυτό το cheat sheet καλύπτει τις πιο συνηθισμένες εντολές Git. Για πιο προχωρημένες χρήσεις, συμβουλευτείτε την επίσημη τεκμηρίωση του Git. +

+ ⭐ Βάλτε αστέρι σε αυτό το αποθετήριο αν το βρήκατε χρήσιμο! +

diff --git a/other-sheets/git-cheat-sheet-es.md b/other-sheets/git-cheat-sheet-es.md index d318b2e..9c3ed99 100644 --- a/other-sheets/git-cheat-sheet-es.md +++ b/other-sheets/git-cheat-sheet-es.md @@ -1,680 +1,865 @@ -# Git Cheat Sheet Español +# Hoja de Referencia de Git y Git Flow +[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -![Git Logo](../Img/git-logo.png) - -Una guía de referencia rápida para los comandos de Git más utilizados, organizados por categorías para facilitar su consulta. +

+ Git +

--- -## 📖 Acerca de esta Guía +## 📖 Acerca de -Esta guía completa de referencia de Git es un recurso integral para cualquiera que busque mejorar su flujo de trabajo con Git. Desde principiantes que comienzan su viaje con Git hasta desarrolladores experimentados, esta guía proporciona comandos organizados y categorizados para acelerar tu proceso de desarrollo. +Esta completa hoja de referencia de Git te ayuda a dominar los comandos de Git sin memorizar todo. Ya seas principiante o un desarrollador experimentado, esta guía proporciona una referencia rápida a las operaciones esenciales de Git. -### Características Principales: -- **Categorías organizadas**: Los comandos están organizados en grupos claros y lógicos -- **Ejemplos prácticos**: Con casos de uso del mundo real -- **Amigable para principiantes**: Con explicaciones claras y consejos -- **Referencia rápida**: Acceso rápido a comandos esenciales +**¡Contribuciones bienvenidas!** Puedes: +- Corregir errores gramaticales +- Agregar nuevos comandos +- Traducir a tu idioma +- Mejorar las explicaciones --- - -## 📑 Tabla de Contenidos - -- [� Acerca de esta Guía](#acerca-de-esta-guía) -- [�🔧 Configuración Inicial](#configuración-inicial) -- [📁 Configuración de Repositorio](#configuración-de-repositorio) -- [📊 Comandos de Estado](#comandos-de-estado) -- [📝 Gestión de Archivos](#gestión-de-archivos) -- [💾 Commits](#commits) -- [🌿 Ramas (Branches)](#ramas-branches) -- [🔀 Fusión (Merge)](#fusión-merge) -- [🌐 Remotos](#remotos) -- [📚 Historial y Logs](#historial-y-logs) -- [🏷️ Etiquetas (Tags)](#etiquetas-tags) -- [↩️ Deshacer Cambios](#deshacer-cambios) -- [📦 Stash](#stash) -- [🌊 Git Flow](#git-flow) -- [⚙️ Archivos de Configuración](#archivos-de-configuración) -- [🔍 Búsqueda](#búsqueda) -- [📁 Mover/Renombrar](#moverrenombrar) -- [💡 Consejos Útiles](#consejos-útiles) -- [🌍 Otros Idiomas](#otros-idiomas) -- [🤝 Contribuir](#contribuir) -- [📄 Licencia](#licencia) -- [📖 Recursos Adicionales](#recursos-adicionales) +## 📋 Tabla de Contenidos + +- [🔧 Configuración](#-configuración) +- [⚙️ Archivos de Configuración](#️-archivos-de-configuración) +- [🆕 Crear Repositorio](#-crear-repositorio) +- [📝 Cambios Locales](#-cambios-locales) +- [🔍 Búsqueda](#-búsqueda) +- [📖 Historial de Commits](#-historial-de-commits) +- [📁 Mover / Renombrar](#-mover--renombrar) +- [🌿 Ramas y Etiquetas](#-ramas-y-etiquetas) +- [🔄 Actualizar y Publicar](#-actualizar-y-publicar) +- [🔀 Fusionar y Rebase](#-fusionar-y-rebase) +- [↩️ Deshacer](#️-deshacer) +- [🌊 Git Flow](#-git-flow) +- [🌍 Otros Idiomas](#-otros-idiomas) --- -## 🔧 Configuración Inicial +## 🔧 Configuración -Configurar Git con tu información personal: +### Ver Configuración +**Mostrar la configuración actual:** ```bash -# Configurar nombre de usuario -git config --global user.name "Tu Nombre" - -# Configurar email -git config --global user.email "tuemail@ejemplo.com" - -# Ver configuración actual git config --list +``` -# Configurar editor por defecto -git config --global core.editor "nano" +**Mostrar la configuración del repositorio:** +```bash +git config --local --list +``` -# Configurar herramienta de diff -git config --global merge.tool vimdiff +**Mostrar la configuración global:** +```bash +git config --global --list ``` ---- +**Mostrar la configuración del sistema:** +```bash +git config --system --list +``` -## 📁 Configuración de Repositorio +### Configuración de Usuario -### Inicializar un nuevo repositorio: +**Establecer tu nombre para el historial de versiones:** +```bash +git config --global user.name "[firstname lastname]" +``` +**Establecer tu dirección de correo electrónico:** ```bash -# Crear un nuevo repositorio Git -git init +git config --global user.email "[valid-email]" +``` -# Clonar un repositorio existente -git clone +### Configuración de Pantalla y Editor -# Clonar a un directorio específico -git clone +**Habilitar el coloreado automático en la línea de comandos:** +```bash +git config --global color.ui auto ``` ---- - -## 📊 Comandos de Estado +**Establecer el editor global para commits:** +```bash +git config --global core.editor vi +``` -### Verificar el estado de tu repositorio: +--- -```bash -# Mostrar estado actual del repositorio -git status +## ⚙️ Archivos de Configuración -# Mostrar estado en formato corto -git status -s +| Alcance | Ubicación | Flag de Comando | +|---------|-----------|-----------------| +| **Repositorio** | `/.git/config` | `--local` | +| **Usuario** | `~/.gitconfig` | `--global` | +| **Sistema** | `/etc/gitconfig` | `--system` | -# Mostrar estado ignorando archivos no rastreados -git status --ignored +--- -# Mostrar diferencias en archivos modificados -git diff +## 🆕 Crear Repositorio -# Mostrar diferencias en el área de preparación -git diff --staged +### Clonar Repositorio Existente -# Mostrar diferencias entre ramas -git diff +**Vía SSH:** +```bash +git clone ssh://user@domain.com/repo.git ``` ---- - -## 📝 Gestión de Archivos +**Vía HTTPS:** +```bash +git clone https://domain.com/user/repo.git +``` -### Agregar y remover archivos: +### Inicializar Nuevo Repositorio +**Crear repositorio en el directorio actual:** ```bash -# Agregar archivo específico al área de preparación -git add +git init +``` -# Agregar todos los archivos modificados -git add . +**Crear repositorio en un directorio específico:** +```bash +git init +``` -# Agregar todos los archivos de un tipo específico -git add *.txt +--- -# Agregar interactivamente -git add -i +## 📝 Cambios Locales -# Remover archivo del repositorio y del directorio de trabajo -git rm +### Verificar Estado y Diferencias -# Remover archivo solo del repositorio (mantener en directorio) -git rm --cached +**Ver el estado del directorio de trabajo:** +```bash +git status +``` -# Mover/renombrar archivo -git mv +**Mostrar cambios en archivos rastreados:** +```bash +git diff ``` ---- +**Mostrar cambios en un archivo específico:** +```bash +git diff +``` -## 💾 Commits +### Preparar Cambios (Staging) -### Guardar cambios en el repositorio: +**Agregar todos los cambios actuales:** +```bash +git add . +``` +**Agregar archivos específicos:** ```bash -# Hacer commit con mensaje -git commit -m "Mensaje del commit" +git add +``` -# Hacer commit agregando todos los archivos modificados -git commit -am "Mensaje del commit" +**Agregar partes de un archivo de forma interactiva:** +```bash +git add -p +``` -# Modificar el último commit -git commit --amend +### Confirmar Cambios (Commits) -# Hacer commit vacío (útil para triggers de CI/CD) -git commit --allow-empty -m "Trigger CI" +**Confirmar todos los cambios en archivos rastreados:** +```bash +git commit -a +``` -# Hacer commit con mensaje detallado (abre editor) +**Confirmar los cambios preparados:** +```bash git commit ``` ---- - -## 🌿 Ramas (Branches) +**Confirmar con un mensaje:** +```bash +git commit -m 'message here' +``` -### Trabajar con ramas: +**Saltar el staging y confirmar con un mensaje:** +```bash +git commit -am 'message here' +``` +**Confirmar con una fecha específica:** ```bash -# Listar todas las ramas -git branch +git commit --date="`date --date='n day ago'`" -am "" +``` -# Listar ramas remotas -git branch -r +### Modificar Último Commit -# Listar todas las ramas (locales y remotas) -git branch -a +> ⚠️ **Advertencia:** ¡No modifiques commits ya publicados! + +**Modificar el último commit:** +```bash +git commit -a --amend +``` -# Crear nueva rama -git branch +**Modificar sin cambiar el mensaje del commit:** +```bash +git commit --amend --no-edit +``` + +**Cambiar la fecha del committer:** +```bash +GIT_COMMITTER_DATE="date" git commit --amend +``` -# Cambiar a una rama -git checkout +**Cambiar la fecha del autor:** +```bash +git commit --amend --date="date" +``` -# Crear y cambiar a nueva rama -git checkout -b +### Guardar Cambios Temporalmente (Stash) -# Crear rama desde un commit específico -git checkout -b +**Guardar los cambios actuales temporalmente:** +```bash +git stash +``` -# Eliminar rama -git branch -d +**Aplicar los últimos cambios guardados:** +```bash +git stash apply +``` -# Eliminar rama forzadamente -git branch -D +**Aplicar un stash específico:** +```bash +git stash apply stash@{stash_number} +``` +> Usa `git stash list` para ver los stashes disponibles -# Renombrar rama actual -git branch -m +**Eliminar el último stash:** +```bash +git stash drop +``` -# Renombrar rama específica -git branch -m +**Mover cambios no confirmados a otra rama:** +```bash +git stash +git checkout branch2 +git stash pop ``` --- -## 🔀 Fusión (Merge) +## 🔍 Búsqueda -### Fusionar cambios entre ramas: +### Búsqueda de Texto +**Buscar texto en todos los archivos:** ```bash -# Fusionar rama en la rama actual -git merge +git grep "Hello" +``` -# Fusionar sin fast-forward (crear commit de merge) -git merge --no-ff +**Buscar en una versión específica:** +```bash +git grep "Hello" v2.5 +``` -# Fusionar solo si es fast-forward -git merge --ff-only +### Búsqueda en Commits -# Abortar fusión en curso -git merge --abort +**Encontrar commits que introdujeron una palabra clave específica:** +```bash +git log -S 'keyword' +``` -# Continuar fusión después de resolver conflictos -git merge --continue +**Buscar con expresión regular:** +```bash +git log -S 'keyword' --pickaxe-regex ``` --- -## 🌐 Remotos +## 📖 Historial de Commits -### Gestionar repositorios remotos: +### Historial Básico +**Mostrar todos los commits (detallado):** ```bash -# Listar repositorios remotos -git remote +git log +``` -# Listar repositorios remotos con URLs -git remote -v +**Mostrar commits (una línea cada uno):** +```bash +git log --oneline +``` -# Agregar repositorio remoto -git remote add +**Mostrar commits de un autor específico:** +```bash +git log --author="username" +``` -# Cambiar URL de repositorio remoto -git remote set-url +**Mostrar cambios de un archivo específico:** +```bash +git log -p +``` + +### Historial Avanzado -# Eliminar repositorio remoto -git remote remove +**Comparar ramas:** +```bash +git log --oneline .. --left-right +``` -# Subir cambios al repositorio remoto -git push +**Mostrar quién cambió qué y cuándo:** +```bash +git blame +``` -# Subir rama y establecer tracking -git push -u +### Logs de Referencia -# Subir todas las ramas -git push --all +**Mostrar el log de referencia:** +```bash +git reflog show +``` -# Subir etiquetas -git push --tags +**Eliminar el log de referencia:** +```bash +git reflog delete +``` -# Descargar cambios del repositorio remoto -git pull +--- -# Descargar cambios sin fusionar -git fetch +## 📁 Mover / Renombrar -# Descargar todas las ramas remotas -git fetch --all +**Renombrar un archivo:** +```bash +git mv Index.txt Index.html ``` --- -## 📚 Historial y Logs +## 🌿 Ramas y Etiquetas -### Explorar el historial de commits: +### Listar Ramas +**Listar ramas locales:** ```bash -# Mostrar historial de commits -git log +git branch +``` -# Mostrar historial en una línea por commit -git log --oneline +**Listar todas las ramas (locales + remotas):** +```bash +git branch -a +``` -# Mostrar historial con gráfico -git log --graph +**Listar ramas remotas:** +```bash +git branch -r +``` -# Mostrar historial de un archivo específico -git log +**Listar ramas fusionadas:** +```bash +git branch --merged +``` -# Mostrar estadísticas de commits -git log --stat +### Cambiar y Crear Ramas -# Mostrar cambios en cada commit -git log -p +**Cambiar a una rama existente:** +```bash +git checkout +``` -# Mostrar últimos N commits -git log -n +**Crear y cambiar a una nueva rama:** +```bash +git checkout -b +``` -# Mostrar commits entre fechas -git log --since="2023-01-01" --until="2023-12-31" +**Cambiar a la rama anterior:** +```bash +git checkout - +``` -# Mostrar commits por autor -git log --author="Nombre del Autor" +**Crear una rama a partir de una rama existente:** +```bash +git checkout -b +``` -# Buscar en mensajes de commit -git log --grep="palabra clave" +**Crear una rama a partir de un commit específico:** +```bash +git checkout -b ``` ---- +**Crear una rama sin cambiar a ella:** +```bash +git branch +``` -## 🏷️ Etiquetas (Tags) +**Crear una rama de seguimiento (tracking):** +```bash +git branch --track +``` -### Gestionar etiquetas de versión: +### Operaciones con Ramas +**Obtener un archivo individual de otra rama:** ```bash -# Listar todas las etiquetas -git tag +git checkout -- +``` -# Crear etiqueta ligera -git tag +**Aplicar un commit específico de otra rama:** +```bash +git cherry-pick +``` + +**Renombrar la rama actual:** +```bash +git branch -m +``` + +**Eliminar una rama local:** +```bash +git branch -d +``` -# Crear etiqueta anotada -git tag -a -m "Mensaje de la etiqueta" +**Forzar la eliminación de una rama local:** +```bash +git branch -D +``` +> ⚠️ **Advertencia:** ¡Perderás los cambios no fusionados! -# Crear etiqueta en commit específico -git tag -a +### Etiquetas -# Mostrar información de una etiqueta -git show +**Crear una etiqueta en HEAD:** +```bash +git tag +``` -# Eliminar etiqueta local -git tag -d +**Crear una etiqueta anotada:** +```bash +git tag -a +``` -# Eliminar etiqueta remota -git push --delete +**Crear una etiqueta con mensaje:** +```bash +git tag -am 'message here' +``` -# Subir etiqueta específica -git push +**Listar todas las etiquetas:** +```bash +git tag +``` -# Subir todas las etiquetas -git push --tags +**Listar etiquetas con sus mensajes:** +```bash +git tag -n ``` --- -## ↩️ Deshacer Cambios +## 🔄 Actualizar y Publicar -### Revertir modificaciones: +### Gestión de Remotos +**Listar los remotos configurados:** ```bash -# Descartar cambios en archivo específico -git checkout +git remote -v +``` -# Descartar todos los cambios no confirmados -git checkout . +**Mostrar información de un remoto:** +```bash +git remote show +``` -# Revertir archivo a versión específica -git checkout +**Agregar un nuevo remoto:** +```bash +git remote add +``` -# Quitar archivo del área de preparación -git reset +**Renombrar un remoto:** +```bash +git remote rename +``` -# Quitar todos los archivos del área de preparación -git reset +**Eliminar un remoto:** +```bash +git remote rm +``` +> ℹ️ **Nota:** Esto solo elimina la referencia remota localmente, no el repositorio remoto en sí. -# Revertir al commit anterior (mantener cambios) -git reset --soft HEAD~1 +### Fetch y Pull -# Revertir al commit anterior (descartar cambios) -git reset --hard HEAD~1 +**Descargar cambios sin fusionar:** +```bash +git fetch +``` -# Revertir a commit específico -git reset --hard +**Descargar y fusionar cambios:** +```bash +git pull +``` -# Crear commit que revierte otro commit -git revert +**Obtener cambios de la rama principal:** +```bash +git pull origin master +``` -# Revertir múltiples commits -git revert .. +**Pull con rebase:** +```bash +git pull --rebase ``` ---- +### Push y Publicar -## 📦 Stash +**Publicar cambios locales:** +```bash +git push +``` -### Guardar trabajo temporalmente: +**Eliminar una rama remota:** +```bash +# Git v1.7.0+ +git push --delete + +# Git v1.5.0+ +git push : +``` +**Publicar etiquetas:** ```bash -# Guardar cambios actuales en stash -git stash +git push --tags +``` -# Guardar con mensaje descriptivo -git stash save "Mensaje descriptivo" +--- -# Listar todos los stashes -git stash list +## 🔀 Fusionar y Rebase -# Aplicar el último stash -git stash apply +### Operaciones de Fusión -# Aplicar stash específico -git stash apply stash@{0} +**Fusionar una rama en el HEAD actual:** +```bash +git merge +``` -# Aplicar y eliminar el último stash -git stash pop +**Configurar herramienta de fusión globalmente:** +```bash +git config --global merge.tool meld +``` -# Eliminar stash específico -git stash drop stash@{0} +**Usar la herramienta de fusión configurada:** +```bash +git mergetool +``` -# Eliminar todos los stashes -git stash clear +### Operaciones de Rebase -# Mostrar cambios en un stash -git stash show stash@{0} +> ⚠️ **Advertencia:** ¡No hagas rebase de commits ya publicados! -# Crear rama desde un stash -git stash branch stash@{0} +**Hacer rebase del HEAD actual sobre una rama:** +```bash +git rebase ``` ---- +**Abortar el rebase:** +```bash +git rebase --abort +``` -## 🌊 Git Flow +**Continuar el rebase después de resolver conflictos:** +```bash +git rebase --continue +``` -Git Flow es un modelo de ramificación que define un flujo de trabajo estricto diseñado alrededor del lanzamiento del proyecto. +### Resolución de Conflictos -### Ramas principales: -- **master/main**: Código de producción -- **develop**: Rama de desarrollo principal +**Marcar archivo como resuelto:** +```bash +git add +``` -### Ramas de soporte: -- **feature**: Para nuevas características -- **release**: Para preparar nuevas versiones -- **hotfix**: Para correcciones urgentes en producción +**Eliminar archivo resuelto:** +```bash +git rm +``` -### Comandos Git Flow: +### Comprimir Commits (Squash) +**Rebase interactivo para comprimir:** ```bash -# Inicializar git flow -git flow init +git rebase -i +``` + +**Ejemplo de configuración de squash:** +``` +# Antes +pick +pick +pick + +# Después (comprimir commit_id2 y commit_id3 en commit_id) +pick +squash +squash +``` -# Iniciar nueva característica -git flow feature start +--- -# Finalizar característica -git flow feature finish +## ↩️ Deshacer -# Publicar característica -git flow feature publish +### Descartar Cambios -# Iniciar release -git flow release start +**Descartar todos los cambios locales:** +```bash +git reset --hard HEAD +``` -# Finalizar release -git flow release finish +**Quitar todos los archivos del staging:** +```bash +git reset HEAD +``` -# Iniciar hotfix -git flow hotfix start +**Descartar cambios en un archivo específico:** +```bash +git checkout HEAD +``` -# Finalizar hotfix -git flow hotfix finish +### Operaciones de Reset + +**Resetear a un commit anterior (descartar todos los cambios):** +```bash +git reset --hard ``` -### Flujo de trabajo sin Git Flow: +**Resetear al estado de la rama remota:** +```bash +git reset --hard +# Ejemplo: git reset --hard upstream/master +``` -![Git Flow Commands](../Img/git-flow-commands-without-flow.png) +**Resetear preservando cambios como no preparados:** +```bash +git reset +``` +**Resetear preservando cambios locales no confirmados:** ```bash -# Crear rama de característica -git checkout develop -git checkout -b feature/nueva-caracteristica +git reset --keep +``` -# Trabajar en la característica -git add . -git commit -m "Agregar nueva característica" +### Revertir Commits -# Fusionar característica en develop -git checkout develop -git merge --no-ff feature/nueva-caracteristica -git branch -d feature/nueva-caracteristica +**Revertir un commit (crear un nuevo commit con cambios opuestos):** +```bash +git revert +``` -# Crear rama de release -git checkout develop -git checkout -b release/1.0.0 +### Limpiar Archivos Ignorados -# Finalizar release -git checkout master -git merge --no-ff release/1.0.0 -git tag -a 1.0.0 -m "Versión 1.0.0" -git checkout develop -git merge --no-ff release/1.0.0 -git branch -d release/1.0.0 +**Eliminar archivos confirmados accidentalmente que deberían ser ignorados:** +```bash +git rm -r --cached . +git add . +git commit -m "remove ignored files" ``` --- -## ⚙️ Archivos de Configuración +## 🌊 Git Flow -Git utiliza archivos de configuración para almacenar preferencias de usuario y repositorio: +**Git-flow mejorado:** [git-flow-avh](https://github.com/petervanderdoes/gitflow-avh) -### Niveles de configuración: +### 📋 Tabla de Contenidos +- [🔧 Instalación](#instalación) +- [🚀 Primeros Pasos](#primeros-pasos) +- [✨ Funcionalidades](#funcionalidades) +- [🎁 Crear un Release](#crear-un-release) +- [🔥 Hotfixes](#hotfixes) +- [📊 Resumen de Comandos](#resumen-de-comandos) -```bash -# Sistema (todos los usuarios) -git config --system +--- -# Usuario (usuario actual) -git config --global +### 🔧 Instalación {#instalación} + +> **Prerrequisito:** Se requiere una instalación funcional de Git. Git-flow funciona en macOS, Linux y Windows. + +**macOS (Homebrew):** +```bash +brew install git-flow-avh +``` -# Repositorio (proyecto específico) -git config --local +**macOS (MacPorts):** +```bash +port install git-flow ``` -### Configuraciones comunes: +**Linux (basado en Debian):** +```bash +sudo apt-get install git-flow +``` +**Windows (Cygwin):** +> Requiere wget y util-linux ```bash -# Identidad del usuario -git config --global user.name "Tu Nombre" -git config --global user.email "email@ejemplo.com" +wget -q -O - --no-check-certificate https://raw.githubusercontent.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh install | bash +``` -# Editor de texto -git config --global core.editor nano +--- -# Herramienta de merge -git config --global merge.tool vimdiff +### 🚀 Primeros Pasos -# Colores en la salida -git config --global color.ui auto +Git-flow necesita inicialización para personalizar la configuración de tu proyecto. -# Ver configuraciones -git config --list +**Inicializar (interactivo):** +```bash +git flow init +``` +> Responderás preguntas sobre las convenciones de nombres de ramas. Se recomiendan los valores predeterminados. + +**Inicializar (usar valores predeterminados):** +```bash +git flow init -d ``` --- -## 🔍 Búsqueda +### ✨ Funcionalidades -### Buscar en el historial y contenido: +Las funcionalidades son para desarrollar nueva funcionalidad para próximos lanzamientos. Normalmente solo existen en los repositorios de los desarrolladores. +**Iniciar nueva funcionalidad:** ```bash -# Buscar en mensajes de commit -git log --grep="palabra-clave" - -# Buscar cambios en el código -git log -S "fragmento de código" - -# Buscar en archivos de trabajo -git grep "patrón" +git flow feature start MYFEATURE +``` +> Crea una rama de funcionalidad basada en 'develop' y cambia a ella -# Buscar en commit específico -git grep "patrón" +**Finalizar funcionalidad:** +```bash +git flow feature finish MYFEATURE +``` +> Esto hará lo siguiente: +> 1. Fusionar MYFEATURE en 'develop' +> 2. Eliminar la rama de funcionalidad +> 3. Cambiar de vuelta a 'develop' -# Buscar ignorando mayúsculas/minúsculas -git grep -i "patrón" +**Publicar funcionalidad (para colaboración):** +```bash +git flow feature publish MYFEATURE +``` -# Buscar palabras completas -git grep -w "palabra" +**Obtener funcionalidad publicada:** +```bash +git flow feature pull origin MYFEATURE +``` -# Mostrar números de línea -git grep -n "patrón" +**Rastrear funcionalidad en origin:** +```bash +git flow feature track MYFEATURE ``` --- -## 📁 Mover/Renombrar +### 🎁 Crear un Release -### Mover y renombrar archivos: +Los releases permiten preparar nuevos lanzamientos de producción, permitiendo correcciones menores de errores y preparación de metadatos. +**Iniciar release:** ```bash -# Renombrar archivo -git mv archivo_viejo.txt archivo_nuevo.txt - -# Mover archivo a carpeta -git mv archivo.txt carpeta/ - -# Renombrar carpeta -git mv carpeta_vieja carpeta_nueva +git flow release start RELEASE [BASE] +``` +> Crea una rama de release desde 'develop'. Opcionalmente especifica el SHA-1 del commit [BASE]. -# Proceso de renombrado sin git mv -mv archivo_viejo.txt archivo_nuevo.txt -git add archivo_nuevo.txt -git rm archivo_viejo.txt +**Publicar release:** +```bash +git flow release publish RELEASE +``` -# Rastrear renombrados en el log -git log --follow archivo.txt +**Rastrear release remoto:** +```bash +git flow release track RELEASE +``` -# Detectar movimientos -git log --stat -M +**Finalizar release:** +```bash +git flow release finish RELEASE ``` +> Esto hará lo siguiente: +> 1. Fusionar la rama de release en 'master' +> 2. Etiquetar el release +> 3. Re-fusionar el release en 'develop' +> 4. Eliminar la rama de release + +> 💡 **No olvides:** Sube tus etiquetas con `git push --tags` --- -## 💡 Consejos Útiles +### 🔥 Hotfixes -### Alias útiles: +Los hotfixes abordan problemas críticos en versiones de producción en vivo. Se ramifican desde la etiqueta correspondiente en master. +**Iniciar hotfix:** ```bash -# Configurar alias útiles -git config --global alias.st status -git config --global alias.co checkout -git config --global alias.br branch -git config --global alias.ci commit -git config --global alias.unstage 'reset HEAD --' -git config --global alias.last 'log -1 HEAD' -git config --global alias.visual '!gitk' +git flow hotfix start VERSION [BASENAME] ``` -### Archivos .gitignore: - +**Finalizar hotfix:** ```bash -# Crear archivo .gitignore -echo "node_modules/" >> .gitignore -echo "*.log" >> .gitignore -echo ".env" >> .gitignore - -# Ignorar archivos ya rastreados -git rm --cached -echo "" >> .gitignore -git add .gitignore -git commit -m "Agregar archivo a .gitignore" +git flow hotfix finish VERSION ``` +> Fusiona de vuelta tanto en 'develop' como en 'master', y etiqueta la fusión en master --- -## 🌍 Otros Idiomas +### 📊 Resumen de Comandos -Esta hoja de referencia está disponible en los siguientes idiomas: - -- 🇺🇸 [English](../README.md) -- 🇸🇦 [العربية](git-cheat-sheet-ar.md) -- 🇧🇩 [বাংলা](git-cheat-sheet-bn.md) -- 🇩🇪 [Deutsch](git-cheat-sheet-de.md) -- 🇬🇷 [Ελληνικά](git-cheat-sheet-el.md) -- 🇪🇸 **Español** (actual) -- 🇮🇳 [हिन्दी](git-cheat-sheet-hi.md) -- 🇰🇷 [한국어](git-cheat-sheet-ko.md) -- 🇵🇱 [Polski](git-cheat-sheet-pl.md) -- 🇧🇷 [Português](git-cheat-sheet-pt_BR.md) -- 🇹🇷 [Türkçe](git-cheat-sheet-tr.md) -- 🇨🇳 [中文](git-cheat-sheet-zh.md) +

+ Comandos de Git Flow +

---- +### 🌊 Esquema de Git Flow -## 🤝 Contribuir +

+ Esquema de Git Flow +

-¡Las contribuciones son bienvenidas! Para ayudar a mejorar este proyecto: +--- -1. **Reportar problemas**: Comparte errores o sugerencias de mejora -2. **Agregar nuevos idiomas**: Crea traducciones o mejora las existentes -3. **Mejorar contenido**: Agrega nuevos comandos, ejemplos o explicaciones -4. **Dar retroalimentación**: Comparte tus experiencias y sugerencias -### Cómo contribuir: -- [Abrir un issue en GitHub](https://github.com/arslanbilal/git-cheat-sheet/issues) -- Enviar un pull request -- Sugerir mejoras de documentación +## 🌍 Otros Idiomas + +Esta hoja de referencia está disponible en múltiples idiomas: + +| Idioma | Enlace | +|--------|--------| +| 🇸🇦 Árabe | [git-cheat-sheet-ar.md](git-cheat-sheet-ar.md) | +| 🇧🇩 Bengalí | [git-cheat-sheet-bn.md](git-cheat-sheet-bn.md) | +| 🇧🇷 Portugués Brasileño | [git-cheat-sheet-pt_BR.md](git-cheat-sheet-pt_BR.md) | +| 🇨🇳 Chino | [git-cheat-sheet-zh.md](git-cheat-sheet-zh.md) | +| 🇩🇪 Alemán | [git-cheat-sheet-de.md](git-cheat-sheet-de.md) | +| 🇬🇷 Griego | [git-cheat-sheet-el.md](git-cheat-sheet-el.md) | +| 🇮🇳 Hindi | [git-cheat-sheet-hi.md](git-cheat-sheet-hi.md) | +| 🇰🇷 Coreano | [git-cheat-sheet-ko.md](git-cheat-sheet-ko.md) | +| 🇵🇱 Polaco | [git-cheat-sheet-pl.md](git-cheat-sheet-pl.md) | +| 🇪🇸 **Español** (actual) | | +| 🇹🇷 Turco | [git-cheat-sheet-tr.md](git-cheat-sheet-tr.md) | --- -## 📄 Licencia +## 🤝 Contribuir + +¡Damos la bienvenida a las contribuciones! Puedes: -Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo [LICENSE](../LICENSE) para más detalles. +- 🐛 Reportar errores o erratas +- ✨ Agregar nuevos comandos de Git +- 🌍 Traducir a nuevos idiomas +- 💡 Mejorar las explicaciones +- 📝 Mejorar el formato + +**Cómo contribuir:** +1. Haz un fork de este repositorio +2. Crea tu rama de funcionalidad (`git checkout -b feature/FuncionalidadIncreible`) +3. Confirma tus cambios (`git commit -m 'Agregar FuncionalidadIncreible'`) +4. Sube la rama (`git push origin feature/FuncionalidadIncreible`) +5. Abre un Pull Request --- -## 📖 Recursos Adicionales +## 📄 Licencia -- [Documentación Oficial de Git](https://git-scm.com/doc) -- [Tutoriales de Git de Atlassian](https://www.atlassian.com/git/tutorials) -- [Hoja de Referencia de Git de GitHub](https://education.github.com/git-cheat-sheet-education.pdf) -- [Tutorial Interactivo de Git](https://learngitbranching.js.org/) -- [Libro Pro Git (gratuito)](https://git-scm.com/book/es/v2) -- [Flujos de Trabajo con Git](https://www.atlassian.com/git/tutorials/comparing-workflows) +Este proyecto es de código abierto y está disponible bajo la [Licencia MIT](../LICENSE). --- -
- ⭐ ¡Si esta hoja de referencia es útil, dale una estrella!
- ¡Feliz codificación con Git! 🚀 -
+

+ ⭐ ¡Dale una estrella a este repositorio si te resultó útil! +

diff --git a/other-sheets/git-cheat-sheet-hi.md b/other-sheets/git-cheat-sheet-hi.md index f251d95..2948645 100644 --- a/other-sheets/git-cheat-sheet-hi.md +++ b/other-sheets/git-cheat-sheet-hi.md @@ -1,680 +1,865 @@ -# Git Cheat Sheet हिन्दी +# Git और Git Flow चीट शीट +[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -![Git Logo](../Img/git-logo.png) - -सबसे अधिक उपयोग किए जाने वाले Git कमांड का एक त्वरित संदर्भ गाइड, आसान उपयोग के लिए श्रेणियों में व्यवस्थित। +

+ Git +

--- -## 📖 इस गाइड के बारे में +## 📖 परिचय -यह व्यापक Git संदर्भ गाइड उन सभी के लिए एक संपूर्ण संसाधन है जो Git के साथ अपने वर्कफ़्लो को बेहतर बनाना चाहते हैं। Git के साथ अपनी यात्रा शुरू करने वाले शुरुआती लोगों से लेकर अनुभवी डेवलपर्स तक, यह गाइड आपकी विकास यात्रा को तेज़ करने के लिए व्यवस्थित और वर्गीकृत कमांड प्रदान करता है। +यह व्यापक Git चीट शीट आपको बिना सब कुछ याद किए Git कमांड में महारत हासिल करने में मदद करती है। चाहे आप शुरुआती हों या अनुभवी डेवलपर, यह गाइड आवश्यक Git ऑपरेशन के लिए त्वरित संदर्भ प्रदान करती है। -### मुख्य विशेषताएं: -- **व्यवस्थित श्रेणियां**: कमांड स्पष्ट और तर्कसंगत समूहों में व्यवस्थित हैं -- **व्यावहारिक उदाहरण**: वास्तविक दुनिया के उपयोग के मामलों के साथ -- **शुरुआती-अनुकूल**: स्पष्ट व्याख्या और सुझावों के साथ -- **त्वरित संदर्भ**: आवश्यक कमांड तक त्वरित पहुंच +**योगदान का स्वागत है!** आप कर सकते हैं: +- व्याकरण की गलतियाँ ठीक करें +- नए कमांड जोड़ें +- अपनी भाषा में अनुवाद करें +- व्याख्याओं को बेहतर बनाएं --- - -## 📑 विषय सूची - -- [📖 इस गाइड के बारे में](#इस-गाइड-के-बारे-में) -- [🔧 प्रारंभिक सेटअप](#प्रारंभिक-सेटअप) -- [⚙️ कॉन्फ़िगरेशन फ़ाइलें](#कॉन्फ़िगरेशन-फ़ाइलें) -- [📁 रिपॉजिटरी सेटअप](#रिपॉजिटरी-सेटअप) -- [📊 स्थिति कमांड](#स्थिति-कमांड) -- [📝 फ़ाइल प्रबंधन](#फ़ाइल-प्रबंधन) -- [💾 कमिट](#कमिट) -- [🌿 ब्रांच](#ब्रांच) -- [🔀 मर्ज](#मर्ज) -- [🌐 रिमोट रिपॉजिटरी](#रिमोट-रिपॉजिटरी) -- [📚 इतिहास और लॉग](#इतिहास-और-लॉग) -- [🔍 खोज](#खोज) -- [📁 स्थानांतरित/नाम बदलें](#स्थानांतरितनाम-बदलें) -- [🏷️ टैग](#टैग) -- [↩️ परिवर्तन पूर्ववत करना](#परिवर्तन-पूर्ववत-करना) -- [📦 स्टैश](#स्टैश) -- [🌊 Git Flow](#git-flow) -- [💡 उपयोगी सुझाव](#उपयोगी-सुझाव) -- [🌍 अन्य भाषाएं](#अन्य-भाषाएं) -- [🤝 योगदान](#योगदान) -- [📄 लाइसेंस](#लाइसेंस) -- [📖 अतिरिक्त संसाधन](#अतिरिक्त-संसाधन) +## 📋 विषय सूची + +- [🔧 सेटअप](#-सेटअप) +- [⚙️ कॉन्फ़िगरेशन फ़ाइलें](#️-कॉन्फ़िगरेशन-फ़ाइलें) +- [🆕 रिपॉजिटरी बनाएं](#-रिपॉजिटरी-बनाएं) +- [📝 स्थानीय परिवर्तन](#-स्थानीय-परिवर्तन) +- [🔍 खोज](#-खोज) +- [📖 कमिट इतिहास](#-कमिट-इतिहास) +- [📁 स्थानांतरित / नाम बदलें](#-स्थानांतरित--नाम-बदलें) +- [🌿 ब्रांच और टैग](#-ब्रांच-और-टैग) +- [🔄 अपडेट और प्रकाशित करें](#-अपडेट-और-प्रकाशित-करें) +- [🔀 मर्ज और रीबेस](#-मर्ज-और-रीबेस) +- [↩️ पूर्ववत करें](#️-पूर्ववत-करें) +- [🌊 Git Flow](#-git-flow) +- [🌍 अन्य भाषाएं](#-अन्य-भाषाएं) --- -## 🔧 प्रारंभिक सेटअप +## 🔧 सेटअप -अपनी व्यक्तिगत जानकारी के साथ Git कॉन्फ़िगर करें: +### कॉन्फ़िगरेशन देखें +**वर्तमान कॉन्फ़िगरेशन दिखाएं:** ```bash -# उपयोगकर्ता नाम सेट करें -git config --global user.name "आपका नाम" - -# ईमेल सेट करें -git config --global user.email "email@example.com" - -# वर्तमान कॉन्फ़िगरेशन देखें git config --list - -# डिफ़ॉल्ट एडिटर सेट करें -git config --global core.editor "nano" - -# मर्ज टूल सेट करें -git config --global merge.tool vimdiff ``` ---- +**रिपॉजिटरी कॉन्फ़िगरेशन दिखाएं:** +```bash +git config --local --list +``` -## ⚙️ कॉन्फ़िगरेशन फ़ाइलें +**ग्लोबल कॉन्फ़िगरेशन दिखाएं:** +```bash +git config --global --list +``` -Git उपयोगकर्ता और रिपॉजिटरी प्राथमिकताएं संग्रहीत करने के लिए कॉन्फ़िगरेशन फ़ाइलों का उपयोग करता है: +**सिस्टम कॉन्फ़िगरेशन दिखाएं:** +```bash +git config --system --list +``` -### कॉन्फ़िगरेशन स्तर: +### उपयोगकर्ता कॉन्फ़िगरेशन +**संस्करण इतिहास के लिए अपना नाम सेट करें:** ```bash -# सिस्टम (सभी उपयोगकर्ता) -git config --system - -# उपयोगकर्ता (वर्तमान उपयोगकर्ता) -git config --global +git config --global user.name "[firstname lastname]" +``` -# रिपॉजिटरी (विशिष्ट प्रोजेक्ट) -git config --local +**अपना ईमेल पता सेट करें:** +```bash +git config --global user.email "[valid-email]" ``` -### सामान्य कॉन्फ़िगरेशन: +### प्रदर्शन और एडिटर सेटिंग्स +**स्वचालित कमांड लाइन रंग सक्षम करें:** ```bash -# उपयोगकर्ता पहचान -git config --global user.name "आपका नाम" -git config --global user.email "email@example.com" +git config --global color.ui auto +``` -# टेक्स्ट एडिटर -git config --global core.editor nano +**कमिट के लिए ग्लोबल एडिटर सेट करें:** +```bash +git config --global core.editor vi +``` -# मर्ज टूल -git config --global merge.tool vimdiff +--- -# आउटपुट में रंग -git config --global color.ui auto +## ⚙️ कॉन्फ़िगरेशन फ़ाइलें -# कॉन्फ़िगरेशन देखें -git config --list -``` +| स्कोप | स्थान | कमांड फ्लैग | +|-------|--------|-------------| +| **रिपॉजिटरी** | `/.git/config` | `--local` | +| **उपयोगकर्ता** | `~/.gitconfig` | `--global` | +| **सिस्टम** | `/etc/gitconfig` | `--system` | --- -## 📁 रिपॉजिटरी सेटअप +## 🆕 रिपॉजिटरी बनाएं -### नई रिपॉजिटरी बनाएं: +### मौजूदा रिपॉजिटरी क्लोन करें +**SSH के माध्यम से:** ```bash -# नई Git रिपॉजिटरी बनाएं -git init +git clone ssh://user@domain.com/repo.git +``` -# मौजूदा रिपॉजिटरी को क्लोन करें -git clone <रिपॉजिटरी-url> +**HTTPS के माध्यम से:** +```bash +git clone https://domain.com/user/repo.git +``` -# विशिष्ट डायरेक्टरी में क्लोन करें -git clone <रिपॉजिटरी-url> <डायरेक्टरी-नाम> +### नई रिपॉजिटरी बनाएं + +**वर्तमान डायरेक्टरी में रिपॉजिटरी बनाएं:** +```bash +git init +``` + +**विशिष्ट डायरेक्टरी में रिपॉजिटरी बनाएं:** +```bash +git init ``` --- -## 📊 स्थिति कमांड +## 📝 स्थानीय परिवर्तन -### अपनी रिपॉजिटरी की स्थिति जांचें: +### स्थिति और अंतर जांचें +**वर्किंग डायरेक्टरी की स्थिति देखें:** ```bash -# रिपॉजिटरी की वर्तमान स्थिति दिखाएं git status +``` -# संक्षिप्त प्रारूप में स्थिति दिखाएं -git status -s +**ट्रैक की गई फ़ाइलों में परिवर्तन दिखाएं:** +```bash +git diff +``` -# अनट्रैक की गई फ़ाइलों को अनदेखा करके स्थिति दिखाएं -git status --ignored +**विशिष्ट फ़ाइल में परिवर्तन दिखाएं:** +```bash +git diff +``` -# संशोधित फ़ाइलों में अंतर दिखाएं -git diff +### परिवर्तन स्टेज करें + +**सभी वर्तमान परिवर्तन जोड़ें:** +```bash +git add . +``` -# स्टेजिंग क्षेत्र में अंतर दिखाएं -git diff --staged +**विशिष्ट फ़ाइलें जोड़ें:** +```bash +git add +``` -# ब्रांच के बीच अंतर दिखाएं -git diff <ब्रांच1> <ब्रांच2> +**फ़ाइल के कुछ हिस्सों को इंटरैक्टिव रूप से जोड़ें:** +```bash +git add -p ``` ---- +### परिवर्तन कमिट करें -## 📝 फ़ाइल प्रबंधन +**सभी ट्रैक की गई फ़ाइल परिवर्तन कमिट करें:** +```bash +git commit -a +``` -### फ़ाइलें जोड़ना और हटाना: +**स्टेज किए गए परिवर्तन कमिट करें:** +```bash +git commit +``` +**संदेश के साथ कमिट करें:** ```bash -# विशिष्ट फ़ाइल को स्टेजिंग क्षेत्र में जोड़ें -git add <फ़ाइल> +git commit -m 'message here' +``` -# सभी संशोधित फ़ाइलें जोड़ें -git add . +**स्टेजिंग छोड़कर संदेश के साथ कमिट करें:** +```bash +git commit -am 'message here' +``` -# विशिष्ट प्रकार की सभी फ़ाइलें जोड़ें -git add *.txt +**विशिष्ट तारीख के साथ कमिट करें:** +```bash +git commit --date="`date --date='n day ago'`" -am "" +``` -# इंटरैक्टिव रूप से जोड़ें -git add -i +### अंतिम कमिट संशोधित करें -# रिपॉजिटरी और कार्य डायरेक्टरी से फ़ाइल हटाएं -git rm <फ़ाइल> +> ⚠️ **चेतावनी:** प्रकाशित कमिट को संशोधित न करें! -# केवल रिपॉजिटरी से फ़ाइल हटाएं (डायरेक्टरी में रखें) -git rm --cached <फ़ाइल> +**अंतिम कमिट संशोधित करें:** +```bash +git commit -a --amend +``` -# फ़ाइल स्थानांतरित/नाम बदलें -git mv <स्रोत-फ़ाइल> <गंतव्य-फ़ाइल> +**कमिट संदेश बदले बिना संशोधित करें:** +```bash +git commit --amend --no-edit ``` ---- +**कमिटर की तारीख बदलें:** +```bash +GIT_COMMITTER_DATE="date" git commit --amend +``` -## 💾 कमिट +**लेखक की तारीख बदलें:** +```bash +git commit --amend --date="date" +``` -### रिपॉजिटरी में परिवर्तन सहेजें: +### परिवर्तन स्टैश करें +**वर्तमान परिवर्तन अस्थायी रूप से सहेजें:** ```bash -# संदेश के साथ कमिट करें -git commit -m "कमिट संदेश" +git stash +``` -# सभी संशोधित फ़ाइलें जोड़कर कमिट करें -git commit -am "कमिट संदेश" +**अंतिम स्टैश किए गए परिवर्तन लागू करें:** +```bash +git stash apply +``` -# अंतिम कमिट को संशोधित करें -git commit --amend +**विशिष्ट स्टैश लागू करें:** +```bash +git stash apply stash@{stash_number} +``` +> उपलब्ध स्टैश देखने के लिए `git stash list` का उपयोग करें -# खाली कमिट करें (CI/CD ट्रिगर के लिए उपयोगी) -git commit --allow-empty -m "CI ट्रिगर" +**अंतिम स्टैश हटाएं:** +```bash +git stash drop +``` -# विस्तृत संदेश के साथ कमिट करें (एडिटर खुलेगा) -git commit +**अन-कमिटेड परिवर्तनों को दूसरी ब्रांच में ले जाएं:** +```bash +git stash +git checkout branch2 +git stash pop ``` --- -## 🌿 ब्रांच +## 🔍 खोज -### ब्रांच के साथ काम करना: +### टेक्स्ट खोज +**सभी फ़ाइलों में टेक्स्ट खोजें:** ```bash -# सभी ब्रांच दिखाएं -git branch +git grep "Hello" +``` -# रिमोट ब्रांच दिखाएं -git branch -r +**विशिष्ट संस्करण में खोजें:** +```bash +git grep "Hello" v2.5 +``` -# सभी ब्रांच दिखाएं (स्थानीय और रिमोट) -git branch -a +### कमिट खोज -# नई ब्रांच बनाएं -git branch <ब्रांच-नाम> +**विशिष्ट कीवर्ड जोड़ने वाले कमिट खोजें:** +```bash +git log -S 'keyword' +``` -# ब्रांच पर स्विच करें -git checkout <ब्रांच-नाम> +**रेगुलर एक्सप्रेशन के साथ खोजें:** +```bash +git log -S 'keyword' --pickaxe-regex +``` -# नई ब्रांच बनाकर स्विच करें -git checkout -b <ब्रांच-नाम> +--- -# विशिष्ट कमिट से ब्रांच बनाएं -git checkout -b <ब्रांच-नाम> <कमिट-हैश> +## 📖 कमिट इतिहास -# ब्रांच हटाएं -git branch -d <ब्रांच-नाम> +### बुनियादी इतिहास -# जबरदस्ती ब्रांच हटाएं -git branch -D <ब्रांच-नाम> +**सभी कमिट दिखाएं (विस्तृत):** +```bash +git log +``` -# वर्तमान ब्रांच का नाम बदलें -git branch -m <नया-नाम> +**कमिट दिखाएं (प्रति कमिट एक लाइन):** +```bash +git log --oneline +``` -# विशिष्ट ब्रांच का नाम बदलें -git branch -m <पुराना-नाम> <नया-नाम> +**विशिष्ट लेखक के कमिट दिखाएं:** +```bash +git log --author="username" ``` ---- +**विशिष्ट फ़ाइल के परिवर्तन दिखाएं:** +```bash +git log -p +``` -## 🔀 मर्ज +### उन्नत इतिहास -### ब्रांच के बीच परिवर्तन मर्ज करना: +**ब्रांच की तुलना करें:** +```bash +git log --oneline .. --left-right +``` +**किसने क्या और कब बदला दिखाएं:** ```bash -# वर्तमान ब्रांच में अन्य ब्रांच मर्ज करें -git merge <ब्रांच-नाम> +git blame +``` -# फास्ट-फॉरवर्ड के बिना मर्ज करें (मर्ज कमिट बनाएं) -git merge --no-ff <ब्रांच-नाम> +### संदर्भ लॉग -# केवल फास्ट-फॉरवर्ड होने पर मर्ज करें -git merge --ff-only <ब्रांच-नाम> +**संदर्भ लॉग दिखाएं:** +```bash +git reflog show +``` -# चालू मर्ज को रद्द करें -git merge --abort +**संदर्भ लॉग हटाएं:** +```bash +git reflog delete +``` -# संघर्ष समाधान के बाद मर्ज जारी रखें -git merge --continue +--- + +## 📁 स्थानांतरित / नाम बदलें + +**फ़ाइल का नाम बदलें:** +```bash +git mv Index.txt Index.html ``` --- -## 🌐 रिमोट रिपॉजिटरी +## 🌿 ब्रांच और टैग -### रिमोट रिपॉजिटरी प्रबंधन: +### ब्रांच सूची +**स्थानीय ब्रांच दिखाएं:** ```bash -# रिमोट रिपॉजिटरी दिखाएं -git remote - -# URL के साथ रिमोट रिपॉजिटरी दिखाएं -git remote -v +git branch +``` -# रिमोट रिपॉजिटरी जोड़ें -git remote add <नाम> +**सभी ब्रांच दिखाएं (स्थानीय + रिमोट):** +```bash +git branch -a +``` -# रिमोट रिपॉजिटरी URL बदलें -git remote set-url <नाम> <नया-url> +**रिमोट ब्रांच दिखाएं:** +```bash +git branch -r +``` -# रिमोट रिपॉजिटरी हटाएं -git remote remove <नाम> +**मर्ज की गई ब्रांच दिखाएं:** +```bash +git branch --merged +``` -# रिमोट रिपॉजिटरी में परिवर्तन पुश करें -git push <रिमोट> <ब्रांच> +### ब्रांच स्विच और बनाएं -# ब्रांच पुश करके ट्रैकिंग सेट करें -git push -u <रिमोट> <ब्रांच> +**मौजूदा ब्रांच पर स्विच करें:** +```bash +git checkout +``` -# सभी ब्रांच पुश करें -git push --all +**नई ब्रांच बनाएं और स्विच करें:** +```bash +git checkout -b +``` -# टैग पुश करें -git push --tags +**पिछली ब्रांच पर स्विच करें:** +```bash +git checkout - +``` -# रिमोट रिपॉजिटरी से परिवर्तन डाउनलोड करें -git pull <रिमोट> <ब्रांच> +**मौजूदा ब्रांच से नई ब्रांच बनाएं:** +```bash +git checkout -b +``` -# मर्ज के बिना परिवर्तन डाउनलोड करें -git fetch <रिमोट> +**विशिष्ट कमिट से ब्रांच बनाएं:** +```bash +git checkout -b +``` -# सभी रिमोट ब्रांच डाउनलोड करें -git fetch --all +**बिना स्विच किए ब्रांच बनाएं:** +```bash +git branch ``` ---- +**ट्रैकिंग ब्रांच बनाएं:** +```bash +git branch --track +``` -## 📚 इतिहास और लॉग +### ब्रांच ऑपरेशन -### कमिट इतिहास का अन्वेषण: +**दूसरी ब्रांच से एक फ़ाइल चेकआउट करें:** +```bash +git checkout -- +``` +**दूसरी ब्रांच से विशिष्ट कमिट लागू करें:** ```bash -# कमिट इतिहास दिखाएं -git log +git cherry-pick +``` -# प्रति कमिट एक लाइन में इतिहास दिखाएं -git log --oneline +**वर्तमान ब्रांच का नाम बदलें:** +```bash +git branch -m +``` -# ग्राफ के साथ इतिहास दिखाएं -git log --graph +**स्थानीय ब्रांच हटाएं:** +```bash +git branch -d +``` -# विशिष्ट फ़ाइल का इतिहास दिखाएं -git log <फ़ाइल> +**जबरदस्ती स्थानीय ब्रांच हटाएं:** +```bash +git branch -D +``` +> ⚠️ **चेतावनी:** आप अन-मर्ज किए गए परिवर्तन खो देंगे! -# कमिट आंकड़े दिखाएं -git log --stat +### टैग -# प्रत्येक कमिट में परिवर्तन दिखाएं -git log -p +**HEAD पर टैग बनाएं:** +```bash +git tag +``` -# अंतिम N कमिट दिखाएं -git log -n <संख्या> +**एनोटेटेड टैग बनाएं:** +```bash +git tag -a +``` -# तारीखों के बीच कमिट दिखाएं -git log --since="2023-01-01" --until="2023-12-31" +**संदेश के साथ टैग बनाएं:** +```bash +git tag -am 'message here' +``` -# लेखक के अनुसार कमिट दिखाएं -git log --author="लेखक का नाम" +**सभी टैग दिखाएं:** +```bash +git tag +``` -# कमिट संदेश में खोजें -git log --grep="कीवर्ड" +**संदेश के साथ टैग दिखाएं:** +```bash +git tag -n ``` --- -## 🔍 खोज +## 🔄 अपडेट और प्रकाशित करें -### इतिहास और सामग्री में खोज: +### रिमोट प्रबंधन +**कॉन्फ़िगर किए गए रिमोट दिखाएं:** ```bash -# कमिट संदेशों में खोजें -git log --grep="कीवर्ड" +git remote -v +``` -# कोड में परिवर्तनों को खोजें -git log -S "कोड का हिस्सा" +**रिमोट की जानकारी दिखाएं:** +```bash +git remote show +``` -# कार्य फ़ाइलों में खोजें -git grep "पैटर्न" +**नया रिमोट जोड़ें:** +```bash +git remote add +``` -# विशिष्ट कमिट में खोजें -git grep "पैटर्न" <कमिट-हैश> +**रिमोट का नाम बदलें:** +```bash +git remote rename +``` -# केस को अनदेखा करके खोजें -git grep -i "पैटर्न" +**रिमोट हटाएं:** +```bash +git remote rm +``` +> ℹ️ **नोट:** यह केवल स्थानीय रूप से रिमोट संदर्भ हटाता है, रिमोट रिपॉजिटरी स्वयं नहीं। -# पूरे शब्द खोजें -git grep -w "शब्द" +### फ़ेच और पुल -# लाइन नंबर दिखाएं -git grep -n "पैटर्न" +**बिना मर्ज किए परिवर्तन डाउनलोड करें:** +```bash +git fetch ``` ---- - -## 📁 स्थानांतरित/नाम बदलें +**परिवर्तन डाउनलोड और मर्ज करें:** +```bash +git pull +``` -### फ़ाइल स्थानांतरित और नाम बदलना: +**मुख्य ब्रांच से परिवर्तन प्राप्त करें:** +```bash +git pull origin master +``` +**रीबेस के साथ पुल करें:** ```bash -# फ़ाइल का नाम बदलें -git mv पुराना_नाम.txt नया_नाम.txt +git pull --rebase +``` -# फ़ाइल को फ़ोल्डर में स्थानांतरित करें -git mv फ़ाइल.txt फ़ोल्डर/ +### पुश और प्रकाशित करें -# फ़ोल्डर का नाम बदलें -git mv पुराना_फ़ोल्डर नया_फ़ोल्डर +**स्थानीय परिवर्तन प्रकाशित करें:** +```bash +git push +``` -# git mv के बिना नाम बदलने की प्रक्रिया -mv पुराना_नाम.txt नया_नाम.txt -git add नया_नाम.txt -git rm पुराना_नाम.txt +**रिमोट ब्रांच हटाएं:** +```bash +# Git v1.7.0+ +git push --delete -# लॉग में नाम बदलाव खोजें -git log --follow फ़ाइल.txt +# Git v1.5.0+ +git push : +``` -# स्थानांतरण ट्रैक करें -git log --stat -M +**टैग प्रकाशित करें:** +```bash +git push --tags ``` --- -## 🏷️ टैग +## 🔀 मर्ज और रीबेस -### संस्करण टैग प्रबंधन: +### मर्ज ऑपरेशन +**ब्रांच को वर्तमान HEAD में मर्ज करें:** ```bash -# सभी टैग दिखाएं -git tag - -# हल्का टैग बनाएं -git tag <टैग-नाम> - -# एनोटेटेड टैग बनाएं -git tag -a <टैग-नाम> -m "टैग संदेश" - -# विशिष्ट कमिट पर टैग बनाएं -git tag -a <टैग-नाम> <कमिट-हैश> +git merge +``` -# टैग की जानकारी दिखाएं -git show <टैग-नाम> +**ग्लोबल मर्ज टूल कॉन्फ़िगर करें:** +```bash +git config --global merge.tool meld +``` -# स्थानीय टैग हटाएं -git tag -d <टैग-नाम> +**कॉन्फ़िगर किया गया मर्ज टूल उपयोग करें:** +```bash +git mergetool +``` -# रिमोट टैग हटाएं -git push --delete <रिमोट> <टैग-नाम> +### रीबेस ऑपरेशन -# विशिष्ट टैग पुश करें -git push <रिमोट> <टैग-नाम> +> ⚠️ **चेतावनी:** प्रकाशित कमिट को रीबेस न करें! -# सभी टैग पुश करें -git push <रिमोट> --tags +**वर्तमान HEAD को ब्रांच पर रीबेस करें:** +```bash +git rebase ``` ---- +**रीबेस रद्द करें:** +```bash +git rebase --abort +``` -## ↩️ परिवर्तन पूर्ववत करना +**कॉन्फ्लिक्ट हल करने के बाद रीबेस जारी रखें:** +```bash +git rebase --continue +``` -### संशोधन वापस करना: +### कॉन्फ्लिक्ट समाधान +**फ़ाइल को हल के रूप में चिह्नित करें:** ```bash -# विशिष्ट फ़ाइल में परिवर्तन रद्द करें -git checkout <फ़ाइल> - -# सभी गैर-कमिट किए गए परिवर्तन रद्द करें -git checkout . +git add +``` -# विशिष्ट संस्करण में फ़ाइल वापस करें -git checkout <कमिट-हैश> <फ़ाइल> +**हल की गई फ़ाइल हटाएं:** +```bash +git rm +``` -# स्टेजिंग क्षेत्र से फ़ाइल हटाएं -git reset <फ़ाइल> +### कमिट स्क्वॉश करें -# स्टेजिंग क्षेत्र से सभी फ़ाइलें हटाएं -git reset +**स्क्वॉश के लिए इंटरैक्टिव रीबेस:** +```bash +git rebase -i +``` -# पिछले कमिट पर वापस जाएं (परिवर्तन रखें) -git reset --soft HEAD~1 +**स्क्वॉश कॉन्फ़िगरेशन का उदाहरण:** +``` +# पहले +pick +pick +pick + +# बाद में (commit_id2 और commit_id3 को commit_id में स्क्वॉश करें) +pick +squash +squash +``` -# पिछले कमिट पर वापस जाएं (परिवर्तन रद्द करें) -git reset --hard HEAD~1 +--- -# विशिष्ट कमिट पर वापस जाएं -git reset --hard <कमिट-हैश> +## ↩️ पूर्ववत करें -# दूसरे कमिट को रद्द करने वाला नया कमिट बनाएं -git revert <कमिट-हैश> +### परिवर्तन रद्द करें -# कई कमिट रद्द करें -git revert <हैश-से>..<हैश-तक> +**सभी स्थानीय परिवर्तन रद्द करें:** +```bash +git reset --hard HEAD ``` ---- - -## 📦 स्टैश - -### अस्थायी रूप से काम सहेजना: +**सभी फ़ाइलें अनस्टेज करें:** +```bash +git reset HEAD +``` +**विशिष्ट फ़ाइल में परिवर्तन रद्द करें:** ```bash -# वर्तमान परिवर्तन स्टैश में सहेजें -git stash +git checkout HEAD +``` -# वर्णनात्मक संदेश के साथ सहेजें -git stash save "वर्णनात्मक संदेश" +### रीसेट ऑपरेशन -# सभी स्टैश दिखाएं -git stash list +**पिछले कमिट पर रीसेट करें (सभी परिवर्तन रद्द करें):** +```bash +git reset --hard +``` -# अंतिम स्टैश लागू करें -git stash apply +**रिमोट ब्रांच स्थिति पर रीसेट करें:** +```bash +git reset --hard +# उदाहरण: git reset --hard upstream/master +``` -# विशिष्ट स्टैश लागू करें -git stash apply stash@{0} +**परिवर्तनों को अनस्टेज्ड रखते हुए रीसेट करें:** +```bash +git reset +``` -# अंतिम स्टैश लागू करके हटाएं -git stash pop +**अन-कमिटेड स्थानीय परिवर्तनों को सुरक्षित रखते हुए रीसेट करें:** +```bash +git reset --keep +``` -# विशिष्ट स्टैश हटाएं -git stash drop stash@{0} +### कमिट रिवर्ट करें -# सभी स्टैश हटाएं -git stash clear +**कमिट रिवर्ट करें (विपरीत परिवर्तनों के साथ नया कमिट बनाएं):** +```bash +git revert +``` -# स्टैश में परिवर्तन दिखाएं -git stash show stash@{0} +### अनदेखी फ़ाइलें साफ़ करें -# स्टैश से ब्रांच बनाएं -git stash branch <ब्रांच-नाम> stash@{0} +**गलती से कमिट की गई फ़ाइलें हटाएं जिन्हें अनदेखा किया जाना चाहिए:** +```bash +git rm -r --cached . +git add . +git commit -m "remove ignored files" ``` --- ## 🌊 Git Flow -Git Flow एक ब्रांचिंग मॉडल है जो प्रोजेक्ट रिलीज के चारों ओर डिज़ाइन किए गए सख्त वर्कफ़्लो को परिभाषित करता है। +**बेहतर Git-flow:** [git-flow-avh](https://github.com/petervanderdoes/gitflow-avh) -### मुख्य ब्रांच: -- **master/main**: प्रोडक्शन कोड -- **develop**: मुख्य डेवलपमेंट ब्रांच +### 📋 विषय सूची +- [🔧 सेटअप](#setup-1) +- [🚀 शुरुआत करें](#getting-started) +- [✨ फीचर](#features) +- [🎁 रिलीज बनाएं](#make-a-release) +- [🔥 हॉटफिक्स](#hotfixes) +- [📊 कमांड अवलोकन](#commands-overview) -### सहायक ब्रांच: -- **feature**: नई सुविधाओं के लिए -- **release**: नए संस्करणों की तैयारी के लिए -- **hotfix**: प्रोडक्शन में तत्काल सुधार के लिए +--- -### Git Flow कमांड: +### 🔧 सेटअप {#setup-1} +> **पूर्वापेक्षा:** कार्यशील Git इंस्टॉलेशन आवश्यक है। Git-flow macOS, Linux और Windows पर काम करता है। + +**macOS (Homebrew):** ```bash -# git flow शुरू करें -git flow init +brew install git-flow-avh +``` -# नई सुविधा शुरू करें -git flow feature start <सुविधा-नाम> +**macOS (MacPorts):** +```bash +port install git-flow +``` -# सुविधा समाप्त करें -git flow feature finish <सुविधा-नाम> +**Linux (Debian-आधारित):** +```bash +sudo apt-get install git-flow +``` -# सुविधा प्रकाशित करें -git flow feature publish <सुविधा-नाम> +**Windows (Cygwin):** +> wget और util-linux आवश्यक है +```bash +wget -q -O - --no-check-certificate https://raw.githubusercontent.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh install | bash +``` -# रिलीज शुरू करें -git flow release start <संस्करण> +--- -# रिलीज समाप्त करें -git flow release finish <संस्करण> +### 🚀 शुरुआत करें -# हॉटफिक्स शुरू करें -git flow hotfix start <संस्करण> +Git-flow को आपकी प्रोजेक्ट सेटअप को अनुकूलित करने के लिए इनिशियलाइज़ेशन की आवश्यकता है। -# हॉटफिक्स समाप्त करें -git flow hotfix finish <संस्करण> +**इनिशियलाइज़ करें (इंटरैक्टिव):** +```bash +git flow init ``` +> आपसे ब्रांच नामकरण परंपराओं के बारे में प्रश्न पूछे जाएंगे। डिफ़ॉल्ट मान अनुशंसित हैं। -### Git Flow के बिना वर्कफ़्लो: +**इनिशियलाइज़ करें (डिफ़ॉल्ट उपयोग करें):** +```bash +git flow init -d +``` -![Git Flow Commands](../Img/git-flow-commands-without-flow.png) +--- +### ✨ फीचर + +फीचर आगामी रिलीज़ के लिए नई कार्यक्षमता विकसित करने के लिए हैं। वे आमतौर पर केवल डेवलपर रिपॉजिटरी में मौजूद होते हैं। + +**नया फीचर शुरू करें:** ```bash -# सुविधा ब्रांच बनाएं -git checkout develop -git checkout -b feature/नई-सुविधा +git flow feature start MYFEATURE +``` +> 'develop' के आधार पर फीचर ब्रांच बनाता है और उस पर स्विच करता है -# सुविधा पर काम करें -git add . -git commit -m "नई सुविधा जोड़ें" +**फीचर समाप्त करें:** +```bash +git flow feature finish MYFEATURE +``` +> यह करेगा: +> 1. MYFEATURE को 'develop' में मर्ज करेगा +> 2. फीचर ब्रांच हटाएगा +> 3. 'develop' पर वापस स्विच करेगा -# develop में सुविधा मर्ज करें -git checkout develop -git merge --no-ff feature/नई-सुविधा -git branch -d feature/नई-सुविधा +**फीचर प्रकाशित करें (सहयोग के लिए):** +```bash +git flow feature publish MYFEATURE +``` -# रिलीज ब्रांच बनाएं -git checkout develop -git checkout -b release/1.0.0 +**प्रकाशित फीचर प्राप्त करें:** +```bash +git flow feature pull origin MYFEATURE +``` -# रिलीज पूरा करें -git checkout master -git merge --no-ff release/1.0.0 -git tag -a 1.0.0 -m "संस्करण 1.0.0" -git checkout develop -git merge --no-ff release/1.0.0 -git branch -d release/1.0.0 +**ऑरिजिन फीचर ट्रैक करें:** +```bash +git flow feature track MYFEATURE ``` --- -## 💡 उपयोगी सुझाव +### 🎁 रिलीज बनाएं -### उपयोगी उपनाम: +रिलीज़ नए प्रोडक्शन रिलीज़ की तैयारी का समर्थन करती हैं, जिसमें छोटे बग फिक्स और मेटा-डेटा की तैयारी शामिल है। +**रिलीज शुरू करें:** ```bash -# उपयोगी उपनाम सेट करें -git config --global alias.st status -git config --global alias.co checkout -git config --global alias.br branch -git config --global alias.ci commit -git config --global alias.unstage 'reset HEAD --' -git config --global alias.last 'log -1 HEAD' -git config --global alias.visual '!gitk' +git flow release start RELEASE [BASE] ``` +> 'develop' से रिलीज ब्रांच बनाता है। वैकल्पिक रूप से [BASE] कमिट SHA-1 निर्दिष्ट करें। -### .gitignore फ़ाइलें: +**रिलीज प्रकाशित करें:** +```bash +git flow release publish RELEASE +``` +**रिमोट रिलीज ट्रैक करें:** ```bash -# .gitignore फ़ाइल बनाएं -echo "node_modules/" >> .gitignore -echo "*.log" >> .gitignore -echo ".env" >> .gitignore +git flow release track RELEASE +``` -# पहले से ट्रैक की गई फ़ाइलों को अनदेखा करें -git rm --cached <फ़ाइल> -echo "<फ़ाइल>" >> .gitignore -git add .gitignore -git commit -m ".gitignore में फ़ाइल जोड़ें" +**रिलीज समाप्त करें:** +```bash +git flow release finish RELEASE ``` +> यह करेगा: +> 1. रिलीज ब्रांच को 'master' में मर्ज करेगा +> 2. रिलीज को टैग करेगा +> 3. रिलीज को 'develop' में बैक-मर्ज करेगा +> 4. रिलीज ब्रांच हटाएगा + +> 💡 **न भूलें:** अपने टैग `git push --tags` से पुश करें --- -## 🌍 अन्य भाषाएं +### 🔥 हॉटफिक्स -यह Git चीट शीट निम्नलिखित भाषाओं में उपलब्ध है: - -- 🇺🇸 [English](../README.md) -- 🇸🇦 [العربية](git-cheat-sheet-ar.md) -- 🇧🇩 [বাংলা](git-cheat-sheet-bn.md) -- 🇩🇪 [Deutsch](git-cheat-sheet-de.md) -- 🇬🇷 [Ελληνικά](git-cheat-sheet-el.md) -- 🇪🇸 [Español](git-cheat-sheet-es.md) -- 🇮🇳 **हिन्दी** (वर्तमान) -- 🇰🇷 [한국어](git-cheat-sheet-ko.md) -- 🇵🇱 [Polski](git-cheat-sheet-pl.md) -- 🇧🇷 [Português](git-cheat-sheet-pt_BR.md) -- 🇹🇷 [Türkçe](git-cheat-sheet-tr.md) -- 🇨🇳 [中文](git-cheat-sheet-zh.md) +हॉटफिक्स लाइव प्रोडक्शन संस्करणों में गंभीर समस्याओं को संबोधित करते हैं। वे master पर संबंधित टैग से ब्रांच बनाते हैं। + +**हॉटफिक्स शुरू करें:** +```bash +git flow hotfix start VERSION [BASENAME] +``` + +**हॉटफिक्स समाप्त करें:** +```bash +git flow hotfix finish VERSION +``` +> 'develop' और 'master' दोनों में वापस मर्ज करता है, और master मर्ज को टैग करता है --- -## 🤝 योगदान +### 📊 कमांड अवलोकन -हम योगदान का स्वागत करते हैं! इस परियोजना को बेहतर बनाने में मदद करने के लिए: +

+ Git Flow Commands +

-1. **मुद्दे रिपोर्ट करें**: गलतियां या सुधार के सुझाव साझा करें -2. **नई भाषाएं जोड़ें**: अनुवाद बनाएं या मौजूदा को बेहतर बनाएं -3. **सामग्री सुधारें**: नए कमांड, उदाहरण या व्याख्याएं जोड़ें -4. **प्रतिक्रिया दें**: आपके अनुभव और सुझाव साझा करें +### 🌊 Git Flow स्कीमा -### योगदान करने के लिए: -- [GitHub पर इश्यू खोलें](https://github.com/arslanbilal/git-cheat-sheet/issues) -- Pull request सबमिट करें -- दस्तावेज़ीकरण में सुधार सुझाएं +

+ Git Flow Schema +

--- -## 📄 लाइसेंस -यह परियोजना MIT लाइसेंस के तहत लाइसेंसीकृत है। अधिक विवरण के लिए [LICENSE](../LICENSE) फ़ाइल देखें। +## 🌍 अन्य भाषाएं + +यह चीट शीट कई भाषाओं में उपलब्ध है: + +| भाषा | लिंक | +|------|------| +| 🇸🇦 अरबी | [git-cheat-sheet-ar.md](git-cheat-sheet-ar.md) | +| 🇧🇩 बंगाली | [git-cheat-sheet-bn.md](git-cheat-sheet-bn.md) | +| 🇧🇷 ब्राज़ीलियाई पुर्तगाली | [git-cheat-sheet-pt_BR.md](git-cheat-sheet-pt_BR.md) | +| 🇨🇳 चीनी | [git-cheat-sheet-zh.md](git-cheat-sheet-zh.md) | +| 🇩🇪 जर्मन | [git-cheat-sheet-de.md](git-cheat-sheet-de.md) | +| 🇬🇷 ग्रीक | [git-cheat-sheet-el.md](git-cheat-sheet-el.md) | +| 🇮🇳 **हिन्दी** | **(वर्तमान)** | +| 🇰🇷 कोरियाई | [git-cheat-sheet-ko.md](git-cheat-sheet-ko.md) | +| 🇵🇱 पोलिश | [git-cheat-sheet-pl.md](git-cheat-sheet-pl.md) | +| 🇪🇸 स्पेनिश | [git-cheat-sheet-es.md](git-cheat-sheet-es.md) | +| 🇹🇷 तुर्की | [git-cheat-sheet-tr.md](git-cheat-sheet-tr.md) | --- -## 📖 अतिरिक्त संसाधन +## 🤝 योगदान + +हम योगदान का स्वागत करते हैं! आप कर सकते हैं: + +- 🐛 बग या टाइपो रिपोर्ट करें +- ✨ नए Git कमांड जोड़ें +- 🌍 नई भाषाओं में अनुवाद करें +- 💡 व्याख्याओं को बेहतर बनाएं +- 📝 फ़ॉर्मेटिंग में सुधार करें + +**योगदान कैसे करें:** +1. इस रिपॉजिटरी को फ़ॉर्क करें +2. अपनी फीचर ब्रांच बनाएं (`git checkout -b feature/AmazingFeature`) +3. अपने परिवर्तन कमिट करें (`git commit -m 'Add some AmazingFeature'`) +4. ब्रांच पर पुश करें (`git push origin feature/AmazingFeature`) +5. Pull Request खोलें + +--- + +## 📄 लाइसेंस -- [Git आधिकारिक दस्तावेज़ीकरण](https://git-scm.com/doc) -- [Atlassian Git ट्यूटोरियल](https://www.atlassian.com/git/tutorials) -- [GitHub Git चीट शीट](https://education.github.com/git-cheat-sheet-education.pdf) -- [इंटरैक्टिव Git ट्यूटोरियल](https://learngitbranching.js.org/) -- [Pro Git पुस्तक (निःशुल्क)](https://git-scm.com/book/hi/v2) -- [Git वर्कफ़्लो](https://www.atlassian.com/git/tutorials/comparing-workflows) +यह प्रोजेक्ट ओपन सोर्स है और [MIT लाइसेंस](../LICENSE) के तहत उपलब्ध है। --- -
- ⭐ अगर यह चीट शीट उपयोगी है तो इसे स्टार करें!
- Git के साथ हैप्पी कोडिंग! 🚀 -
+

+ ⭐ अगर आपको यह रिपॉजिटरी उपयोगी लगी तो इसे स्टार करें! +

diff --git a/other-sheets/git-cheat-sheet-ko.md b/other-sheets/git-cheat-sheet-ko.md index 88b85ce..1fb1684 100644 --- a/other-sheets/git-cheat-sheet-ko.md +++ b/other-sheets/git-cheat-sheet-ko.md @@ -1,717 +1,865 @@ -# Git Cheat Sheet 한국어 +# Git과 Git Flow 치트 시트 +[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -![Git Logo](../Img/git-logo.png) - -가장 많이 사용되는 Git 명령어들의 빠른 참조 가이드, 쉬운 사용을 위해 카테고리별로 정리되었습니다. - -## 📖 소개 - -이 Git 치트 시트는 개발자들이 가장 자주 사용하는 Git 명령어들을 빠르게 찾아볼 수 있도록 구성되었습니다. 초보자부터 숙련된 개발자까지, 모든 수준의 사용자가 Git 워크플로우를 효율적으로 관리할 수 있도록 도와줍니다. +

+ Git +

--- -## 📖 이 가이드에 대해 +## 📖 소개 -이 포괄적인 Git 참조 가이드는 Git 워크플로우를 개선하고자 하는 모든 사람들을 위한 완전한 리소스입니다. Git 여정을 시작하는 초보자부터 숙련된 개발자까지, 이 가이드는 개발 과정을 가속화하기 위해 체계적이고 분류된 명령어를 제공합니다. +이 포괄적인 Git 치트 시트는 모든 Git 명령어를 외우지 않고도 Git을 마스터할 수 있도록 도와줍니다. 초보자든 숙련된 개발자든, 이 가이드는 필수적인 Git 작업에 대한 빠른 참조를 제공합니다. -### 주요 특징: -- **체계적인 카테고리**: 명령어들이 명확하고 논리적인 그룹으로 정리됨 -- **실용적인 예제**: 실제 사용 사례와 함께 제공 -- **초보자 친화적**: 명확한 설명과 팁 포함 -- **빠른 참조**: 필수 명령어에 대한 빠른 접근 +**기여를 환영합니다!** 자유롭게: +- 문법 오류 수정 +- 새로운 명령어 추가 +- 다른 언어로 번역 +- 설명 개선 --- - -## 📑 목차 - -- [📖 이 가이드에 대해](#이-가이드에-대해) -- [🔧 초기 설정](#초기-설정) -- [⚙️ 설정 파일](#설정-파일) -- [📁 저장소 설정](#저장소-설정) -- [📊 상태 명령어](#상태-명령어) -- [📝 파일 관리](#파일-관리) -- [💾 커밋](#커밋) -- [🌿 브랜치](#브랜치) -- [🔀 머지](#머지) -- [🌐 원격 저장소](#원격-저장소) -- [📚 히스토리와 로그](#히스토리와-로그) -- [🔍 검색](#검색) -- [📁 이동/이름 변경](#이동이름-변경) -- [🏷️ 태그](#태그) -- [↩️ 변경사항 되돌리기](#변경사항-되돌리기) -- [📦 스태시](#스태시) -- [🌊 Git Flow](#git-flow) -- [💡 유용한 팁](#유용한-팁) -- [🌍 다른 언어](#다른-언어) -- [🤝 기여하기](#기여하기) -- [📄 라이센스](#라이센스) -- [📖 추가 리소스](#추가-리소스) +## 📋 목차 + +- [🔧 설정](#-설정) +- [⚙️ 설정 파일](#️-설정-파일) +- [🆕 저장소 생성](#-저장소-생성) +- [📝 로컬 변경사항](#-로컬-변경사항) +- [🔍 검색](#-검색) +- [📖 커밋 히스토리](#-커밋-히스토리) +- [📁 이동 / 이름 변경](#-이동--이름-변경) +- [🌿 브랜치와 태그](#-브랜치와-태그) +- [🔄 업데이트와 발행](#-업데이트와-발행) +- [🔀 머지와 리베이스](#-머지와-리베이스) +- [↩️ 되돌리기](#️-되돌리기) +- [🌊 Git Flow](#-git-flow) +- [🌍 다른 언어](#-다른-언어) --- -## 🔧 초기 설정 +## 🔧 설정 -개인 정보로 Git을 설정하세요: +### 설정 확인 +**현재 설정 보기:** ```bash -# 사용자 이름 설정 -git config --global user.name "당신의 이름" - -# 이메일 설정 -git config --global user.email "email@example.com" - -# 현재 설정 보기 git config --list +``` -# 기본 에디터 설정 -git config --global core.editor "nano" - -# 머지 도구 설정 -git config --global merge.tool vimdiff +**저장소 설정 보기:** +```bash +git config --local --list ``` ---- +**전역 설정 보기:** +```bash +git config --global --list +``` -## ⚙️ 설정 파일 +**시스템 설정 보기:** +```bash +git config --system --list +``` -Git은 여러 레벨에서 설정을 관리할 수 있습니다: +### 사용자 설정 -### 전역 설정 파일 +**버전 기록에 사용할 이름 설정:** ```bash -# 전역 설정 파일 경로 -~/.gitconfig - -# 전역 설정 편집 -git config --global --edit +git config --global user.name "[firstname lastname]" ``` -### 저장소별 설정 파일 +**이메일 주소 설정:** ```bash -# 저장소별 설정 파일 경로 -.git/config - -# 저장소별 설정 편집 -git config --edit +git config --global user.email "[valid-email]" ``` -### 시스템 전체 설정 -```bash -# 시스템 설정 파일 (관리자 권한 필요) -/etc/gitconfig +### 표시 및 에디터 설정 -# 시스템 설정 편집 -git config --system --edit +**자동 명령줄 색상 표시 활성화:** +```bash +git config --global color.ui auto ``` -### 유용한 설정들 +**커밋용 전역 에디터 설정:** ```bash -# 컬러 출력 활성화 -git config --global color.ui true +git config --global core.editor vi +``` -# 기본 브랜치명 설정 -git config --global init.defaultBranch main +--- -# 줄 바꿈 처리 (macOS/Linux) -git config --global core.autocrlf input +## ⚙️ 설정 파일 -# 줄 바꿈 처리 (Windows) -git config --global core.autocrlf true -``` +| 범위 | 위치 | 명령어 플래그 | +|------|------|--------------| +| **저장소** | `/.git/config` | `--local` | +| **사용자** | `~/.gitconfig` | `--global` | +| **시스템** | `/etc/gitconfig` | `--system` | --- -## 📁 저장소 설정 +## 🆕 저장소 생성 -### 새 저장소 만들기: +### 기존 저장소 복제 +**SSH를 통해:** ```bash -# 새 Git 저장소 생성 -git init +git clone ssh://user@domain.com/repo.git +``` -# 기존 저장소 클론 -git clone <저장소-url> +**HTTPS를 통해:** +```bash +git clone https://domain.com/user/repo.git +``` + +### 새 저장소 초기화 + +**현재 디렉토리에 저장소 생성:** +```bash +git init +``` -# 특정 디렉토리에 클론 -git clone <저장소-url> <디렉토리-이름> +**특정 디렉토리에 저장소 생성:** +```bash +git init ``` --- -## 📊 상태 명령어 +## 📝 로컬 변경사항 -### 저장소 상태 확인: +### 상태 및 차이점 확인 +**작업 디렉토리 상태 보기:** ```bash -# 저장소의 현재 상태 보기 git status +``` -# 짧은 형식으로 상태 보기 -git status -s +**추적 파일의 변경사항 보기:** +```bash +git diff +``` -# 추적되지 않는 파일을 무시하고 상태 보기 -git status --ignored +**특정 파일의 변경사항 보기:** +```bash +git diff +``` -# 수정된 파일의 차이점 보기 -git diff +### 변경사항 스테이징 -# 스테이징 영역의 차이점 보기 -git diff --staged +**모든 현재 변경사항 추가:** +```bash +git add . +``` -# 브랜치 간 차이점 보기 -git diff <브랜치1> <브랜치2> +**특정 파일 추가:** +```bash +git add ``` ---- +**파일의 일부를 대화형으로 추가:** +```bash +git add -p +``` + +### 변경사항 커밋 -## 📝 파일 관리 +**추적된 모든 파일의 변경사항 커밋:** +```bash +git commit -a +``` -### 파일 추가 및 제거: +**스테이징된 변경사항 커밋:** +```bash +git commit +``` +**메시지와 함께 커밋:** ```bash -# 특정 파일을 스테이징 영역에 추가 -git add <파일> +git commit -m 'message here' +``` -# 모든 수정된 파일 추가 -git add . +**스테이징 건너뛰고 메시지와 함께 커밋:** +```bash +git commit -am 'message here' +``` -# 특정 타입의 모든 파일 추가 -git add *.txt +**특정 날짜로 커밋:** +```bash +git commit --date="`date --date='n day ago'`" -am "" +``` -# 대화형으로 추가 -git add -i +### 마지막 커밋 수정 -# 저장소와 작업 디렉토리에서 파일 제거 -git rm <파일> +> ⚠️ **경고:** 발행된 커밋은 수정하지 마세요! -# 저장소에서만 파일 제거 (디렉토리에는 유지) -git rm --cached <파일> +**마지막 커밋 수정:** +```bash +git commit -a --amend +``` -# 파일 이동/이름 변경 -git mv <소스-파일> <대상-파일> +**커밋 메시지를 변경하지 않고 수정:** +```bash +git commit --amend --no-edit ``` ---- +**커미터 날짜 변경:** +```bash +GIT_COMMITTER_DATE="date" git commit --amend +``` -## 💾 커밋 +**작성자 날짜 변경:** +```bash +git commit --amend --date="date" +``` -### 저장소에 변경사항 저장: +### 변경사항 스태시 +**현재 변경사항 임시 저장:** ```bash -# 메시지와 함께 커밋 -git commit -m "커밋 메시지" +git stash +``` -# 모든 수정된 파일을 추가하고 커밋 -git commit -am "커밋 메시지" +**마지막으로 스태시한 변경사항 적용:** +```bash +git stash apply +``` -# 마지막 커밋 수정 -git commit --amend +**특정 스태시 적용:** +```bash +git stash apply stash@{stash_number} +``` +> `git stash list`를 사용하여 사용 가능한 스태시 확인 -# 빈 커밋 (CI/CD 트리거에 유용) -git commit --allow-empty -m "CI 트리거" +**마지막 스태시 제거:** +```bash +git stash drop +``` -# 상세한 메시지로 커밋 (에디터 열림) -git commit +**커밋되지 않은 변경사항을 다른 브랜치로 이동:** +```bash +git stash +git checkout branch2 +git stash pop ``` --- -## 🌿 브랜치 +## 🔍 검색 -### 브랜치 작업: +### 텍스트 검색 +**모든 파일에서 텍스트 검색:** ```bash -# 모든 브랜치 보기 -git branch +git grep "Hello" +``` -# 원격 브랜치 보기 -git branch -r +**특정 버전에서 검색:** +```bash +git grep "Hello" v2.5 +``` -# 모든 브랜치 보기 (로컬과 원격) -git branch -a +### 커밋 검색 -# 새 브랜치 생성 -git branch <브랜치-이름> +**특정 키워드를 도입한 커밋 찾기:** +```bash +git log -S 'keyword' +``` -# 브랜치로 전환 -git checkout <브랜치-이름> +**정규표현식으로 검색:** +```bash +git log -S 'keyword' --pickaxe-regex +``` -# 새 브랜치 생성하고 전환 -git checkout -b <브랜치-이름> +--- -# 특정 커밋에서 브랜치 생성 -git checkout -b <브랜치-이름> <커밋-해시> +## 📖 커밋 히스토리 -# 브랜치 삭제 -git branch -d <브랜치-이름> +### 기본 히스토리 -# 강제로 브랜치 삭제 -git branch -D <브랜치-이름> +**모든 커밋 보기 (상세):** +```bash +git log +``` -# 현재 브랜치 이름 변경 -git branch -m <새-이름> +**커밋 보기 (한 줄씩):** +```bash +git log --oneline +``` -# 특정 브랜치 이름 변경 -git branch -m <옛-이름> <새-이름> +**특정 작성자의 커밋 보기:** +```bash +git log --author="username" ``` ---- +**특정 파일의 변경사항 보기:** +```bash +git log -p +``` -## 🔀 머지 +### 고급 히스토리 -### 브랜치 간 변경사항 머지: +**브랜치 비교:** +```bash +git log --oneline .. --left-right +``` +**누가 언제 무엇을 변경했는지 보기:** ```bash -# 현재 브랜치에 다른 브랜치 머지 -git merge <브랜치-이름> +git blame +``` -# 패스트-포워드 없이 머지 (머지 커밋 생성) -git merge --no-ff <브랜치-이름> +### 참조 로그 -# 패스트-포워드일 때만 머지 -git merge --ff-only <브랜치-이름> +**참조 로그 보기:** +```bash +git reflog show +``` -# 진행 중인 머지 취소 -git merge --abort +**참조 로그 삭제:** +```bash +git reflog delete +``` + +--- -# 충돌 해결 후 머지 계속 -git merge --continue +## 📁 이동 / 이름 변경 + +**파일 이름 변경:** +```bash +git mv Index.txt Index.html ``` --- -## 🌐 원격 저장소 +## 🌿 브랜치와 태그 -### 원격 저장소 관리: +### 브랜치 목록 +**로컬 브랜치 목록:** ```bash -# 원격 저장소 보기 -git remote - -# URL과 함께 원격 저장소 보기 -git remote -v +git branch +``` -# 원격 저장소 추가 -git remote add <이름> +**모든 브랜치 목록 (로컬 + 원격):** +```bash +git branch -a +``` -# 원격 저장소 URL 변경 -git remote set-url <이름> <새-url> +**원격 브랜치 목록:** +```bash +git branch -r +``` -# 원격 저장소 제거 -git remote remove <이름> +**머지된 브랜치 목록:** +```bash +git branch --merged +``` -# 원격 저장소에 변경사항 푸시 -git push <원격> <브랜치> +### 브랜치 전환 및 생성 -# 브랜치 푸시하고 추적 설정 -git push -u <원격> <브랜치> +**기존 브랜치로 전환:** +```bash +git checkout +``` -# 모든 브랜치 푸시 -git push --all +**새 브랜치를 생성하고 전환:** +```bash +git checkout -b +``` -# 태그 푸시 -git push --tags +**이전 브랜치로 전환:** +```bash +git checkout - +``` -# 원격 저장소에서 변경사항 다운로드 -git pull <원격> <브랜치> +**기존 브랜치에서 새 브랜치 생성:** +```bash +git checkout -b +``` -# 머지 없이 변경사항 다운로드 -git fetch <원격> +**특정 커밋에서 브랜치 생성:** +```bash +git checkout -b +``` -# 모든 원격 브랜치 다운로드 -git fetch --all +**전환 없이 브랜치 생성:** +```bash +git branch ``` ---- +**추적 브랜치 생성:** +```bash +git branch --track +``` -## 📚 히스토리와 로그 +### 브랜치 작업 -### 커밋 히스토리 탐색: +**다른 브랜치에서 단일 파일 체크아웃:** +```bash +git checkout -- +``` +**다른 브랜치의 특정 커밋 적용:** ```bash -# 커밋 히스토리 보기 -git log +git cherry-pick +``` -# 커밋당 한 줄로 히스토리 보기 -git log --oneline +**현재 브랜치 이름 변경:** +```bash +git branch -m +``` -# 그래프와 함께 히스토리 보기 -git log --graph +**로컬 브랜치 삭제:** +```bash +git branch -d +``` -# 특정 파일의 히스토리 보기 -git log <파일> +**로컬 브랜치 강제 삭제:** +```bash +git branch -D +``` +> ⚠️ **경고:** 머지되지 않은 변경사항이 손실됩니다! -# 커밋 통계 보기 -git log --stat +### 태그 -# 각 커밋의 변경사항 보기 -git log -p +**HEAD에 태그 생성:** +```bash +git tag +``` -# 마지막 N개 커밋 보기 -git log -n <숫자> +**주석이 달린 태그 생성:** +```bash +git tag -a +``` -# 날짜 범위 내 커밋 보기 -git log --since="2023-01-01" --until="2023-12-31" +**메시지와 함께 태그 생성:** +```bash +git tag -am 'message here' +``` -# 작성자별 커밋 보기 -git log --author="작성자 이름" +**모든 태그 목록:** +```bash +git tag +``` -# 커밋 메시지에서 검색 -git log --grep="키워드" +**메시지와 함께 태그 목록:** +```bash +git tag -n ``` --- -## 🔍 검색 +## 🔄 업데이트와 발행 -### 파일과 내용 검색: +### 원격 저장소 관리 +**설정된 원격 저장소 목록:** ```bash -# 파일 내용에서 텍스트 검색 -git grep "검색어" +git remote -v +``` -# 특정 커밋에서 검색 -git grep "검색어" HEAD~3 +**원격 저장소 정보 보기:** +```bash +git remote show +``` -# 대소문자 구분 없이 검색 -git grep -i "검색어" +**새 원격 저장소 추가:** +```bash +git remote add +``` -# 정확한 단어만 검색 -git grep -w "검색어" +**원격 저장소 이름 변경:** +```bash +git remote rename +``` -# 줄 번호와 함께 검색 -git grep -n "검색어" +**원격 저장소 제거:** +```bash +git remote rm +``` +> ℹ️ **참고:** 이 명령어는 로컬의 원격 참조만 제거하며, 원격 저장소 자체는 삭제하지 않습니다. -# 매칭된 파일 이름만 표시 -git grep -l "검색어" +### 가져오기와 풀 -# 로그에서 특정 텍스트 변경사항 검색 -git log -S "검색어" +**머지 없이 변경사항 다운로드:** +```bash +git fetch +``` -# 정규표현식으로 로그 검색 -git log --grep="패턴" --perl-regexp +**변경사항 다운로드 및 머지:** +```bash +git pull +``` -# 파일명 검색 -git ls-files | grep "패턴" +**메인 브랜치의 변경사항 가져오기:** +```bash +git pull origin master ``` ---- +**리베이스와 함께 풀:** +```bash +git pull --rebase +``` -## 🏷️ 태그 +### 푸시 및 발행 -### 버전 태그 관리: +**로컬 변경사항 발행:** +```bash +git push +``` +**원격 브랜치 삭제:** ```bash -# 모든 태그 보기 -git tag +# Git v1.7.0+ +git push --delete -# 가벼운 태그 생성 -git tag <태그-이름> +# Git v1.5.0+ +git push : +``` -# 주석이 달린 태그 생성 -git tag -a <태그-이름> -m "태그 메시지" +**태그 발행:** +```bash +git push --tags +``` -# 특정 커밋에 태그 생성 -git tag -a <태그-이름> <커밋-해시> +--- -# 태그 정보 보기 -git show <태그-이름> +## 🔀 머지와 리베이스 -# 로컬 태그 삭제 -git tag -d <태그-이름> +### 머지 작업 -# 원격 태그 삭제 -git push --delete <원격> <태그-이름> +**현재 HEAD에 브랜치 머지:** +```bash +git merge +``` -# 특정 태그 푸시 -git push <원격> <태그-이름> +**전역 머지 도구 설정:** +```bash +git config --global merge.tool meld +``` -# 모든 태그 푸시 -git push <원격> --tags +**설정된 머지 도구 사용:** +```bash +git mergetool ``` ---- +### 리베이스 작업 -## 📁 이동/이름 변경 +> ⚠️ **경고:** 발행된 커밋은 리베이스하지 마세요! -### 파일과 디렉토리 관리: +**현재 HEAD를 브랜치에 리베이스:** +```bash +git rebase +``` +**리베이스 중단:** ```bash -# 파일 이동/이름 변경 -git mv <기존-파일> <새-파일> +git rebase --abort +``` -# 디렉토리 이름 변경 -git mv <기존-디렉토리> <새-디렉토리> +**충돌 해결 후 리베이스 계속:** +```bash +git rebase --continue +``` -# 여러 파일을 디렉토리로 이동 -git mv file1.txt file2.txt directory/ +### 충돌 해결 -# 대소문자만 변경 (대소문자 구분 파일시스템) -git mv filename.txt temp.txt -git mv temp.txt FileName.txt +**파일을 해결됨으로 표시:** +```bash +git add +``` -# 파일 이동 후 히스토리 확인 -git log --follow <파일> +**해결된 파일 제거:** +```bash +git rm +``` -# 이동된 파일 추적 -git log --stat -M +### 커밋 스쿼시 -# 이름 변경 감지 임계값 설정 -git log --follow -M90% <파일> +**스쿼시를 위한 대화형 리베이스:** +```bash +git rebase -i +``` + +**스쿼시 설정 예시:** +``` +# 이전 +pick +pick +pick + +# 이후 (commit_id2와 commit_id3를 commit_id에 스쿼시) +pick +squash +squash ``` --- -## ↩️ 변경사항 되돌리기 +## ↩️ 되돌리기 -### 수정사항 되돌리기: +### 변경사항 폐기 +**모든 로컬 변경사항 폐기:** ```bash -# 특정 파일의 변경사항 취소 -git checkout <파일> - -# 모든 커밋되지 않은 변경사항 취소 -git checkout . - -# 특정 버전으로 파일 되돌리기 -git checkout <커밋-해시> <파일> +git reset --hard HEAD +``` -# 스테이징 영역에서 파일 제거 -git reset <파일> +**모든 파일 언스테이지:** +```bash +git reset HEAD +``` -# 스테이징 영역에서 모든 파일 제거 -git reset +**특정 파일의 변경사항 폐기:** +```bash +git checkout HEAD +``` -# 이전 커밋으로 돌아가기 (변경사항 유지) -git reset --soft HEAD~1 +### 리셋 작업 -# 이전 커밋으로 돌아가기 (변경사항 취소) -git reset --hard HEAD~1 +**이전 커밋으로 리셋 (모든 변경사항 폐기):** +```bash +git reset --hard +``` -# 특정 커밋으로 돌아가기 -git reset --hard <커밋-해시> +**원격 브랜치 상태로 리셋:** +```bash +git reset --hard +# 예시: git reset --hard upstream/master +``` -# 다른 커밋을 취소하는 새 커밋 생성 -git revert <커밋-해시> +**변경사항을 언스테이지 상태로 보존하며 리셋:** +```bash +git reset +``` -# 여러 커밋 되돌리기 -git revert <해시-시작>..<해시-끝> +**커밋되지 않은 로컬 변경사항을 보존하며 리셋:** +```bash +git reset --keep ``` ---- +### 커밋 되돌리기 -## 📦 스태시 +**커밋 되돌리기 (반대 변경사항으로 새 커밋 생성):** +```bash +git revert +``` -### 임시로 작업 저장: +### 무시된 파일 정리 +**무시되어야 할 실수로 커밋된 파일 제거:** ```bash -# 현재 변경사항을 스태시에 저장 -git stash +git rm -r --cached . +git add . +git commit -m "remove ignored files" +``` -# 설명적 메시지와 함께 저장 -git stash save "설명적 메시지" +--- -# 모든 스태시 보기 -git stash list +## 🌊 Git Flow -# 마지막 스태시 적용 -git stash apply +**개선된 Git-flow:** [git-flow-avh](https://github.com/petervanderdoes/gitflow-avh) -# 특정 스태시 적용 -git stash apply stash@{0} +### 📋 목차 +- [🔧 설정](#setup-1) +- [🚀 시작하기](#getting-started) +- [✨ 기능](#features) +- [🎁 릴리스 만들기](#make-a-release) +- [🔥 핫픽스](#hotfixes) +- [📊 명령어 개요](#commands-overview) -# 마지막 스태시 적용하고 삭제 -git stash pop - -# 특정 스태시 삭제 -git stash drop stash@{0} +--- -# 모든 스태시 삭제 -git stash clear +### 🔧 설정 {#setup-1} -# 스태시의 변경사항 보기 -git stash show stash@{0} +> **전제 조건:** 작동하는 Git 설치가 필요합니다. Git-flow는 macOS, Linux, Windows에서 작동합니다. -# 스태시에서 브랜치 생성 -git stash branch <브랜치-이름> stash@{0} +**macOS (Homebrew):** +```bash +brew install git-flow-avh ``` ---- +**macOS (MacPorts):** +```bash +port install git-flow +``` -## 🌊 Git Flow +**Linux (Debian 기반):** +```bash +sudo apt-get install git-flow +``` -Git Flow는 프로젝트 릴리스를 중심으로 설계된 엄격한 워크플로우를 정의하는 브랜칭 모델입니다. +**Windows (Cygwin):** +> wget과 util-linux가 필요합니다 +```bash +wget -q -O - --no-check-certificate https://raw.githubusercontent.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh install | bash +``` -### 주요 브랜치: -- **master/main**: 프로덕션 코드 -- **develop**: 주요 개발 브랜치 +--- -### 지원 브랜치: -- **feature**: 새로운 기능을 위한 -- **release**: 새 버전 준비를 위한 -- **hotfix**: 프로덕션 긴급 수정을 위한 +### 🚀 시작하기 -### Git Flow 명령어: +Git-flow는 프로젝트 설정을 커스터마이즈하기 위해 초기화가 필요합니다. +**초기화 (대화형):** ```bash -# git flow 초기화 git flow init +``` +> 브랜치 명명 규칙에 대한 질문에 답하게 됩니다. 기본값을 권장합니다. -# 새 기능 시작 -git flow feature start <기능-이름> - -# 기능 완료 -git flow feature finish <기능-이름> +**초기화 (기본값 사용):** +```bash +git flow init -d +``` -# 기능 발행 -git flow feature publish <기능-이름> +--- -# 릴리스 시작 -git flow release start <버전> +### ✨ 기능 -# 릴리스 완료 -git flow release finish <버전> +기능은 향후 릴리스를 위한 새로운 기능을 개발하기 위한 것입니다. 일반적으로 개발자 저장소에만 존재합니다. -# 핫픽스 시작 -git flow hotfix start <버전> +**새 기능 시작:** +```bash +git flow feature start MYFEATURE +``` +> 'develop'을 기반으로 기능 브랜치를 생성하고 해당 브랜치로 전환합니다 -# 핫픽스 완료 -git flow hotfix finish <버전> +**기능 완료:** +```bash +git flow feature finish MYFEATURE ``` +> 이 명령어는: +> 1. MYFEATURE를 'develop'에 머지 +> 2. 기능 브랜치 제거 +> 3. 'develop'으로 다시 전환 -### Git Flow 없는 워크플로우: +**기능 발행 (협업용):** +```bash +git flow feature publish MYFEATURE +``` -![Git Flow Commands](../Img/git-flow-commands-without-flow.png) +**발행된 기능 가져오기:** +```bash +git flow feature pull origin MYFEATURE +``` +**원격 기능 추적:** ```bash -# 기능 브랜치 생성 -git checkout develop -git checkout -b feature/새-기능 +git flow feature track MYFEATURE +``` -# 기능 작업 -git add . -git commit -m "새 기능 추가" +--- -# develop에 기능 머지 -git checkout develop -git merge --no-ff feature/새-기능 -git branch -d feature/새-기능 +### 🎁 릴리스 만들기 -# 릴리스 브랜치 생성 -git checkout develop -git checkout -b release/1.0.0 +릴리스는 새 프로덕션 릴리스 준비를 지원하며, 사소한 버그 수정과 메타데이터 준비를 허용합니다. -# 릴리스 완료 -git checkout master -git merge --no-ff release/1.0.0 -git tag -a 1.0.0 -m "버전 1.0.0" -git checkout develop -git merge --no-ff release/1.0.0 -git branch -d release/1.0.0 +**릴리스 시작:** +```bash +git flow release start RELEASE [BASE] ``` +> 'develop'에서 릴리스 브랜치를 생성합니다. 선택적으로 [BASE] 커밋 SHA-1을 지정할 수 있습니다. ---- - -## 💡 유용한 팁 +**릴리스 발행:** +```bash +git flow release publish RELEASE +``` -### 유용한 별칭: +**원격 릴리스 추적:** +```bash +git flow release track RELEASE +``` +**릴리스 완료:** ```bash -# 유용한 별칭 설정 -git config --global alias.st status -git config --global alias.co checkout -git config --global alias.br branch -git config --global alias.ci commit -git config --global alias.unstage 'reset HEAD --' -git config --global alias.last 'log -1 HEAD' -git config --global alias.visual '!gitk' +git flow release finish RELEASE ``` +> 이 명령어는: +> 1. 릴리스 브랜치를 'master'에 머지 +> 2. 릴리스에 태그 지정 +> 3. 릴리스를 'develop'에 역머지 +> 4. 릴리스 브랜치 제거 -### .gitignore 파일: +> 💡 **잊지 마세요:** `git push --tags`로 태그를 푸시하세요 +--- + +### 🔥 핫픽스 + +핫픽스는 라이브 프로덕션 버전의 심각한 문제를 해결합니다. master의 해당 태그에서 브랜치됩니다. + +**핫픽스 시작:** ```bash -# .gitignore 파일 생성 -echo "node_modules/" >> .gitignore -echo "*.log" >> .gitignore -echo ".env" >> .gitignore +git flow hotfix start VERSION [BASENAME] +``` -# 이미 추적된 파일 무시하기 -git rm --cached <파일> -echo "<파일>" >> .gitignore -git add .gitignore -git commit -m ".gitignore에 파일 추가" +**핫픽스 완료:** +```bash +git flow hotfix finish VERSION ``` +> 'develop'과 'master' 모두에 역머지되고, master 머지에 태그가 지정됩니다 --- -## 📖 추가 리소스 +### 📊 명령어 개요 -### 공식 문서 및 가이드 -- [Git 공식 문서](https://git-scm.com/doc) -- [Pro Git 책 (무료)](https://git-scm.com/book) -- [Git 참조 매뉴얼](https://git-scm.com/docs) -- [Git 튜토리얼](https://git-scm.com/docs/gittutorial) +

+ Git Flow Commands +

-### 온라인 학습 자료 -- [GitHub Git 핸드북](https://guides.github.com/introduction/git-handbook/) -- [Atlassian Git 튜토리얼](https://www.atlassian.com/git/tutorials) -- [Learn Git Branching (대화형)](https://learngitbranching.js.org/) -- [Git Immersion](http://gitimmersion.com/) +### 🌊 Git Flow 스키마 -### GUI 도구 -- [GitHub Desktop](https://desktop.github.com/) -- [GitKraken](https://www.gitkraken.com/) -- [SourceTree](https://www.sourcetreeapp.com/) -- [Tower](https://www.git-tower.com/) - -### 고급 주제 -- [Git Hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) -- [Git Workflows](https://www.atlassian.com/git/tutorials/comparing-workflows) -- [Git 내부 구조](https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain) +

+ Git Flow Schema +

--- + ## 🌍 다른 언어 -이 Git Cheat Sheet는 다음 언어로 제공됩니다: - -- 🇺🇸 [English](../README.md) -- 🇸🇦 [العربية](git-cheat-sheet-ar.md) -- 🇧🇩 [বাংলা](git-cheat-sheet-bn.md) -- 🇩🇪 [Deutsch](git-cheat-sheet-de.md) -- 🇬🇷 [Ελληνικά](git-cheat-sheet-el.md) -- 🇪🇸 [Español](git-cheat-sheet-es.md) -- 🇮🇳 [हिन्दी](git-cheat-sheet-hi.md) -- 🇰🇷 **한국어** (현재) -- 🇵🇱 [Polski](git-cheat-sheet-pl.md) -- 🇧🇷 [Português](git-cheat-sheet-pt_BR.md) -- 🇹🇷 [Türkçe](git-cheat-sheet-tr.md) -- 🇨🇳 [中文](git-cheat-sheet-zh.md) +이 치트 시트는 여러 언어로 제공됩니다: + +| 언어 | 링크 | +|------|------| +| 🇸🇦 아랍어 | [git-cheat-sheet-ar.md](git-cheat-sheet-ar.md) | +| 🇧🇩 벵골어 | [git-cheat-sheet-bn.md](git-cheat-sheet-bn.md) | +| 🇧🇷 브라질 포르투갈어 | [git-cheat-sheet-pt_BR.md](git-cheat-sheet-pt_BR.md) | +| 🇨🇳 중국어 | [git-cheat-sheet-zh.md](git-cheat-sheet-zh.md) | +| 🇩🇪 독일어 | [git-cheat-sheet-de.md](git-cheat-sheet-de.md) | +| 🇬🇷 그리스어 | [git-cheat-sheet-el.md](git-cheat-sheet-el.md) | +| 🇮🇳 힌디어 | [git-cheat-sheet-hi.md](git-cheat-sheet-hi.md) | +| 🇰🇷 **한국어** (현재) | | +| 🇵🇱 폴란드어 | [git-cheat-sheet-pl.md](git-cheat-sheet-pl.md) | +| 🇪🇸 스페인어 | [git-cheat-sheet-es.md](git-cheat-sheet-es.md) | +| 🇹🇷 터키어 | [git-cheat-sheet-tr.md](git-cheat-sheet-tr.md) | --- ## 🤝 기여하기 -기여를 환영합니다! 이 프로젝트를 개선하는 데 도움을 주세요: +기여를 환영합니다! 다음과 같이 할 수 있습니다: -1. **문제 보고**: 오류나 개선 제안을 공유하세요 -2. **새 언어 추가**: 번역을 만들거나 기존 것을 개선하세요 -3. **내용 개선**: 새로운 명령어, 예제 또는 설명을 추가하세요 -4. **피드백 제공**: 경험과 제안을 공유하세요 +- 🐛 버그나 오타 보고 +- ✨ 새 Git 명령어 추가 +- 🌍 새로운 언어로 번역 +- 💡 설명 개선 +- 📝 포맷 개선 -### 기여 방법: -- [GitHub에서 이슈 열기](https://github.com/arslanbilal/git-cheat-sheet/issues) -- Pull request 제출 -- 문서 개선 제안 +**기여하는 방법:** +1. 이 저장소를 포크하세요 +2. 기능 브랜치를 생성하세요 (`git checkout -b feature/AmazingFeature`) +3. 변경사항을 커밋하세요 (`git commit -m 'Add some AmazingFeature'`) +4. 브랜치에 푸시하세요 (`git push origin feature/AmazingFeature`) +5. Pull Request를 여세요 --- ## 📄 라이센스 -이 프로젝트는 MIT 라이센스 하에 라이센스가 부여됩니다. 자세한 내용은 [LICENSE](../LICENSE) 파일을 참조하세요. +이 프로젝트는 오픈 소스이며 [MIT 라이센스](../LICENSE) 하에 제공됩니다. --- -
- ⭐ 이 치트 시트가 유용하다면 별표를 주세요!
- Git과 함께 즐거운 코딩 하세요! 🚀 -
+

+ ⭐ 이 저장소가 도움이 되었다면 별표를 눌러주세요! +

diff --git a/other-sheets/git-cheat-sheet-pl.md b/other-sheets/git-cheat-sheet-pl.md index 2010a02..43f2e2e 100644 --- a/other-sheets/git-cheat-sheet-pl.md +++ b/other-sheets/git-cheat-sheet-pl.md @@ -1,714 +1,866 @@ -# Git Cheat Sheet Polski +# Ściągawka z Git i Git Flow +[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -![Git Logo](../Img/git-logo.png) +

+ Git +

-Szybki przewodnik referencyjny dla najczęściej używanych poleceń Git, zorganizowany w kategorie dla łatwego użycia. +--- -## 📖 O tym przewodniku +## 📖 O przewodniku -Ten kompleksowy przewodnik referencyjny Git jest kompletnym zasobem dla każdego, kto chce usprawnić swój przepływ pracy z Git. Od początkujących, którzy rozpoczynają swoją przygodę z Git, po doświadczonych programistów, ten przewodnik zapewnia systematycznie zorganizowane polecenia kategoryzowane w celu przyspieszenia procesu rozwoju. +Ta kompleksowa ściągawka z Git pomoże Ci opanować polecenia Git bez konieczności zapamiętywania wszystkiego. Niezależnie od tego, czy jesteś początkującym, czy doświadczonym programistą, ten przewodnik zapewnia szybki dostęp do najważniejszych operacji Git. -### Kluczowe cechy: -- **Systematyczne kategorie**: Polecenia zorganizowane w jasne, logiczne grupy -- **Praktyczne przykłady**: Zawiera rzeczywiste przypadki użycia -- **Przyjazne dla początkujących**: Jasne wyjaśnienia i wskazówki -- **Szybka referencja**: Błyskawiczny dostęp do niezbędnych poleceń +**Zapraszamy do współpracy!** Możesz: +- Poprawiać błędy gramatyczne +- Dodawać nowe polecenia +- Tłumaczyć na swój język +- Ulepszać wyjaśnienia --- - -## 📑 Spis treści - -- [📖 O tym przewodniku](#o-tym-przewodniku) -- [🔧 Konfiguracja początkowa](#konfiguracja-początkowa) -- [⚙️ Pliki konfiguracyjne](#pliki-konfiguracyjne) -- [📁 Konfiguracja repozytorium](#konfiguracja-repozytorium) -- [📊 Polecenia statusu](#polecenia-statusu) -- [📝 Zarządzanie plikami](#zarządzanie-plikami) -- [💾 Commity](#commity) -- [🌿 Gałęzie (Branches)](#gałęzie-branches) -- [🔀 Scalanie (Merge)](#scalanie-merge) -- [🌐 Zdalne repozytoria](#zdalne-repozytoria) -- [📚 Historia i logi](#historia-i-logi) -- [🔍 Wyszukiwanie](#wyszukiwanie) -- [📁 Przenoszenie/Zmiana nazwy](#przenoszeniizmiana-nazwy) -- [🏷️ Tagi](#tagi) -- [↩️ Cofanie zmian](#cofanie-zmian) -- [📦 Schowek (Stash)](#schowek-stash) -- [🌊 Git Flow](#git-flow) -- [💡 Przydatne wskazówki](#przydatne-wskazówki) -- [📚 Dodatkowe zasoby](#dodatkowe-zasoby) -- [🌍 Inne języki](#inne-języki) -- [🤝 Współpraca](#współpraca) -- [📄 Licencja](#licencja) +## 📋 Spis treści + +- [🔧 Konfiguracja](#-konfiguracja) +- [⚙️ Pliki konfiguracyjne](#️-pliki-konfiguracyjne) +- [🆕 Tworzenie repozytorium](#-tworzenie-repozytorium) +- [📝 Zmiany lokalne](#-zmiany-lokalne) +- [🔍 Wyszukiwanie](#-wyszukiwanie) +- [📖 Historia commitów](#-historia-commitów) +- [📁 Przenoszenie / Zmiana nazwy](#-przenoszenie--zmiana-nazwy) +- [🌿 Gałęzie i tagi](#-gałęzie-i-tagi) +- [🔄 Aktualizacja i publikacja](#-aktualizacja-i-publikacja) +- [🔀 Scalanie i Rebase](#-scalanie-i-rebase) +- [↩️ Cofanie zmian](#️-cofanie-zmian) +- [🌊 Git Flow](#-git-flow) +- [🌍 Inne języki](#-inne-języki) --- -## 🔧 Konfiguracja początkowa +## 🔧 Konfiguracja -Skonfiguruj Git ze swoimi danymi osobowymi: +### Wyświetlanie konfiguracji +**Pokaż bieżącą konfigurację:** ```bash -# Ustawienie nazwy użytkownika -git config --global user.name "Twoje Imię" - -# Ustawienie adresu email -git config --global user.email "email@example.com" - -# Wyświetlenie bieżącej konfiguracji git config --list +``` -# Ustawienie domyślnego edytora -git config --global core.editor "nano" - -# Ustawienie narzędzia do scalania -git config --global merge.tool vimdiff +**Pokaż konfigurację repozytorium:** +```bash +git config --local --list ``` ---- +**Pokaż konfigurację globalną:** +```bash +git config --global --list +``` -## ⚙️ Pliki konfiguracyjne +**Pokaż konfigurację systemową:** +```bash +git config --system --list +``` -Git zarządza konfiguracją na kilku poziomach: +### Konfiguracja użytkownika -### Plik konfiguracji globalnej +**Ustaw swoją nazwę dla historii wersji:** ```bash -# Ścieżka do globalnego pliku konfiguracji -~/.gitconfig - -# Edycja globalnej konfiguracji -git config --global --edit +git config --global user.name "[firstname lastname]" ``` -### Plik konfiguracji repozytorium +**Ustaw swój adres email:** ```bash -# Ścieżka do pliku konfiguracji repozytorium -.git/config - -# Edycja konfiguracji repozytorium -git config --edit +git config --global user.email "[valid-email]" ``` -### Konfiguracja systemowa -```bash -# Plik konfiguracji systemowej (wymaga uprawnień administratora) -/etc/gitconfig +### Ustawienia wyświetlania i edytora -# Edycja konfiguracji systemowej -git config --system --edit +**Włącz automatyczne kolorowanie wiersza poleceń:** +```bash +git config --global color.ui auto ``` -### Przydatne ustawienia konfiguracji +**Ustaw globalny edytor dla commitów:** ```bash -# Włączenie kolorowego wyjścia -git config --global color.ui true +git config --global core.editor vi +``` -# Ustawienie domyślnej nazwy gałęzi -git config --global init.defaultBranch main +--- -# Obsługa końców linii (macOS/Linux) -git config --global core.autocrlf input +## ⚙️ Pliki konfiguracyjne -# Obsługa końców linii (Windows) -git config --global core.autocrlf true -``` +| Zakres | Lokalizacja | Flaga polecenia | +|--------|-------------|-----------------| +| **Repozytorium** | `/.git/config` | `--local` | +| **Użytkownik** | `~/.gitconfig` | `--global` | +| **System** | `/etc/gitconfig` | `--system` | --- -## 📁 Konfiguracja repozytorium +## 🆕 Tworzenie repozytorium -### Tworzenie nowego repozytorium: +### Klonowanie istniejącego repozytorium +**Przez SSH:** ```bash -# Utworzenie nowego repozytorium Git -git init +git clone ssh://user@domain.com/repo.git +``` + +**Przez HTTPS:** +```bash +git clone https://domain.com/user/repo.git +``` -# Klonowanie istniejącego repozytorium -git clone +### Inicjalizacja nowego repozytorium -# Klonowanie do określonego katalogu -git clone +**Utwórz repozytorium w bieżącym katalogu:** +```bash +git init +``` + +**Utwórz repozytorium w określonym katalogu:** +```bash +git init ``` --- -## 📊 Polecenia statusu +## 📝 Zmiany lokalne -### Sprawdzanie statusu repozytorium: +### Sprawdzanie statusu i różnic +**Wyświetl status katalogu roboczego:** ```bash -# Wyświetlenie bieżącego statusu repozytorium git status +``` + +**Pokaż zmiany w śledzonych plikach:** +```bash +git diff +``` -# Wyświetlenie statusu w krótkim formacie -git status -s +**Pokaż zmiany w określonym pliku:** +```bash +git diff +``` -# Wyświetlenie statusu ignorując nieśledzone pliki -git status --ignored +### Dodawanie zmian do poczekalni -# Wyświetlenie różnic w zmodyfikowanych plikach -git diff +**Dodaj wszystkie bieżące zmiany:** +```bash +git add . +``` -# Wyświetlenie różnic w obszarze staging -git diff --staged +**Dodaj określone pliki:** +```bash +git add +``` -# Wyświetlenie różnic między gałęziami -git diff +**Interaktywnie dodaj części pliku:** +```bash +git add -p ``` ---- +### Zatwierdzanie zmian -## 📝 Zarządzanie plikami +**Zatwierdź wszystkie zmiany w śledzonych plikach:** +```bash +git commit -a +``` -### Dodawanie i usuwanie plików: +**Zatwierdź zmiany z poczekalni:** +```bash +git commit +``` +**Zatwierdź z wiadomością:** ```bash -# Dodanie określonego pliku do obszaru staging -git add +git commit -m 'message here' +``` -# Dodanie wszystkich zmodyfikowanych plików -git add . +**Pomiń poczekalnię i zatwierdź z wiadomością:** +```bash +git commit -am 'message here' +``` -# Dodanie wszystkich plików określonego typu -git add *.txt +**Zatwierdź z określoną datą:** +```bash +git commit --date="`date --date='n day ago'`" -am "" +``` -# Interaktywne dodawanie -git add -i +### Modyfikacja ostatniego commita -# Usunięcie pliku z repozytorium i katalogu roboczego -git rm +> ⚠️ **Uwaga:** Nie zmieniaj opublikowanych commitów! -# Usunięcie pliku tylko z repozytorium (zachowanie w katalogu) -git rm --cached +**Zmień ostatni commit:** +```bash +git commit -a --amend +``` -# Przenoszenie/zmiana nazwy pliku -git mv +**Zmień bez modyfikacji wiadomości commita:** +```bash +git commit --amend --no-edit ``` ---- +**Zmień datę commita:** +```bash +GIT_COMMITTER_DATE="date" git commit --amend +``` -## 💾 Commity +**Zmień datę autora:** +```bash +git commit --amend --date="date" +``` -### Zapisywanie zmian w repozytorium: +### Schowek (Stash) +**Tymczasowo zapisz bieżące zmiany:** ```bash -# Commit z wiadomością -git commit -m "Wiadomość commita" +git stash +``` -# Commit dodając wszystkie zmodyfikowane pliki -git commit -am "Wiadomość commita" +**Zastosuj ostatnio schowane zmiany:** +```bash +git stash apply +``` -# Modyfikacja ostatniego commita -git commit --amend +**Zastosuj określony schowek:** +```bash +git stash apply stash@{stash_number} +``` +> Użyj `git stash list`, aby zobaczyć dostępne schowki -# Pusty commit (przydatny dla wyzwalaczy CI/CD) -git commit --allow-empty -m "Wyzwalacz CI" +**Usuń ostatni schowek:** +```bash +git stash drop +``` -# Commit ze szczegółową wiadomością (otwiera edytor) -git commit +**Przenieś niezatwierdzone zmiany do innej gałęzi:** +```bash +git stash +git checkout branch2 +git stash pop ``` --- -## 🌿 Gałęzie (Branches) +## 🔍 Wyszukiwanie -### Praca z gałęziami: +### Wyszukiwanie tekstu +**Szukaj tekstu we wszystkich plikach:** ```bash -# Wyświetlenie wszystkich gałęzi -git branch +git grep "Hello" +``` -# Wyświetlenie zdalnych gałęzi -git branch -r +**Szukaj w określonej wersji:** +```bash +git grep "Hello" v2.5 +``` -# Wyświetlenie wszystkich gałęzi (lokalnych i zdalnych) -git branch -a +### Wyszukiwanie w commitach -# Utworzenie nowej gałęzi -git branch +**Znajdź commity wprowadzające określone słowo kluczowe:** +```bash +git log -S 'keyword' +``` -# Przełączenie na gałąź -git checkout +**Szukaj za pomocą wyrażenia regularnego:** +```bash +git log -S 'keyword' --pickaxe-regex +``` -# Utworzenie i przełączenie na nową gałąź -git checkout -b +--- -# Utworzenie gałęzi z określonego commita -git checkout -b +## 📖 Historia commitów -# Usunięcie gałęzi -git branch -d +### Podstawowa historia -# Wymuszone usunięcie gałęzi -git branch -D +**Pokaż wszystkie commity (szczegółowo):** +```bash +git log +``` -# Zmiana nazwy bieżącej gałęzi -git branch -m +**Pokaż commity (jedna linia każdy):** +```bash +git log --oneline +``` -# Zmiana nazwy określonej gałęzi -git branch -m +**Pokaż commity określonego autora:** +```bash +git log --author="username" ``` ---- +**Pokaż zmiany dla określonego pliku:** +```bash +git log -p +``` + +### Zaawansowana historia + +**Porównaj gałęzie:** +```bash +git log --oneline .. --left-right +``` -## 🔀 Scalanie (Merge) +**Pokaż kto, co i kiedy zmienił:** +```bash +git blame +``` -### Scalanie zmian między gałęziami: +### Logi referencyjne +**Pokaż log referencyjny:** ```bash -# Scalenie gałęzi z bieżącą gałęzią -git merge +git reflog show +``` -# Scalenie bez fast-forward (utworzenie commita scalenia) -git merge --no-ff +**Usuń log referencyjny:** +```bash +git reflog delete +``` -# Scalenie tylko jeśli jest fast-forward -git merge --ff-only +--- -# Anulowanie trwającego scalenia -git merge --abort +## 📁 Przenoszenie / Zmiana nazwy -# Kontynuacja scalenia po rozwiązaniu konfliktów -git merge --continue +**Zmień nazwę pliku:** +```bash +git mv Index.txt Index.html ``` --- -## 🌐 Zdalne repozytoria +## 🌿 Gałęzie i tagi -### Zarządzanie zdalnymi repozytoriami: +### Lista gałęzi +**Lista lokalnych gałęzi:** ```bash -# Wyświetlenie zdalnych repozytoriów -git remote - -# Wyświetlenie zdalnych repozytoriów z URL-ami -git remote -v +git branch +``` -# Dodanie zdalnego repozytorium -git remote add +**Lista wszystkich gałęzi (lokalne + zdalne):** +```bash +git branch -a +``` -# Zmiana URL zdalnego repozytorium -git remote set-url +**Lista zdalnych gałęzi:** +```bash +git branch -r +``` -# Usunięcie zdalnego repozytorium -git remote remove +**Lista scalonych gałęzi:** +```bash +git branch --merged +``` -# Wysłanie zmian do zdalnego repozytorium -git push +### Przełączanie i tworzenie gałęzi -# Wysłanie gałęzi i ustawienie śledzenia -git push -u +**Przełącz na istniejącą gałąź:** +```bash +git checkout +``` -# Wysłanie wszystkich gałęzi -git push --all +**Utwórz i przełącz na nową gałąź:** +```bash +git checkout -b +``` -# Wysłanie tagów -git push --tags +**Przełącz na poprzednią gałąź:** +```bash +git checkout - +``` -# Pobranie zmian ze zdalnego repozytorium -git pull +**Utwórz gałąź z istniejącej gałęzi:** +```bash +git checkout -b +``` -# Pobranie zmian bez scalania -git fetch +**Utwórz gałąź z określonego commita:** +```bash +git checkout -b +``` -# Pobranie wszystkich zdalnych gałęzi -git fetch --all +**Utwórz gałąź bez przełączania:** +```bash +git branch ``` ---- +**Utwórz gałąź śledzącą:** +```bash +git branch --track +``` -## 📚 Historia i logi +### Operacje na gałęziach -### Eksploracja historii commitów: +**Pobierz pojedynczy plik z innej gałęzi:** +```bash +git checkout -- +``` +**Zastosuj określony commit z innej gałęzi:** ```bash -# Wyświetlenie historii commitów -git log +git cherry-pick +``` -# Wyświetlenie historii w jednej linii na commit -git log --oneline +**Zmień nazwę bieżącej gałęzi:** +```bash +git branch -m +``` -# Wyświetlenie historii z wykresem -git log --graph +**Usuń lokalną gałąź:** +```bash +git branch -d +``` -# Wyświetlenie historii określonego pliku -git log +**Wymuś usunięcie lokalnej gałęzi:** +```bash +git branch -D +``` +> ⚠️ **Uwaga:** Utracisz niescalone zmiany! -# Wyświetlenie statystyk commitów -git log --stat +### Tagi -# Wyświetlenie zmian w każdym commicie -git log -p +**Utwórz tag na HEAD:** +```bash +git tag +``` -# Wyświetlenie ostatnich N commitów -git log -n +**Utwórz tag z adnotacją:** +```bash +git tag -a +``` -# Wyświetlenie commitów między datami -git log --since="2023-01-01" --until="2023-12-31" +**Utwórz tag z wiadomością:** +```bash +git tag -am 'message here' +``` -# Wyświetlenie commitów według autora -git log --author="Imię Autora" +**Lista wszystkich tagów:** +```bash +git tag +``` -# Wyszukiwanie w wiadomościach commitów -git log --grep="słowo kluczowe" +**Lista tagów z wiadomościami:** +```bash +git tag -n ``` --- -## 🔍 Wyszukiwanie +## 🔄 Aktualizacja i publikacja -### Wyszukiwanie w zawartości i historii: +### Zarządzanie zdalnymi repozytoriami +**Lista skonfigurowanych zdalnych repozytoriów:** ```bash -# Wyszukiwanie tekstu w plikach śledzonych -git grep "tekst do wyszukania" - -# Wyszukiwanie z ignorowaniem wielkości liter -git grep -i "tekst" +git remote -v +``` -# Wyszukiwanie całych słów -git grep -w "słowo" +**Pokaż informacje o zdalnym repozytorium:** +```bash +git remote show +``` -# Wyświetlenie numerów linii -git grep -n "tekst" +**Dodaj nowe zdalne repozytorium:** +```bash +git remote add +``` -# Wyświetlenie tylko nazw plików -git grep -l "tekst" +**Zmień nazwę zdalnego repozytorium:** +```bash +git remote rename +``` -# Wyszukiwanie w określonych plikach -git grep "tekst" -- "*.js" +**Usuń zdalne repozytorium:** +```bash +git remote rm +``` +> ℹ️ **Uwaga:** To usuwa tylko lokalne odwołanie do zdalnego repozytorium, nie samo zdalne repozytorium. -# Wyszukiwanie w historii commitów -git log -S "tekst" --source --all +### Pobieranie zmian -# Wyszukiwanie dodań/usunięć w historii -git log -G "regex_pattern" --patch +**Pobierz zmiany bez scalania:** +```bash +git fetch +``` -# Wyszukiwanie według nazwy pliku -git log --all --full-history -- "**/nazwa_pliku.*" +**Pobierz i scal zmiany:** +```bash +git pull +``` -# Wyszukiwanie w określonym commicie -git grep "tekst" +**Pobierz zmiany z głównej gałęzi:** +```bash +git pull origin master ``` ---- +**Pobierz z rebase:** +```bash +git pull --rebase +``` -## 🏷️ Tagi +### Wysyłanie i publikacja -### Zarządzanie tagami wersji: +**Opublikuj lokalne zmiany:** +```bash +git push +``` +**Usuń zdalną gałąź:** ```bash -# Wyświetlenie wszystkich tagów -git tag +# Git v1.7.0+ +git push --delete -# Utworzenie lekkiego tagu -git tag +# Git v1.5.0+ +git push : +``` -# Utworzenie adnotowanego tagu -git tag -a -m "Wiadomość tagu" +**Opublikuj tagi:** +```bash +git push --tags +``` -# Utworzenie tagu na określonym commicie -git tag -a +--- -# Wyświetlenie informacji o tagu -git show +## 🔀 Scalanie i Rebase -# Usunięcie lokalnego tagu -git tag -d +### Operacje scalania -# Usunięcie zdalnego tagu -git push --delete +**Scal gałąź do bieżącego HEAD:** +```bash +git merge +``` -# Wysłanie określonego tagu -git push +**Skonfiguruj narzędzie do scalania globalnie:** +```bash +git config --global merge.tool meld +``` -# Wysłanie wszystkich tagów -git push --tags +**Użyj skonfigurowanego narzędzia do scalania:** +```bash +git mergetool ``` ---- +### Operacje rebase -## 📁 Przenoszenie/Zmiana nazwy +> ⚠️ **Uwaga:** Nie wykonuj rebase na opublikowanych commitach! -### Zarządzanie plikami i katalogami: +**Rebase bieżącego HEAD na gałąź:** +```bash +git rebase +``` +**Przerwij rebase:** ```bash -# Przenoszenie/zmiana nazwy pliku -git mv +git rebase --abort +``` -# Zmiana nazwy katalogu -git mv +**Kontynuuj rebase po rozwiązaniu konfliktów:** +```bash +git rebase --continue +``` -# Przenoszenie wielu plików do katalogu -git mv plik1.txt plik2.txt katalog/ +### Rozwiązywanie konfliktów + +**Oznacz plik jako rozwiązany:** +```bash +git add +``` -# Zmiana wielkości liter (systemy plików wrażliwe na wielkość liter) -git mv nazwapliku.txt temp.txt -git mv temp.txt NazwaPliku.txt +**Usuń rozwiązany plik:** +```bash +git rm +``` -# Śledzenie historii przeniesionego pliku -git log --follow +### Squashowanie commitów -# Śledzenie przeniesionych plików -git log --stat -M +**Interaktywny rebase do squashowania:** +```bash +git rebase -i +``` -# Ustawienie progu wykrywania zmian nazwy -git log --follow -M90% +**Przykładowa konfiguracja squash:** +``` +# Przed +pick +pick +pick + +# Po (squash commit_id2 i commit_id3 do commit_id) +pick +squash +squash ``` --- ## ↩️ Cofanie zmian -### Przywracanie modyfikacji: +### Odrzucanie zmian +**Odrzuć wszystkie lokalne zmiany:** ```bash -# Anulowanie zmian w określonym pliku -git checkout - -# Anulowanie wszystkich niezacommitowanych zmian -git checkout . - -# Przywrócenie pliku do określonej wersji -git checkout +git reset --hard HEAD +``` -# Usunięcie pliku z obszaru staging -git reset +**Usuń wszystkie pliki z poczekalni:** +```bash +git reset HEAD +``` -# Usunięcie wszystkich plików z obszaru staging -git reset +**Odrzuć zmiany w określonym pliku:** +```bash +git checkout HEAD +``` -# Powrót do poprzedniego commita (zachowanie zmian) -git reset --soft HEAD~1 +### Operacje resetowania -# Powrót do poprzedniego commita (anulowanie zmian) -git reset --hard HEAD~1 +**Resetuj do poprzedniego commita (odrzuć wszystkie zmiany):** +```bash +git reset --hard +``` -# Powrót do określonego commita -git reset --hard +**Resetuj do stanu zdalnej gałęzi:** +```bash +git reset --hard +# Przykład: git reset --hard upstream/master +``` -# Utworzenie commita anulującego inny commit -git revert +**Resetuj zachowując zmiany jako niestageowane:** +```bash +git reset +``` -# Anulowanie wielu commitów -git revert .. +**Resetuj zachowując niezatwierdzone lokalne zmiany:** +```bash +git reset --keep ``` ---- +### Cofanie commitów -## 📦 Schowek (Stash) +**Cofnij commit (utwórz nowy commit z odwrotnymi zmianami):** +```bash +git revert +``` -### Tymczasowe zapisywanie pracy: +### Czyszczenie ignorowanych plików +**Usuń przypadkowo zatwierdzone pliki, które powinny być ignorowane:** ```bash -# Zapisanie bieżących zmian w schowku -git stash +git rm -r --cached . +git add . +git commit -m "remove ignored files" +``` -# Zapisanie z opisową wiadomością -git stash save "Opisowa wiadomość" +--- -# Wyświetlenie wszystkich schowków -git stash list +## 🌊 Git Flow -# Zastosowanie ostatniego schowka -git stash apply +**Ulepszony Git-flow:** [git-flow-avh](https://github.com/petervanderdoes/gitflow-avh) -# Zastosowanie określonego schowka -git stash apply stash@{0} +### 📋 Spis treści +- [🔧 Instalacja](#instalacja) +- [🚀 Rozpoczęcie pracy](#rozpoczęcie-pracy) +- [✨ Funkcjonalności](#funkcjonalności) +- [🎁 Tworzenie wydania](#tworzenie-wydania) +- [🔥 Hotfixy](#hotfixy) +- [📊 Przegląd poleceń](#przegląd-poleceń) -# Zastosowanie i usunięcie ostatniego schowka -git stash pop - -# Usunięcie określonego schowka -git stash drop stash@{0} +--- -# Usunięcie wszystkich schowków -git stash clear +### 🔧 Instalacja {#instalacja} -# Wyświetlenie zmian w schowku -git stash show stash@{0} +> **Wymaganie wstępne:** Wymagana działająca instalacja Git. Git-flow działa na macOS, Linux i Windows. -# Utworzenie gałęzi ze schowka -git stash branch stash@{0} +**macOS (Homebrew):** +```bash +brew install git-flow-avh ``` ---- +**macOS (MacPorts):** +```bash +port install git-flow +``` -## 🌊 Git Flow +**Linux (dystrybucje oparte na Debianie):** +```bash +sudo apt-get install git-flow +``` -Git Flow to model rozgałęziania, który definiuje ścisły przepływ pracy zaprojektowany wokół wydania projektu. +**Windows (Cygwin):** +> Wymaga wget i util-linux +```bash +wget -q -O - --no-check-certificate https://raw.githubusercontent.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh install | bash +``` -### Główne gałęzie: -- **master/main**: Kod produkcyjny -- **develop**: Główna gałąź rozwoju +--- -### Gałęzie wsparcia: -- **feature**: Dla nowych funkcji -- **release**: Dla przygotowania nowych wersji -- **hotfix**: Dla pilnych poprawek w produkcji +### 🚀 Rozpoczęcie pracy -### Polecenia Git Flow: +Git-flow wymaga inicjalizacji w celu dostosowania konfiguracji projektu. +**Inicjalizacja (interaktywna):** ```bash -# Inicjalizacja git flow git flow init +``` +> Odpowiesz na pytania dotyczące konwencji nazewnictwa gałęzi. Zalecane są wartości domyślne. -# Rozpoczęcie nowej funkcji -git flow feature start - -# Zakończenie funkcji -git flow feature finish +**Inicjalizacja (użyj domyślnych):** +```bash +git flow init -d +``` -# Publikowanie funkcji -git flow feature publish +--- -# Rozpoczęcie wydania -git flow release start +### ✨ Funkcjonalności -# Zakończenie wydania -git flow release finish +Funkcjonalności służą do rozwijania nowych możliwości dla przyszłych wydań. Zazwyczaj istnieją tylko w repozytoriach deweloperów. -# Rozpoczęcie hotfixa -git flow hotfix start +**Rozpocznij nową funkcjonalność:** +```bash +git flow feature start MYFEATURE +``` +> Tworzy gałąź funkcjonalności opartą na 'develop' i przełącza na nią -# Zakończenie hotfixa -git flow hotfix finish +**Zakończ funkcjonalność:** +```bash +git flow feature finish MYFEATURE ``` +> Spowoduje to: +> 1. Scalenie MYFEATURE do 'develop' +> 2. Usunięcie gałęzi funkcjonalności +> 3. Przełączenie z powrotem na 'develop' -### Przepływ pracy bez Git Flow: +**Opublikuj funkcjonalność (do współpracy):** +```bash +git flow feature publish MYFEATURE +``` -![Git Flow Commands](../Img/git-flow-commands-without-flow.png) +**Pobierz opublikowaną funkcjonalność:** +```bash +git flow feature pull origin MYFEATURE +``` +**Śledź funkcjonalność z origin:** ```bash -# Utworzenie gałęzi funkcji -git checkout develop -git checkout -b feature/nowa-funkcja +git flow feature track MYFEATURE +``` -# Praca nad funkcją -git add . -git commit -m "Dodanie nowej funkcji" +--- -# Scalenie funkcji z develop -git checkout develop -git merge --no-ff feature/nowa-funkcja -git branch -d feature/nowa-funkcja +### 🎁 Tworzenie wydania -# Utworzenie gałęzi wydania -git checkout develop -git checkout -b release/1.0.0 +Wydania wspierają przygotowanie nowych wersji produkcyjnych, umożliwiając drobne poprawki błędów i przygotowanie metadanych. -# Zakończenie wydania -git checkout master -git merge --no-ff release/1.0.0 -git tag -a 1.0.0 -m "Wersja 1.0.0" -git checkout develop -git merge --no-ff release/1.0.0 -git branch -d release/1.0.0 +**Rozpocznij wydanie:** +```bash +git flow release start RELEASE [BASE] ``` +> Tworzy gałąź wydania z 'develop'. Opcjonalnie podaj [BASE] — SHA-1 commita. ---- - -## 💡 Przydatne wskazówki +**Opublikuj wydanie:** +```bash +git flow release publish RELEASE +``` -### Przydatne aliasy: +**Śledź zdalne wydanie:** +```bash +git flow release track RELEASE +``` +**Zakończ wydanie:** ```bash -# Ustawienie przydatnych aliasów -git config --global alias.st status -git config --global alias.co checkout -git config --global alias.br branch -git config --global alias.ci commit -git config --global alias.unstage 'reset HEAD --' -git config --global alias.last 'log -1 HEAD' -git config --global alias.visual '!gitk' +git flow release finish RELEASE ``` +> Spowoduje to: +> 1. Scalenie gałęzi wydania do 'master' +> 2. Otagowanie wydania +> 3. Scalenie wydania z powrotem do 'develop' +> 4. Usunięcie gałęzi wydania -### Pliki .gitignore: +> 💡 **Nie zapomnij:** Wypchnij tagi poleceniem `git push --tags` +--- + +### 🔥 Hotfixy + +Hotfixy służą do naprawy krytycznych problemów w wersji produkcyjnej. Rozgałęziają się od odpowiedniego tagu na masterze. + +**Rozpocznij hotfix:** ```bash -# Utworzenie pliku .gitignore -echo "node_modules/" >> .gitignore -echo "*.log" >> .gitignore -echo ".env" >> .gitignore +git flow hotfix start VERSION [BASENAME] +``` -# Ignorowanie już śledzonych plików -git rm --cached -echo "" >> .gitignore -git add .gitignore -git commit -m "Dodanie pliku do .gitignore" +**Zakończ hotfix:** +```bash +git flow hotfix finish VERSION ``` +> Scala z powrotem do 'develop' i 'master' oraz taguje scalenie z masterem --- -## 📚 Dodatkowe zasoby +### 📊 Przegląd poleceń -### Oficjalna dokumentacja i przewodniki -- [Oficjalna dokumentacja Git](https://git-scm.com/doc) -- [Książka Pro Git (darmowa)](https://git-scm.com/book) -- [Manual referencyjny Git](https://git-scm.com/docs) -- [Tutorial Git](https://git-scm.com/docs/gittutorial) +

+ Polecenia Git Flow +

-### Materiały do nauki online -- [GitHub Git Handbook](https://guides.github.com/introduction/git-handbook/) -- [Atlassian Git Tutorials](https://www.atlassian.com/git/tutorials) -- [Learn Git Branching (interaktywny)](https://learngitbranching.js.org/) -- [Git Immersion](http://gitimmersion.com/) +### 🌊 Schemat Git Flow -### Narzędzia GUI -- [GitHub Desktop](https://desktop.github.com/) -- [GitKraken](https://www.gitkraken.com/) -- [SourceTree](https://www.sourcetreeapp.com/) -- [Tower](https://www.git-tower.com/) - -### Zaawansowane tematy -- [Git Hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) -- [Przepływy pracy Git](https://www.atlassian.com/git/tutorials/comparing-workflows) -- [Wewnętrzne mechanizmy Git](https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain) +

+ Schemat Git Flow +

--- + ## 🌍 Inne języki -Ten Git Cheat Sheet jest dostępny w następujących językach: - -- 🇺🇸 [English](../README.md) -- 🇸🇦 [العربية](git-cheat-sheet-ar.md) -- 🇧🇩 [বাংলা](git-cheat-sheet-bn.md) -- 🇩🇪 [Deutsch](git-cheat-sheet-de.md) -- 🇬🇷 [Ελληνικά](git-cheat-sheet-el.md) -- 🇪🇸 [Español](git-cheat-sheet-es.md) -- 🇮🇳 [हिन्दी](git-cheat-sheet-hi.md) -- 🇰🇷 [한국어](git-cheat-sheet-ko.md) -- 🇵🇱 **Polski** (bieżący) -- 🇧🇷 [Português](git-cheat-sheet-pt_BR.md) -- 🇹🇷 [Türkçe](git-cheat-sheet-tr.md) -- 🇨🇳 [中文](git-cheat-sheet-zh.md) +Ta ściągawka jest dostępna w wielu językach: + +| Język | Link | +|-------|------| +| 🇸🇦 Arabski | [git-cheat-sheet-ar.md](git-cheat-sheet-ar.md) | +| 🇧🇩 Bengalski | [git-cheat-sheet-bn.md](git-cheat-sheet-bn.md) | +| 🇧🇷 Portugalski (Brazylia) | [git-cheat-sheet-pt_BR.md](git-cheat-sheet-pt_BR.md) | +| 🇨🇳 Chiński | [git-cheat-sheet-zh.md](git-cheat-sheet-zh.md) | +| 🇩🇪 Niemiecki | [git-cheat-sheet-de.md](git-cheat-sheet-de.md) | +| 🇬🇷 Grecki | [git-cheat-sheet-el.md](git-cheat-sheet-el.md) | +| 🇮🇳 Hindi | [git-cheat-sheet-hi.md](git-cheat-sheet-hi.md) | +| 🇰🇷 Koreański | [git-cheat-sheet-ko.md](git-cheat-sheet-ko.md) | +| 🇵🇱 **Polski** | **(bieżący)** | +| 🇪🇸 Hiszpański | [git-cheat-sheet-es.md](git-cheat-sheet-es.md) | +| 🇹🇷 Turecki | [git-cheat-sheet-tr.md](git-cheat-sheet-tr.md) | +| 🇺🇸 Angielski | [README.md](../README.md) | --- ## 🤝 Współpraca -Zachęcamy do współpracy! Aby pomóc w ulepszaniu tego projektu: +Zapraszamy do współpracy! Możesz: -1. **Zgłaszaj problemy**: Dziel się błędami lub sugestiami ulepszeń -2. **Dodawaj nowe języki**: Twórz tłumaczenia lub ulepszaj istniejące -3. **Ulepszaj treść**: Dodawaj nowe polecenia, przykłady lub wyjaśnienia -4. **Przekazuj opinie**: Dziel się swoimi doświadczeniami i sugestiami +- 🐛 Zgłaszać błędy lub literówki +- ✨ Dodawać nowe polecenia Git +- 🌍 Tłumaczyć na nowe języki +- 💡 Ulepszać wyjaśnienia +- 📝 Poprawiać formatowanie -### Jak współpracować: -- [Otwórz issue na GitHub](https://github.com/arslanbilal/git-cheat-sheet/issues) -- Wyślij pull request -- Zaproponuj ulepszenia dokumentacji +**Jak współpracować:** +1. Zrób fork tego repozytorium +2. Utwórz swoją gałąź funkcjonalności (`git checkout -b feature/AmazingFeature`) +3. Zatwierdź swoje zmiany (`git commit -m 'Add some AmazingFeature'`) +4. Wypchnij gałąź (`git push origin feature/AmazingFeature`) +5. Otwórz Pull Request --- ## 📄 Licencja -Ten projekt jest licencjonowany na licencji MIT. Zobacz plik [LICENSE](../LICENSE) po więcej szczegółów. +Ten projekt jest open source i dostępny na [licencji MIT](../LICENSE). --- -
- ⭐ Jeśli ten cheat sheet jest pomocny, zostaw gwiazdkę!
- Miłego kodowania z Git! 🚀 -
+

+ ⭐ Zostaw gwiazdkę, jeśli ten przewodnik był pomocny! +

diff --git a/other-sheets/git-cheat-sheet-pt_BR.md b/other-sheets/git-cheat-sheet-pt_BR.md index 85222e7..461da8e 100644 --- a/other-sheets/git-cheat-sheet-pt_BR.md +++ b/other-sheets/git-cheat-sheet-pt_BR.md @@ -2,6 +2,10 @@ ![Git Logo](../Img/git-logo.png) +--- + +## 📖 Sobre + Esta folha de dicas abrangente do Git ajuda você a dominar comandos Git sem memorizar tudo. Seja você iniciante ou desenvolvedor experiente, este guia fornece referência rápida para operações essenciais do Git. **Contribuições são bem-vindas!** Sinta-se livre para: @@ -26,10 +30,7 @@ Esta folha de dicas abrangente do Git ajuda você a dominar comandos Git sem mem - [🔀 Merge e Rebase](#-merge-e-rebase) - [↩️ Desfazer](#️-desfazer) - [🌊 Git Flow](#-git-flow) -- [📚 Recursos Adicionais](#-recursos-adicionais) - [🌍 Outros Idiomas](#-outros-idiomas) -- [🤝 Contribuir](#-contribuir) -- [📄 Licença](#-licença) --- @@ -811,32 +812,6 @@ git flow hotfix finish VERSAO --- -## 📚 Recursos Adicionais - -### Documentação Oficial e Guias -- [Documentação Oficial do Git](https://git-scm.com/doc) -- [Livro Pro Git (gratuito)](https://git-scm.com/book/pt-br) -- [Manual de Referência Git](https://git-scm.com/docs) -- [Tutorial Git](https://git-scm.com/docs/gittutorial) - -### Materiais de Aprendizado Online -- [GitHub Git Handbook](https://guides.github.com/introduction/git-handbook/) -- [Atlassian Git Tutorials](https://www.atlassian.com/git/tutorials) -- [Learn Git Branching (interativo)](https://learngitbranching.js.org/?locale=pt_BR) -- [Git Immersion](http://gitimmersion.com/) - -### Ferramentas GUI -- [GitHub Desktop](https://desktop.github.com/) -- [GitKraken](https://www.gitkraken.com/) -- [SourceTree](https://www.sourcetreeapp.com/) -- [Tower](https://www.git-tower.com/) - -### Tópicos Avançados -- [Git Hooks](https://git-scm.com/book/pt-br/v2/Customizing-Git-Git-Hooks) -- [Workflows Git](https://www.atlassian.com/git/tutorials/comparing-workflows) -- [Funcionamento Interno do Git](https://git-scm.com/book/pt-br/v2/Git-Internals-Plumbing-and-Porcelain) - ---- ## 🌍 Outros Idiomas @@ -853,6 +828,7 @@ Esta folha de dicas está disponível em múltiplos idiomas: | 🇬🇷 Grego | [git-cheat-sheet-el.md](./git-cheat-sheet-el.md) | | 🇮🇳 Hindi | [git-cheat-sheet-hi.md](./git-cheat-sheet-hi.md) | | 🇰🇷 Coreano | [git-cheat-sheet-ko.md](./git-cheat-sheet-ko.md) | +| 🇧🇷 **Português (Brasil)** | **atual** | | 🇵🇱 Polonês | [git-cheat-sheet-pl.md](./git-cheat-sheet-pl.md) | | 🇹🇷 Turco | [git-cheat-sheet-tr.md](./git-cheat-sheet-tr.md) | diff --git a/other-sheets/git-cheat-sheet-tr.md b/other-sheets/git-cheat-sheet-tr.md index 96848fb..3b777ea 100644 --- a/other-sheets/git-cheat-sheet-tr.md +++ b/other-sheets/git-cheat-sheet-tr.md @@ -1,714 +1,865 @@ -# Git Cheat Sheet Türkçe +# Git ve Git Flow Kopya Kağıdı +[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) -![Git Logo](../Img/git-logo.png) +

+ Git +

-En çok kullanılan Git komutları için hızlı referans rehberi, kolay kullanım için kategorilere göre düzenlenmiştir. +--- -## 📖 Bu Rehber Hakkında +## 📖 Hakkında -Bu kapsamlı Git referans rehberi, Git iş akışlarını iyileştirmek isteyen herkes için eksiksiz bir kaynaktır. Git yolculuğuna başlayan yeni başlayanlardan deneyimli geliştiricilere kadar, bu rehber geliştirme sürecinizi hızlandırmak için sistematik olarak düzenlenmiş ve kategorize edilmiş komutlar sağlar. +Bu kapsamlı Git kopya kağıdı, her şeyi ezberlemenize gerek kalmadan Git komutlarında ustalaşmanıza yardımcı olur. İster yeni başlayan ister deneyimli bir geliştirici olun, bu rehber temel Git işlemleri için hızlı bir referans sağlar. -### Temel Özellikler: -- **Sistematik kategoriler**: Komutlar açık ve mantıklı gruplara düzenlenmiştir -- **Pratik örnekler**: Gerçek kullanım durumlarıyla birlikte verilmiştir -- **Yeni başlayanlar için uygun**: Net açıklamalar ve ipuçları içerir -- **Hızlı referans**: Temel komutlara anında erişim +**Katkılarınızı Bekliyoruz!** Yapabilecekleriniz: +- Dilbilgisi hatalarını düzeltme +- Yeni komutlar ekleme +- Kendi dilinize çevirme +- Açıklamaları iyileştirme --- - -## 📑 İçindekiler - -- [📖 Bu Rehber Hakkında](#bu-rehber-hakkında) -- [🔧 İlk Kurulum](#i̇lk-kurulum) -- [⚙️ Yapılandırma Dosyaları](#yapılandırma-dosyaları) -- [📁 Depo Kurulumu](#depo-kurulumu) -- [📊 Durum Komutları](#durum-komutları) -- [📝 Dosya Yönetimi](#dosya-yönetimi) -- [💾 Commit'ler](#commitler) -- [🌿 Dal'lar (Branches)](#dallar-branches) -- [🔀 Birleştirme (Merge)](#birleştirme-merge) -- [🌐 Uzak Depolar](#uzak-depolar) -- [📚 Geçmiş ve Loglar](#geçmiş-ve-loglar) -- [🔍 Arama](#arama) -- [📁 Taşıma/Yeniden Adlandırma](#taşımayeniden-adlandırma) -- [🏷️ Etiketler (Tags)](#etiketler-tags) -- [↩️ Değişiklikleri Geri Alma](#değişiklikleri-geri-alma) -- [📦 Saklama (Stash)](#saklama-stash) -- [🌊 Git Flow](#git-flow) -- [💡 Faydalı İpuçları](#faydalı-i̇puçları) -- [📚 Ek Kaynaklar](#ek-kaynaklar) -- [🌍 Diğer Diller](#diğer-diller) -- [🤝 Katkıda Bulunma](#katkıda-bulunma) -- [📄 Lisans](#lisans) +## 📋 İçindekiler + +- [🔧 Kurulum](#-kurulum) +- [⚙️ Yapılandırma Dosyaları](#️-yapılandırma-dosyaları) +- [🆕 Depo Oluşturma](#-depo-oluşturma) +- [📝 Yerel Değişiklikler](#-yerel-değişiklikler) +- [🔍 Arama](#-arama) +- [📖 Commit Geçmişi](#-commit-geçmişi) +- [📁 Taşıma / Yeniden Adlandırma](#-taşıma--yeniden-adlandırma) +- [🌿 Dallar ve Etiketler](#-dallar-ve-etiketler) +- [🔄 Güncelleme ve Yayınlama](#-güncelleme-ve-yayınlama) +- [🔀 Birleştirme ve Rebase](#-birleştirme-ve-rebase) +- [↩️ Geri Alma](#️-geri-alma) +- [🌊 Git Flow](#-git-flow) +- [🌍 Diğer Diller](#-diğer-diller) --- -## 🔧 İlk Kurulum +## 🔧 Kurulum -Git'i kişisel bilgilerinizle yapılandırın: +### Yapılandırmayı Görüntüleme +**Mevcut yapılandırmayı göster:** ```bash -# Kullanıcı adını ayarlama -git config --global user.name "Adınız" - -# E-posta adresini ayarlama -git config --global user.email "email@example.com" - -# Mevcut yapılandırmayı görme git config --list +``` -# Varsayılan editörü ayarlama -git config --global core.editor "nano" - -# Birleştirme aracını ayarlama -git config --global merge.tool vimdiff +**Depo yapılandırmasını göster:** +```bash +git config --local --list ``` ---- +**Global yapılandırmayı göster:** +```bash +git config --global --list +``` -## ⚙️ Yapılandırma Dosyaları +**Sistem yapılandırmasını göster:** +```bash +git config --system --list +``` -Git, yapılandırmayı çeşitli seviyelerde yönetir: +### Kullanıcı Yapılandırması -### Global yapılandırma dosyası +**Sürüm geçmişi için adınızı ayarlayın:** ```bash -# Global yapılandırma dosyası yolu -~/.gitconfig - -# Global yapılandırmayı düzenleme -git config --global --edit +git config --global user.name "[firstname lastname]" ``` -### Depo yapılandırma dosyası +**E-posta adresinizi ayarlayın:** ```bash -# Depo yapılandırma dosyası yolu -.git/config - -# Depo yapılandırmasını düzenleme -git config --edit +git config --global user.email "[valid-email]" ``` -### Sistem yapılandırması -```bash -# Sistem yapılandırma dosyası (yönetici izinleri gerekli) -/etc/gitconfig +### Görüntüleme ve Editör Ayarları -# Sistem yapılandırmasını düzenleme -git config --system --edit +**Otomatik komut satırı renklendirmesini etkinleştirin:** +```bash +git config --global color.ui auto ``` -### Yararlı yapılandırma ayarları +**Commit'ler için global editörü ayarlayın:** ```bash -# Renkli çıktıyı etkinleştirme -git config --global color.ui true +git config --global core.editor vi +``` -# Varsayılan dal adını ayarlama -git config --global init.defaultBranch main +--- -# Satır sonu işleme (macOS/Linux) -git config --global core.autocrlf input +## ⚙️ Yapılandırma Dosyaları -# Satır sonu işleme (Windows) -git config --global core.autocrlf true -``` +| Kapsam | Konum | Komut Bayrağı | +|--------|-------|---------------| +| **Depo** | `/.git/config` | `--local` | +| **Kullanıcı** | `~/.gitconfig` | `--global` | +| **Sistem** | `/etc/gitconfig` | `--system` | --- -## 📁 Depo Kurulumu +## 🆕 Depo Oluşturma -### Yeni depo oluşturma: +### Mevcut Depoyu Klonlama +**SSH ile:** ```bash -# Yeni Git deposu oluşturma -git init +git clone ssh://user@domain.com/repo.git +``` + +**HTTPS ile:** +```bash +git clone https://domain.com/user/repo.git +``` -# Mevcut depoyu klonlama -git clone +### Yeni Depo Başlatma -# Belirli dizine klonlama -git clone +**Mevcut dizinde depo oluştur:** +```bash +git init +``` + +**Belirli dizinde depo oluştur:** +```bash +git init ``` --- -## 📊 Durum Komutları +## 📝 Yerel Değişiklikler -### Deponuzun durumunu kontrol etme: +### Durum ve Farkları Kontrol Etme +**Çalışma dizini durumunu görüntüle:** ```bash -# Deponun mevcut durumunu gösterme git status +``` + +**İzlenen dosyalardaki değişiklikleri göster:** +```bash +git diff +``` -# Kısa formatta durum gösterme -git status -s +**Belirli dosyadaki değişiklikleri göster:** +```bash +git diff +``` -# İzlenmeyen dosyaları yok sayarak durum gösterme -git status --ignored +### Değişiklikleri Hazırlama -# Değiştirilmiş dosyalardaki farkları gösterme -git diff +**Tüm mevcut değişiklikleri ekle:** +```bash +git add . +``` -# Hazırlama alanındaki farkları gösterme -git diff --staged +**Belirli dosyaları ekle:** +```bash +git add +``` -# Dallar arasındaki farkları gösterme -git diff +**Bir dosyanın parçalarını etkileşimli olarak ekle:** +```bash +git add -p ``` ---- +### Değişiklikleri Kaydetme -## 📝 Dosya Yönetimi +**Tüm izlenen dosya değişikliklerini kaydet:** +```bash +git commit -a +``` -### Dosya ekleme ve kaldırma: +**Hazırlanmış değişiklikleri kaydet:** +```bash +git commit +``` +**Mesajla kaydet:** ```bash -# Belirli dosyayı hazırlama alanına ekleme -git add +git commit -m 'message here' +``` -# Tüm değiştirilmiş dosyaları ekleme -git add . +**Hazırlama adımını atlayarak mesajla kaydet:** +```bash +git commit -am 'message here' +``` -# Belirli türdeki tüm dosyaları ekleme -git add *.txt +**Belirli tarihle kaydet:** +```bash +git commit --date="`date --date='n day ago'`" -am "" +``` -# Etkileşimli ekleme -git add -i +### Son Commit'i Değiştirme -# Dosyayı depo ve çalışma dizininden kaldırma -git rm +> ⚠️ **Uyarı:** Yayınlanmış commit'leri değiştirmeyin! -# Dosyayı sadece depodan kaldırma (dizinde tutma) -git rm --cached +**Son commit'i düzelt:** +```bash +git commit -a --amend +``` -# Dosya taşıma/yeniden adlandırma -git mv +**Commit mesajını değiştirmeden düzelt:** +```bash +git commit --amend --no-edit ``` ---- +**Committer tarihini değiştir:** +```bash +GIT_COMMITTER_DATE="date" git commit --amend +``` -## 💾 Commit'ler +**Yazar tarihini değiştir:** +```bash +git commit --amend --date="date" +``` -### Depoda değişiklikleri kaydetme: +### Değişiklikleri Saklama +**Mevcut değişiklikleri geçici olarak sakla:** ```bash -# Mesajla commit yapma -git commit -m "Commit mesajı" +git stash +``` -# Tüm değiştirilmiş dosyaları ekleyerek commit yapma -git commit -am "Commit mesajı" +**Son saklanan değişiklikleri uygula:** +```bash +git stash apply +``` -# Son commit'i değiştirme -git commit --amend +**Belirli bir stash'i uygula:** +```bash +git stash apply stash@{stash_number} +``` +> Mevcut stash'leri görmek için `git stash list` kullanın -# Boş commit yapma (CI/CD tetikleyicileri için yararlı) -git commit --allow-empty -m "CI Tetikleyici" +**Son stash'i kaldır:** +```bash +git stash drop +``` -# Ayrıntılı mesajla commit yapma (editör açılır) -git commit +**Kaydedilmemiş değişiklikleri başka bir dala taşı:** +```bash +git stash +git checkout branch2 +git stash pop ``` --- -## 🌿 Dal'lar (Branches) +## 🔍 Arama -### Dallarla çalışma: +### Metin Arama +**Tüm dosyalarda metin ara:** ```bash -# Tüm dalları gösterme -git branch +git grep "Hello" +``` -# Uzak dalları gösterme -git branch -r +**Belirli sürümde ara:** +```bash +git grep "Hello" v2.5 +``` -# Tüm dalları gösterme (yerel ve uzak) -git branch -a +### Commit Arama -# Yeni dal oluşturma -git branch +**Belirli anahtar kelimeyi ekleyen commit'leri bul:** +```bash +git log -S 'keyword' +``` -# Dala geçiş yapma -git checkout +**Düzenli ifade ile ara:** +```bash +git log -S 'keyword' --pickaxe-regex +``` -# Yeni dal oluşturup geçiş yapma -git checkout -b +--- -# Belirli commit'ten dal oluşturma -git checkout -b +## 📖 Commit Geçmişi -# Dal silme -git branch -d +### Temel Geçmiş -# Zorla dal silme -git branch -D +**Tüm commit'leri göster (ayrıntılı):** +```bash +git log +``` -# Mevcut dalı yeniden adlandırma -git branch -m +**Commit'leri göster (her biri tek satır):** +```bash +git log --oneline +``` -# Belirli dalı yeniden adlandırma -git branch -m +**Belirli yazarın commit'lerini göster:** +```bash +git log --author="username" ``` ---- +**Belirli dosyadaki değişiklikleri göster:** +```bash +git log -p +``` + +### Gelişmiş Geçmiş + +**Dalları karşılaştır:** +```bash +git log --oneline .. --left-right +``` -## 🔀 Birleştirme (Merge) +**Kim neyi ne zaman değiştirdi göster:** +```bash +git blame +``` -### Dallar arasında değişiklikleri birleştirme: +### Referans Günlükleri +**Referans günlüğünü göster:** ```bash -# Mevcut dala başka dalı birleştirme -git merge +git reflog show +``` -# Fast-forward olmadan birleştirme (merge commit oluşturma) -git merge --no-ff +**Referans günlüğünü sil:** +```bash +git reflog delete +``` -# Sadece fast-forward olduğunda birleştirme -git merge --ff-only +--- -# Devam eden birleştirmeyi iptal etme -git merge --abort +## 📁 Taşıma / Yeniden Adlandırma -# Çakışma çözümünden sonra birleştirmeye devam etme -git merge --continue +**Bir dosyayı yeniden adlandır:** +```bash +git mv Index.txt Index.html ``` --- -## 🌐 Uzak Depolar +## 🌿 Dallar ve Etiketler -### Uzak depo yönetimi: +### Dalları Listeleme +**Yerel dalları listele:** ```bash -# Uzak depoları gösterme -git remote - -# URL'lerle uzak depoları gösterme -git remote -v +git branch +``` -# Uzak depo ekleme -git remote add +**Tüm dalları listele (yerel + uzak):** +```bash +git branch -a +``` -# Uzak depo URL'ini değiştirme -git remote set-url +**Uzak dalları listele:** +```bash +git branch -r +``` -# Uzak depo kaldırma -git remote remove +**Birleştirilmiş dalları listele:** +```bash +git branch --merged +``` -# Uzak depoya değişiklikleri gönderme -git push +### Dal Değiştirme ve Oluşturma -# Dal göndererek takibi ayarlama -git push -u +**Mevcut dala geç:** +```bash +git checkout +``` -# Tüm dalları gönderme -git push --all +**Yeni dal oluştur ve geç:** +```bash +git checkout -b +``` -# Etiketleri gönderme -git push --tags +**Önceki dala geç:** +```bash +git checkout - +``` -# Uzak depodan değişiklikleri indirme -git pull +**Mevcut daldan yeni dal oluştur:** +```bash +git checkout -b +``` -# Birleştirme olmadan değişiklikleri indirme -git fetch +**Belirli commit'ten dal oluştur:** +```bash +git checkout -b +``` -# Tüm uzak dalları indirme -git fetch --all +**Geçiş yapmadan dal oluştur:** +```bash +git branch ``` ---- +**İzleme dalı oluştur:** +```bash +git branch --track +``` -## 📚 Geçmiş ve Loglar +### Dal İşlemleri -### Commit geçmişini keşfetme: +**Farklı daldan tek dosya al:** +```bash +git checkout -- +``` +**Başka daldan belirli commit'i uygula:** ```bash -# Commit geçmişini gösterme -git log +git cherry-pick +``` -# Commit başına bir satırda geçmiş gösterme -git log --oneline +**Mevcut dalı yeniden adlandır:** +```bash +git branch -m +``` -# Grafik ile geçmiş gösterme -git log --graph +**Yerel dalı sil:** +```bash +git branch -d +``` -# Belirli dosyanın geçmişini gösterme -git log +**Yerel dalı zorla sil:** +```bash +git branch -D +``` +> ⚠️ **Uyarı:** Birleştirilmemiş değişiklikleri kaybedersiniz! -# Commit istatistiklerini gösterme -git log --stat +### Etiketler -# Her commit'teki değişiklikleri gösterme -git log -p +**HEAD'de etiket oluştur:** +```bash +git tag +``` -# Son N commit'i gösterme -git log -n +**Açıklamalı etiket oluştur:** +```bash +git tag -a +``` -# Tarihler arasındaki commit'leri gösterme -git log --since="2023-01-01" --until="2023-12-31" +**Mesajlı etiket oluştur:** +```bash +git tag -am 'message here' +``` -# Yazara göre commit'leri gösterme -git log --author="Yazar Adı" +**Tüm etiketleri listele:** +```bash +git tag +``` -# Commit mesajlarında arama yapma -git log --grep="anahtar kelime" +**Etiketleri mesajlarıyla listele:** +```bash +git tag -n ``` --- -## 🔍 Arama +## 🔄 Güncelleme ve Yayınlama -### İçerik ve geçmişte arama: +### Uzak Depo Yönetimi +**Yapılandırılmış uzak depoları listele:** ```bash -# İzlenen dosyalarda metin arama -git grep "aranacak metin" - -# Büyük/küçük harf duyarsız arama -git grep -i "metin" +git remote -v +``` -# Tam kelime arama -git grep -w "kelime" +**Uzak depo bilgisini göster:** +```bash +git remote show +``` -# Satır numaralarını gösterme -git grep -n "metin" +**Yeni uzak depo ekle:** +```bash +git remote add +``` -# Sadece dosya adlarını gösterme -git grep -l "metin" +**Uzak depoyu yeniden adlandır:** +```bash +git remote rename +``` -# Belirli dosyalarda arama -git grep "metin" -- "*.js" +**Uzak depoyu kaldır:** +```bash +git remote rm +``` +> ℹ️ **Not:** Bu yalnızca yerel uzak referansı kaldırır, uzak deponun kendisini silmez. -# Commit geçmişinde arama -git log -S "metin" --source --all +### Fetch ve Pull -# Geçmişte ekleme/silme araması -git log -G "regex_pattern" --patch +**Değişiklikleri birleştirmeden indir:** +```bash +git fetch +``` -# Dosya adına göre arama -git log --all --full-history -- "**/dosya_adi.*" +**Değişiklikleri indir ve birleştir:** +```bash +git pull +``` -# Belirli commit'te arama -git grep "metin" +**Ana daldan değişiklikleri al:** +```bash +git pull origin master ``` ---- +**Rebase ile pull yap:** +```bash +git pull --rebase +``` -## 🏷️ Etiketler (Tags) +### Push ve Yayınlama -### Sürüm etiketleri yönetimi: +**Yerel değişiklikleri yayınla:** +```bash +git push +``` +**Uzak dalı sil:** ```bash -# Tüm etiketleri gösterme -git tag +# Git v1.7.0+ +git push --delete -# Hafif etiket oluşturma -git tag +# Git v1.5.0+ +git push : +``` -# Açıklamalı etiket oluşturma -git tag -a -m "Etiket mesajı" +**Etiketleri yayınla:** +```bash +git push --tags +``` -# Belirli commit'e etiket oluşturma -git tag -a +--- -# Etiket bilgilerini gösterme -git show +## 🔀 Birleştirme ve Rebase -# Yerel etiket silme -git tag -d +### Birleştirme İşlemleri -# Uzak etiket silme -git push --delete +**Dalı mevcut HEAD'e birleştir:** +```bash +git merge +``` -# Belirli etiket gönderme -git push +**Birleştirme aracını global olarak yapılandır:** +```bash +git config --global merge.tool meld +``` -# Tüm etiketleri gönderme -git push --tags +**Yapılandırılmış birleştirme aracını kullan:** +```bash +git mergetool ``` ---- +### Rebase İşlemleri -## 📁 Taşıma/Yeniden Adlandırma +> ⚠️ **Uyarı:** Yayınlanmış commit'leri rebase etmeyin! -### Dosya ve dizin yönetimi: +**Mevcut HEAD'i dal üzerine rebase et:** +```bash +git rebase +``` +**Rebase'i iptal et:** ```bash -# Dosya taşıma/yeniden adlandırma -git mv +git rebase --abort +``` -# Dizin yeniden adlandırma -git mv +**Çakışmaları çözdükten sonra rebase'e devam et:** +```bash +git rebase --continue +``` -# Birden fazla dosyayı dizine taşıma -git mv dosya1.txt dosya2.txt dizin/ +### Çakışma Çözümü + +**Dosyayı çözüldü olarak işaretle:** +```bash +git add +``` -# Büyük/küçük harf değişikliği (büyük/küçük harf duyarlı dosya sistemleri) -git mv dosyaadi.txt temp.txt -git mv temp.txt DosyaAdi.txt +**Çözülen dosyayı kaldır:** +```bash +git rm +``` -# Taşınan dosyanın geçmişini takip etme -git log --follow +### Commit'leri Birleştirme (Squash) -# Taşınan dosyaları izleme -git log --stat -M +**Squash için etkileşimli rebase:** +```bash +git rebase -i +``` -# Yeniden adlandırma algılama eşiğini ayarlama -git log --follow -M90% +**Örnek squash yapılandırması:** +``` +# Önce +pick +pick +pick + +# Sonra (commit_id2 ve commit_id3'ü commit_id ile birleştir) +pick +squash +squash ``` --- -## ↩️ Değişiklikleri Geri Alma +## ↩️ Geri Alma -### Değişiklikleri geri almak: +### Değişiklikleri İptal Etme +**Tüm yerel değişiklikleri iptal et:** ```bash -# Belirli dosyadaki değişiklikleri iptal etme -git checkout - -# Tüm commit edilmemiş değişiklikleri iptal etme -git checkout . - -# Dosyayı belirli sürüme geri getirme -git checkout +git reset --hard HEAD +``` -# Dosyayı hazırlama alanından kaldırma -git reset +**Tüm dosyaları hazırlama alanından çıkar:** +```bash +git reset HEAD +``` -# Tüm dosyaları hazırlama alanından kaldırma -git reset +**Belirli dosyadaki değişiklikleri iptal et:** +```bash +git checkout HEAD +``` -# Önceki commit'e dönme (değişiklikleri koruma) -git reset --soft HEAD~1 +### Sıfırlama İşlemleri -# Önceki commit'e dönme (değişiklikleri iptal etme) -git reset --hard HEAD~1 +**Önceki commit'e sıfırla (tüm değişiklikleri sil):** +```bash +git reset --hard +``` -# Belirli commit'e dönme -git reset --hard +**Uzak dal durumuna sıfırla:** +```bash +git reset --hard +# Örnek: git reset --hard upstream/master +``` -# Başka commit'i iptal eden yeni commit oluşturma -git revert +**Değişiklikleri hazırlanmamış olarak koruyarak sıfırla:** +```bash +git reset +``` -# Birden fazla commit'i geri alma -git revert .. +**Kaydedilmemiş yerel değişiklikleri koruyarak sıfırla:** +```bash +git reset --keep ``` ---- +### Commit'leri Geri Alma -## 📦 Saklama (Stash) +**Commit'i geri al (ters değişikliklerle yeni commit oluştur):** +```bash +git revert +``` -### Geçici olarak çalışmayı saklama: +### Yok Sayılan Dosyaları Temizleme +**Yanlışlıkla kaydedilmiş, yok sayılması gereken dosyaları kaldır:** ```bash -# Mevcut değişiklikleri stash'e saklama -git stash +git rm -r --cached . +git add . +git commit -m "remove ignored files" +``` -# Açıklayıcı mesajla saklama -git stash save "Açıklayıcı mesaj" +--- -# Tüm stash'leri gösterme -git stash list +## 🌊 Git Flow -# Son stash'i uygulama -git stash apply +**Geliştirilmiş Git-flow:** [git-flow-avh](https://github.com/petervanderdoes/gitflow-avh) -# Belirli stash'i uygulama -git stash apply stash@{0} +### 📋 İçindekiler +- [🔧 Kurulum](#setup-1) +- [🚀 Başlangıç](#getting-started) +- [✨ Özellikler](#features) +- [🎁 Sürüm Yayınlama](#make-a-release) +- [🔥 Acil Düzeltmeler](#hotfixes) +- [📊 Komutlara Genel Bakış](#commands-overview) -# Son stash'i uygulayıp silme -git stash pop - -# Belirli stash'i silme -git stash drop stash@{0} +--- -# Tüm stash'leri silme -git stash clear +### 🔧 Kurulum {#setup-1} -# Stash'teki değişiklikleri gösterme -git stash show stash@{0} +> **Ön Koşul:** Çalışan bir Git kurulumu gereklidir. Git-flow macOS, Linux ve Windows'ta çalışır. -# Stash'ten dal oluşturma -git stash branch stash@{0} +**macOS (Homebrew):** +```bash +brew install git-flow-avh ``` ---- +**macOS (MacPorts):** +```bash +port install git-flow +``` -## 🌊 Git Flow +**Linux (Debian tabanlı):** +```bash +sudo apt-get install git-flow +``` -Git Flow, proje yayınları etrafında tasarlanmış katı bir iş akışı tanımlayan dallanma modelidir. +**Windows (Cygwin):** +> wget ve util-linux gerektirir +```bash +wget -q -O - --no-check-certificate https://raw.githubusercontent.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh install | bash +``` -### Ana dallar: -- **master/main**: Üretim kodu -- **develop**: Ana geliştirme dalı +--- -### Destek dalları: -- **feature**: Yeni özellikler için -- **release**: Yeni sürüm hazırlığı için -- **hotfix**: Üretimde acil düzeltmeler için +### 🚀 Başlangıç -### Git Flow komutları: +Git-flow, projenizi özelleştirmek için başlatma gerektirir. +**Başlatma (etkileşimli):** ```bash -# git flow başlatma git flow init +``` +> Dal adlandırma kuralları hakkında sorular yanıtlayacaksınız. Varsayılan değerler önerilir. -# Yeni özellik başlatma -git flow feature start <özellik-adı> - -# Özelliği bitirme -git flow feature finish <özellik-adı> +**Başlatma (varsayılanları kullan):** +```bash +git flow init -d +``` -# Özelliği yayınlama -git flow feature publish <özellik-adı> +--- -# Sürüm başlatma -git flow release start +### ✨ Özellikler -# Sürümü bitirme -git flow release finish +Özellikler, gelecek sürümler için yeni işlevsellik geliştirmek içindir. Genellikle yalnızca geliştirici depolarında bulunurlar. -# Hotfix başlatma -git flow hotfix start +**Yeni özellik başlat:** +```bash +git flow feature start MYFEATURE +``` +> 'develop' dalını temel alan özellik dalı oluşturur ve ona geçiş yapar -# Hotfix'i bitirme -git flow hotfix finish +**Özelliği tamamla:** +```bash +git flow feature finish MYFEATURE ``` +> Bu işlem: +> 1. MYFEATURE'ı 'develop' dalına birleştirir +> 2. Özellik dalını siler +> 3. 'develop' dalına geri geçer -### Git Flow olmadan iş akışı: +**Özelliği yayınla (iş birliği için):** +```bash +git flow feature publish MYFEATURE +``` -![Git Flow Commands](../Img/git-flow-commands-without-flow.png) +**Yayınlanan özelliği al:** +```bash +git flow feature pull origin MYFEATURE +``` +**Origin özelliğini izle:** ```bash -# Özellik dalı oluşturma -git checkout develop -git checkout -b feature/yeni-özellik +git flow feature track MYFEATURE +``` -# Özellik üzerinde çalışma -git add . -git commit -m "Yeni özellik ekle" +--- -# Develop'a özellik birleştirme -git checkout develop -git merge --no-ff feature/yeni-özellik -git branch -d feature/yeni-özellik +### 🎁 Sürüm Yayınlama -# Sürüm dalı oluşturma -git checkout develop -git checkout -b release/1.0.0 +Sürümler, yeni üretim sürümlerinin hazırlanmasını destekler, küçük hata düzeltmeleri ve meta-veri hazırlığına olanak tanır. -# Sürümü tamamlama -git checkout master -git merge --no-ff release/1.0.0 -git tag -a 1.0.0 -m "Sürüm 1.0.0" -git checkout develop -git merge --no-ff release/1.0.0 -git branch -d release/1.0.0 +**Sürüm başlat:** +```bash +git flow release start RELEASE [BASE] ``` +> 'develop' dalından sürüm dalı oluşturur. İsteğe bağlı olarak [BASE] commit SHA-1 belirtin. ---- - -## 💡 Faydalı İpuçları +**Sürümü yayınla:** +```bash +git flow release publish RELEASE +``` -### Faydalı kısayollar: +**Uzak sürümü izle:** +```bash +git flow release track RELEASE +``` +**Sürümü tamamla:** ```bash -# Faydalı kısayolları ayarlama -git config --global alias.st status -git config --global alias.co checkout -git config --global alias.br branch -git config --global alias.ci commit -git config --global alias.unstage 'reset HEAD --' -git config --global alias.last 'log -1 HEAD' -git config --global alias.visual '!gitk' +git flow release finish RELEASE ``` +> Bu işlem: +> 1. Sürüm dalını 'master'a birleştirir +> 2. Sürümü etiketler +> 3. Sürümü 'develop'a geri birleştirir +> 4. Sürüm dalını siler -### .gitignore dosyaları: +> 💡 **Unutmayın:** Etiketlerinizi `git push --tags` ile gönderin +--- + +### 🔥 Acil Düzeltmeler + +Acil düzeltmeler, canlı üretim sürümlerindeki kritik sorunları giderir. Master üzerindeki ilgili etiketten dallanırlar. + +**Acil düzeltme başlat:** ```bash -# .gitignore dosyası oluşturma -echo "node_modules/" >> .gitignore -echo "*.log" >> .gitignore -echo ".env" >> .gitignore +git flow hotfix start VERSION [BASENAME] +``` -# Zaten izlenen dosyaları yok sayma -git rm --cached -echo "" >> .gitignore -git add .gitignore -git commit -m ".gitignore'a dosya ekle" +**Acil düzeltmeyi tamamla:** +```bash +git flow hotfix finish VERSION ``` +> Hem 'develop' hem de 'master'a geri birleştirir ve master birleştirmesini etiketler --- -## 📚 Ek Kaynaklar +### 📊 Komutlara Genel Bakış -### Resmi Dokümantasyon ve Rehberler -- [Git Resmi Dokümantasyonu](https://git-scm.com/doc) -- [Pro Git Kitabı (ücretsiz)](https://git-scm.com/book) -- [Git Referans Kılavuzu](https://git-scm.com/docs) -- [Git Eğitimi](https://git-scm.com/docs/gittutorial) +

+ Git Flow Komutları +

-### Çevrimiçi Öğrenme Materyalleri -- [GitHub Git El Kitabı](https://guides.github.com/introduction/git-handbook/) -- [Atlassian Git Eğitimleri](https://www.atlassian.com/git/tutorials) -- [Learn Git Branching (etkileşimli)](https://learngitbranching.js.org/) -- [Git Immersion](http://gitimmersion.com/) +### 🌊 Git Flow Şeması -### GUI Araçları -- [GitHub Desktop](https://desktop.github.com/) -- [GitKraken](https://www.gitkraken.com/) -- [SourceTree](https://www.sourcetreeapp.com/) -- [Tower](https://www.git-tower.com/) - -### İleri Düzey Konular -- [Git Hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) -- [Git İş Akışları](https://www.atlassian.com/git/tutorials/comparing-workflows) -- [Git İç Yapısı](https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain) +

+ Git Flow Şeması +

--- + ## 🌍 Diğer Diller -Bu Git Cheat Sheet aşağıdaki dillerde mevcuttur: - -- 🇺🇸 [English](../README.md) -- 🇸🇦 [العربية](git-cheat-sheet-ar.md) -- 🇧🇩 [বাংলা](git-cheat-sheet-bn.md) -- 🇩🇪 [Deutsch](git-cheat-sheet-de.md) -- 🇬🇷 [Ελληνικά](git-cheat-sheet-el.md) -- 🇪🇸 [Español](git-cheat-sheet-es.md) -- 🇮🇳 [हिन्दी](git-cheat-sheet-hi.md) -- 🇰🇷 [한국어](git-cheat-sheet-ko.md) -- 🇵🇱 [Polski](git-cheat-sheet-pl.md) -- 🇧🇷 [Português](git-cheat-sheet-pt_BR.md) -- 🇹🇷 **Türkçe** (mevcut) -- 🇨🇳 [中文](git-cheat-sheet-zh.md) +Bu kopya kağıdı birçok dilde mevcuttur: + +| Dil | Bağlantı | +|-----|----------| +| 🇸🇦 Arapça | [git-cheat-sheet-ar.md](git-cheat-sheet-ar.md) | +| 🇧🇩 Bengalce | [git-cheat-sheet-bn.md](git-cheat-sheet-bn.md) | +| 🇧🇷 Brezilya Portekizcesi | [git-cheat-sheet-pt_BR.md](git-cheat-sheet-pt_BR.md) | +| 🇨🇳 Çince | [git-cheat-sheet-zh.md](git-cheat-sheet-zh.md) | +| 🇩🇪 Almanca | [git-cheat-sheet-de.md](git-cheat-sheet-de.md) | +| 🇬🇷 Yunanca | [git-cheat-sheet-el.md](git-cheat-sheet-el.md) | +| 🇮🇳 Hintçe | [git-cheat-sheet-hi.md](git-cheat-sheet-hi.md) | +| 🇰🇷 Korece | [git-cheat-sheet-ko.md](git-cheat-sheet-ko.md) | +| 🇵🇱 Lehçe | [git-cheat-sheet-pl.md](git-cheat-sheet-pl.md) | +| 🇪🇸 İspanyolca | [git-cheat-sheet-es.md](git-cheat-sheet-es.md) | +| 🇹🇷 **Türkçe** | **(mevcut)** | --- ## 🤝 Katkıda Bulunma -Katkıları memnuniyetle karşılıyoruz! Bu projeyi iyileştirmeye yardımcı olmak için: +Katkılarınızı bekliyoruz! Yapabilecekleriniz: -1. **Sorunları bildirin**: Hataları veya iyileştirme önerilerini paylaşın -2. **Yeni diller ekleyin**: Çeviriler oluşturun veya mevcut olanları geliştirin -3. **İçeriği iyileştirin**: Yeni komutlar, örnekler veya açıklamalar ekleyin -4. **Geri bildirim verin**: Deneyimlerinizi ve önerilerinizi paylaşın +- 🐛 Hataları veya yazım yanlışlarını bildirme +- ✨ Yeni Git komutları ekleme +- 🌍 Yeni dillere çevirme +- 💡 Açıklamaları iyileştirme +- 📝 Biçimlendirmeyi geliştirme -### Nasıl katkıda bulunulur: -- [GitHub'da sorun açın](https://github.com/arslanbilal/git-cheat-sheet/issues) -- Pull request gönderin -- Dokümantasyon iyileştirmeleri önerin +**Nasıl katkıda bulunulur:** +1. Bu depoyu fork edin +2. Özellik dalınızı oluşturun (`git checkout -b feature/HarikaOzellik`) +3. Değişikliklerinizi kaydedin (`git commit -m 'HarikaOzellik ekle'`) +4. Dalınızı gönderin (`git push origin feature/HarikaOzellik`) +5. Bir Pull Request açın --- ## 📄 Lisans -Bu proje MIT Lisansı altında lisanslanmıştır. Ayrıntılar için [LICENSE](../LICENSE) dosyasına bakın. +Bu proje açık kaynaklıdır ve [MIT Lisansı](../LICENSE) altında kullanılabilir. --- -
- ⭐ Bu cheat sheet yararlı olduğunda yıldızlayın!
- Git ile mutlu kodlamalar! 🚀 -
+

+ ⭐ Bu depoyu faydalı bulduysanız yıldızlayın! +

diff --git a/other-sheets/git-cheat-sheet-zh.md b/other-sheets/git-cheat-sheet-zh.md index 6eed0ba..a235376 100644 --- a/other-sheets/git-cheat-sheet-zh.md +++ b/other-sheets/git-cheat-sheet-zh.md @@ -2,6 +2,10 @@ ![Git Logo](../Img/git-logo.png) +--- + +## 📖 关于 + 这个全面的Git速查表帮助您掌握Git命令而无需记住所有内容。无论您是初学者还是经验丰富的开发者,本指南都为基本的Git操作提供快速参考。 **欢迎贡献!** 请随意: @@ -14,7 +18,6 @@ ## 📋 目录 -- [📖 关于](#-关于) - [🔧 设置](#-设置) - [⚙️ 配置文件](#️-配置文件) - [🆕 创建仓库](#-创建仓库) @@ -27,10 +30,7 @@ - [🔀 合并和变基](#-合并和变基) - [↩️ 撤销](#️-撤销) - [🌊 Git Flow](#-git-flow) -- [📚 附加资源](#-附加资源) - [🌍 其他语言](#-其他语言) -- [🤝 贡献](#-贡献) -- [📄 许可证](#-许可证) --- @@ -812,33 +812,6 @@ git flow hotfix finish 版本 --- -## 📚 附加资源 - -### 官方文档和指南 -- [Git官方文档](https://git-scm.com/doc) -- [Pro Git书籍(免费)](https://git-scm.com/book/zh) -- [Git参考手册](https://git-scm.com/docs) -- [Git教程](https://git-scm.com/docs/gittutorial) - -### 在线学习资料 -- [GitHub Git手册](https://guides.github.com/introduction/git-handbook/) -- [Atlassian Git教程](https://www.atlassian.com/git/tutorials) -- [Learn Git Branching(交互式)](https://learngitbranching.js.org/?locale=zh_CN) -- [Git Immersion](http://gitimmersion.com/) - -### GUI工具 -- [GitHub Desktop](https://desktop.github.com/) -- [GitKraken](https://www.gitkraken.com/) -- [SourceTree](https://www.sourcetreeapp.com/) -- [Tower](https://www.git-tower.com/) - -### 高级主题 -- [Git Hooks](https://git-scm.com/book/zh/v2/自定义-Git-Git-钩子) -- [Git工作流程](https://www.atlassian.com/git/tutorials/comparing-workflows) -- [Git内部原理](https://git-scm.com/book/zh/v2/Git-内部原理-底层命令与上层命令) - ---- - ## 🌍 其他语言 此速查表提供多种语言版本: @@ -856,6 +829,7 @@ git flow hotfix finish 版本 | 🇰🇷 韩语 | [git-cheat-sheet-ko.md](./git-cheat-sheet-ko.md) | | 🇵🇱 波兰语 | [git-cheat-sheet-pl.md](./git-cheat-sheet-pl.md) | | 🇹🇷 土耳其语 | [git-cheat-sheet-tr.md](./git-cheat-sheet-tr.md) | +| 🇨🇳 **中文** | **当前** | ---