ডেভসংকেত

গিট

গিট হচ্ছে ভার্সন কন্ট্রোল সিস্টেম। ডেভেলপাররা সাধারণত প্রজেক্টের ভার্সন কন্ট্রোল এবং একই প্রজেক্টে একের অধিক ডেভেলপার কাজ করার জন্য গিট ব্যবহার করে।

কন্ট্রিবিউটর

    শেয়ার করুন

    ইনস্টল (Setup)

    • গিট ইনস্টল ( ম্যাক )

      brew install git
    • গিট আনইনস্টল (ম্যাক)

      brew remove git
    • গিট ইনস্টল (উবুন্টু)

      sudo apt-get install git
    • গিট আনইনস্টল (উবুন্টু)

      sudo apt-get remove git
    • গিট ইন্সটল CentOs

      sudo yum install git
    • গিট আনইনস্টল CentOs

      yum remove git
    • গিট ভার্সন চেক

      git --version
    • গিটটি কোথায় রয়েছে তা দেখুন

      which git
    • গিট সাহায্য

      git help

    সাধারণ (General)

    • নতুন রিপোজিটরি তৈরী করা

      git init
    • কোনো রিপোজিটরি ক্লোন করা(লোকাল মেশিনে ডাউনলোড করা)

      git clone [url]
    • রিপোজিটরি এর বর্তমান অবস্থা/পরিবর্তনগুলো দেখা (নতুন অথবা পুরোনো, কি কি ফাইল কমিট করতে হবে, ওয়ার্কিং ব্রাঞ্চ ইত্যাদি)

      git status
    • কমিট এর জন্যে সব পরিবর্তিত ফাইল এড করা

      git add OR git add . OR git add --all OR git add -A
    • কাস্টম ফাইল কমিট এর জন্যে এড করা

      git add index.html OR git add [file]
    • একটি নির্দিষ্ট এক্সটেনশন এর সকল ফাইল এড করা

      git add *.ext
    • একটি নির্দিষ্ট ফোল্ডারের সকল ফাইল এড করা

      git add /folder
    • একটি নির্দিষ্ট ফোল্ডারের একটি নির্দিষ্ট এক্সটেনশন এর সকল ফাইল এড করা

      git add folder/*.ext
    • রিপোজিটরি তে কিছু কমিট করা (কমিট মেসেজসহ)

      git commit -m "YourCommitMessage"
    • কমিট মেসেজ সংশোধন করা

      git commit --amend -m "your message"
    • টাইটেল এবং ডেসক্রিপশন সহ কমিট করতে

      git commit -m "Title" -m "Description..."
    • অ্যাড এবং কমিট এক স্টেপ এ করতে

      git commit -am "Message"
    • নির্দিষ্ট কমিট দেখা

      git show {commit-id}
    • সমস্ত পরিবর্তন আপডেট করতে

      git add -u
    • ফাইল রিমুভ করতে

      git rm index.html
    • রিপোজিটরিতে এড করা ফাইল আনট্র্যাক করা

      git rm --cached index.html OR git rm --cached filename
    • gitignore এ থাকা সকল ফাইল আনট্র্যাক করা

      git rm -r --cached .
    • ফাইল মুভ অথবা রিনেইম করতে

      git mv index.html dir/index_new.html
    • নির্দিষ্ট কমিট পরিবর্তন না করা (ফাইল সর্বশেষ কমিট ভার্সন থেকে রিস্টোর করতে)

      git checkout -- index.html
    • সকল কমিট পরিবর্তন না করা

      git checkout -- .
    • ফাইল কাস্টম কমিট ভার্সন থেকে রিস্টোর করতে (কারেন্ট ব্রাঞ্চ এ)

      git checkout 6eb715d -- index.html

    আপডেট এবং ডিলিট (Update & Delete)

    • আনট্র্যাক ফাইলগুলো টেস্ট ডিলিট করতে

      git clean -n
    • আনট্র্যাক ফাইলগুলো ডিলিট করতে

      git clean -f
    • আনস্টেজড (undo adds)

      git reset HEAD index.html

    মার্জ (Merge)

    • ট্রু মার্জ (fast forward)

      git merge branchname
    • মাস্টারে মার্জ করতে (only if fast forward)

      git merge --ff-only branchname
    • মাস্টারে মার্জ করতে (force a new commit)

      git merge --no-ff branchname
    • মার্জ বন্ধ করতে (in case of conflicts)

      git merge --abort
    • মার্জ বন্ধ করতে (in case of conflicts)

      git reset --merge // prior to v1.7.4
    • লোকাল মার্জ আন্ডু করতে যেই মার্জটি এখনো পুশ করা হইনাই

      git reset --hard origin/main
    • স্পেসিফিক একটি কমিট মার্জ করতে

      git cherry-pick {commit-id}
    • রিবেস

      git checkout branchname » git rebase main OR git merge main branchname
    • রিবেস ক্যানসেল করতে

      git rebase --abort
    • মাল্টিপল কমিট একটি কমিট এ স্কোয়াশ করতে

      git rebase -i HEAD~3 (source)
    • ফীচার ব্রাঞ্চ Squash-merge করতে (একটি কমিট এ)

      git merge --squash branchname (commit afterwards)

    লগ (Log)

    • কমিট লগ বিস্তারিত দেখতে

      git log
    • এক লাইন এ কমিট লগ এর সামারি শো করতে

      git log --oneline
    • এক লাইন এ কমিট লগ এর সামারি ফুল SHA-1 ফরম্যাট এ শো করতে

      git log --format=oneline
    • কমিট লগ সামারি আকারে দেখতে((৫টি)

      git log --oneline -5
    • শুধুমাত্র কাস্টম কমিটগুলো শো করতে

      git log --author="Sven" git log --grep="Message" git log --until=2013-01-01 git log --since=2013-01-01
    • শুধুমাত্র কাস্টম কমিট এর ডাটা শো করতে

      git log --format=short git log --format=full git log --format=fuller git log --format=email git log --format=raw
    • পরিবর্তনগুলি শো করতে

      git log -p
    • শুধুমাত্র কাস্টম ফাইল এর সবগুলো কমিট শো করতে

      git log 6eb715d.. index.html
    • শুধুমাত্র কাস্টম ফাইল এর সবগুলো কমিট এর পরিবর্তনগুলি শো করতে

      git log -p 6eb715d.. index.html
    • কমিটগুলোর স্ট্যাটাস এবং সামারি শো করতে

      git log --stat "," git log --stat --summary
    • একচুয়াল চেইঞ্জেস গুলো দেখাতে

      git log --patch
    • সর্বশেষ তিনটি এন্ট্রি দেখতে

      git log -3
    • কোন ডেট এর আগের লগ গুলো দেখতে

      git log --before= '2020-08-17' 
    • এক সাপ্তাহ আগের লগ দেখতে

      git log --before='one week ago'
    • কমিটগুলোর হিস্ট্রি গ্রাফ আকারে শো করতে

      git log --graph
    • কমিটগুলোর হিস্ট্রি গ্রাফ আকারে সামারি শো করতে

      git log --oneline --graph --all --decorate

    রিলিজ & ভার্সন (Releases & Version)

    • ট্যাগ লিস্ট দেখতে

      git tag
    • ট্যাগ তৈরি করা

      git tag [tag-name]
    • প্রকাশিত সবগুলো ভার্শন কমিটগুলো সহ শো করতে

      git tag -l -n1
    • রিলিজ ভার্শন তৈরী করতে

      git tag v1.0.0
    • কমেন্টসহ রিলিজ ভার্শন তৈরী করতে

      git tag -a v1.0.0 -m 'Message'
    • নির্দিষ্ট রিলিজ ভার্শনে চেকআউট করতে

      git checkout v1.0.0

    গিট্ ফ্লো (Git flow)

    • Homebrew দিয়ে গিট flow ইনস্টল (ম্যাক)

      brew install git-flow-avh
    • Macports দিয়ে গিট flow ইনস্টল (ম্যাক)

      port install git-flow-avh
    • গিট flow ইনস্টল (লিনাক্স)

      apt-get install git-flow
    • গিট flow ইনস্টল (উইন্ডোজ)

      wget -q -O - --no-check-certificate https://raw.github.com/petervanderdoes/gitflow-avh/develop/contrib/gitflow-installer.sh install stable | bash
    • গিট flow শুরু করা

      git flow init
    • নতুন ফিচার শুরু করা

      git flow feature start features_name
    • ফিচার শেষ করা

      git flow feature finish features_name
    • ফিচার পাবলিশ করা

      git flow feature publish features_name
    • ফিচার পুল করা

      git flow feature pull origin features_name
    • ফিচার ট্র্যাক করা

      git flow feature track features_name
    • রিলিজ শুরু করা

      git flow release start RELEASE [BASE]
    • রিলিজ শেষ করা

      git flow release finish RELEASE
    • রিলিজ পাবলিশ করা

      git flow release publish RELEASE
    • রিলিজ ট্র্যাক করা

      git flow release track RELEASE
    • হটফিক্স শুরু করা

      git flow hotfix start VERSION [BASENAME]
    • হটফিক্স শেষ করা

      git flow hotfix finish VERSION

    কনফিগ (Config)

    • গিট এর গ্লোবাল ইউজার নেম সেট করা

      git config --global user.name "username"
    • গিট এর গ্লোবাল ইউজার নেম চেক করা

      git config --global user.name
    • গিট এর গ্লোবাল ইউজার ইমেল সেট করা

      git config --global user.email "user@name.com"
    • গিট এর গ্লোবাল ইউজার ইমেল চেক করা

      git config --global user.email
    • গিট এর লোকাল/একটি নির্দিষ্ট রিপোজিটরির ইউজার নেম সেট করা

      git config user.name "username"
    • গিট এর লোকাল/একটি নির্দিষ্ট রিপোজিটরির ইউজার নেম চেক করা

      git config user.name
    • গিট এর লোকাল/একটি নির্দিষ্ট রিপোজিটরির ইউজার ইমেল সেট করা

      git config user.email "user@name.com"
    • গিট এর লোকাল/একটি নির্দিষ্ট রিপোজিটরির ইউজার ইমেল চেক করা

      git config user.email
    • গিট এর গ্লোবাল ইউজার নেম বাতিল করা

      git config --global --unset-all user.name
    • গিট এর গ্লোবাল ইউজার ইমেইল বাতিল করা

      git config --global --unset-all user.email
    • গিট এর লোকাল/একটি নির্দিষ্ট রিপোজিটরির ইউজার নেম বাতিল করা

      git config --unset user.name
    • গিট এর লোকাল/একটি নির্দিষ্ট রিপোজিটরির ইউজার ইমেইল বাতিল করা

      git config --unset user.email
    • একটি নির্দিষ্ট ব্রাঞ্চের জন্য ইউজার নেম, পাসওয়ার্ড সেভ করা

      git config credential.helper store
    • সকল ব্রাঞ্চের জন্য ইউজার নেম, পাসওয়ার্ড সেভ করা

      git config --global credential.helper store

    রিসেট (Reset)

    • কমিট প্রত্যাবর্তন করা

      git revert {commit-id} OR git revert <commit hash>
    • সর্বশেষ কমিট প্রত্যাবর্তন করা

      git revert HEAD
    • নির্দিষ্ট কমিট প্রত্যাবর্তন করা

      git revert -n <commit hash>
    • সফট রিসেট (move HEAD only; neither staging nor working dir is changed)

      git reset --soft {commit-id}
    • শেষ কমিট থেকে stage এরিয়া তে মুভ করা

      git reset --soft HEAD~
    • মিক্সেড রিসেট (move HEAD and change staging to match repo; does not affect working dir)

      git reset --mixed {commit-id}
    • হার্ড রিসেট (move HEAD and change staging dir and working dir to match repo)

      git reset --hard {commit-id}
    • শেষ কমিট ডিলেট করা

      git reset --hard HEAD^
    • শেষ দুটি কমিট ডিলেট করা

      git reset --hard HEAD^^
    • সিঙ্গেল ফাইল হার্ড রিসেট করতে (@ is short for HEAD)

      git checkout @ -- index.html

    ব্রাঞ্চ (Branch)

    • সব লোকাল ব্রাঞ্চ এর নাম লিস্ট করা

      git branch
    • নতুন ব্রাঞ্চ তৈরী

      git branch [branch_name]
    • ব্রাঞ্চ চেঞ্জ করতে

      git checkout [branch_name]
    • বর্তমান ব্রাঞ্চ থেকে পূর্বের ব্রাঞ্চ এ দ্রুত টগল করা

      git checkout -
    • ব্রাঞ্চ চেঞ্জ করতে(নতুন কমান্ড)

      git switch [branch_name]
    • ব্রাঞ্চ তৈরী এবং চেঞ্জ করা

      git checkout -b "branch name"
    • রিপোজিটরি/ব্রাঞ্চ রিনেম করা

      git branch -m branchname new_branchname OR git branch --move branchname new_branchname
    • কারেন্ট ব্রাঞ্চ এর সাথে মার্জ করা সকল ব্রাঞ্চগুলো শো করতে

      git branch --merged
    • ব্রাঞ্চ রিমুভ করা (only possible if not HEAD)

      git branch -d branchname OR git branch --delete branchname
    • রিমোট ব্রাঞ্চ রিমুভ করা

      git push --delete origin [branch-name]
    • মার্জ করা না এমন ব্রাঞ্চ রিমুভ করতে

      git branch -D branch_to_delete

    স্টাশ (Stash)

    • স্টাশ এ রাখতে

      git stash save "Message"
    • স্টাশ লিস্ট শো করতে

      git stash list
    • স্টাশ স্ট্যাটাস শো করতে

      git stash show stash@{0}
    • স্টাশ এর পরিবর্তনগুলি শো করতে

      git stash show -p stash@{0}
    • স্টাশ এর সবগুলি আইটেম একসাথে ব্যবহার এবং ড্রপ করতে

      git stash pop
    • স্টাশ লিস্ট এর স্পেসিফিক আইটেম ব্যবহার এবং ড্রপ করতে

      git stash pop stash@{0}
    • স্টাশ লিস্ট এর স্পেসিফিক আইটেম শুধু ব্যবহার এবং ড্রপ না করতে

      git stash apply stash@{0}
    • কাস্টম স্টাশ আইটেম ব্যবহার এবং ইনডেক্স করতে

      git stash apply --index
    • স্টাশ থেকে নতুন ব্রাঞ্চ করতে

      git stash branch new_branch
    • স্টাশ লিস্ট এর প্রথম আইটেম বাদ দিতে

      git stash drop
    • স্টাশ লিস্ট এর স্পেসিফিক আইটেম বাদ দিতে

      git stash drop stash@{0}
    • সম্পূর্ণ স্টাশ ডিলিট করতে

      git stash clear

    তুলনা (Compare)

    • শেষ কমিট এবং বর্তমান unstaged ভার্শনের পার্থক্য দেখা

      git diff
    • মডিফাইড ফাইলস তুলনা এবং পরিবর্তনগুলি হাইলাইট করতে

      git diff --color-words index.html
    • শেষ কমিট এবং বর্তমান staged ভার্শনের পার্থক্য দেখা

      git diff --staged
    • সর্বশেষ কমিটের আগের কমিট ও সর্বশেষ কমিটের মাঝে তুলনা করতে

       git diff HEAD^ HEAD
    • ব্রাঞ্চগুলো তুলনা করতে

      git diff main..branchname
    • উপরের মত ব্রাঞ্চগুলো তুলনা করতে

      git diff --color-words main..branchname^
    • কমিটগুলো তুলনা করতে

      git diff {commit-id} git diff {commit-id}..HEAD git diff {commit-id}..{commit-id}
    • ফাইল এর কমিটগুলো তুলনা করতে

      git diff {commit-id} index.html git diff {commit-id}..{commit-id} index.html
    • দরকারী তুলনা

      git diff --stat --summary {commit-id}..HEAD
    • ব্ল্যাম

      git blame -L10,+1 index.html

    সহযোগিতা (Collaborate)

    • রিমোট শো করতে

      git remote
    • সবগুলো রিমোটের লিস্ট নাম এবং URL সহ দেখা

      git remote -v
    • নতুন রিমোট এড করা

      git remote add <RemoteName> <RemoteURL> 
    • রিমোট পরিবর্তন করা

      git remote set-url <RemoteName> <RemoteURL>
    • Fork রিপোজিটরি ক্ষেত্রে আপস্ট্রিম রিমোট এড করা

      git remote add upstream <RemoteURL>
    • Fork রিপোজিটরি ক্ষেত্রে আপস্ট্রিম রিমোট পরিবর্তন করা

      git remote set-url upstream <RemoteURL>
    • সার্ভারে আপস্ট্রিম রিমোট কনফিগার করা

      git remote add upstream ssh://root@123.123.123.123/path/to/repository/.git
    • অন্য রিপোজিটরি থেকে ব্রাঞ্চ/রেফ/অবজেক্ট fetch করা

      git fetch RepositoryName
    • Fetch/Fork রিপোজিটরি কে আপস্ট্রিম(upstream) এর সাথে up-to-date রাখা

      git fetch upstream
    • fetched কমিটগুলো মার্জ করতে

      git merge upstream/main OR git merge upstream/branchname
    • কাস্টম ব্রাঞ্চ Fetch করতে

      git fetch upstream branchname:local_branchname
    • অরিজিন রিমুভ করতে

      git remote rm origin
    • সব রিমোট ব্রাঞ্চ এর নাম লিস্ট করা

      git branch -r
    • সব লোকাল এবং রিমোট ব্রাঞ্চ এর নাম লিস্ট করা

      git branch -a
    • রিমোট ব্রাঞ্চ থেকে ব্রাঞ্চ তৈরি এবং চেকআউট করতে

      git checkout -b local_branchname upstream/remote_branchname
    • রিপোজিটরি তে লোকাল ব্রাঞ্চ থেকে আপলোড করা

      git push -u origin main OR git push -u origin [branchName]
    • পুশ

      git push origin main
    • বর্তমান/ Checkout/ Current ব্রাঞ্চ এ পুশ করতে

      git push origin HEAD
    • ফোর্স পুশ

      git push origin main --force
    • রিপোজিটরি থেকে নতুন চেঞ্জ গুলো পুল করা

      git pull
    • স্পেসিফিক ব্রাঞ্চ পুল করতে

      git pull origin branchname
    • কোনো রিপোজিটরি ক্লোন করা(লোকাল মেশিনে ডাউনলোড করা)

      git clone https://github.com/user/project.git OR git clone ssh://user@domain.com/~/dir/.git
    • লোকাল ফোল্ডার এ ক্লোন করতে

      git clone https://github.com/user/project.git ~/dir/folder
    • স্পেসিফিক ব্রাঞ্চ লোকাল এ ক্লোন করতে

      git clone -b branchname https://github.com/user/project.git
    • অথেনটিকেশন টোকেন ব্যবহার করে ক্লোন করতে

      git clone https://oauth2:<token>@gitlab.com/username/repo.git
    • রিমোট ব্রাঞ্চ ডিলিট করতে

      git push origin :branchname OR git push origin --delete branchname
    • কন্ট্রিবিউটরদের নামের লিস্ট দেখা

      git shortlog -sn
    • কন্ট্রিবিউটরদের নাম এবং তাঁদের সকল কমিট লিস্ট আকারে দেখা

      git shortlog

    গিটহাব ইস্যু (Github issues)

    • close
    • closes
    • closed
    • fix
    • fixes
    • fixed
    • resolve
    • resolves
    • resolved

    ডেভসংকেত সম্পর্কে

    ডেভসংকেত এর লক্ষ্য হচ্ছে বাংলাতে একটা বড় চিটশিটের ভান্ডার গড়ে তোলা। এটা সম্পূর্ণ স্বাধীন এবং ওপেন সোর্স গিটহাব অর্গানাইজেশন।

    স্পন্সর