গিট

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

ইন্সটল (Setup)

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

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

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

    sudo apt-get remove git
  • গিট ইনস্টল উবুন্টু

    sudo apt-get install git
  • গিট ভার্সন চেক

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

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

    git help

কনফিগ (Config)

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

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

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

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

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

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

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

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

    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

সাধারণ (General)

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

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

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

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

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

    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 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

রিসেট (Reset)

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

    git revert 073791e7dd71b90daa853b2c5acc2c925f02dbc6 OR git revert <commit hash>
  • নির্দিষ্ট কমিট প্রত্যাবর্তন করা

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

    git reset --soft 073791e7dd71b90daa853b2c5acc2c925f02dbc6
  • শেষ কমিট থেকে stage এরিয়া তে মুভ করা

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

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

    git reset --hard 073791e7dd71b90daa853b2c5acc2c925f02dbc6
  • শেষ কমিট ডিলেট করা

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

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

    git checkout @ -- index.html

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

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

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

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

    git reset HEAD index.html

ব্রাঞ্চ (Branch)

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

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

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

    git checkout [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

মার্জ (Merge)

Link
  • ট্রু মার্জ (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/master
  • স্পেসিফিক একটি কমিট মার্জ করতে

    git cherry-pick 073791e7
  • রিবেস

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

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

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

    git merge --squash branchname (commit afterwards)

স্টাশ (Stash)

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

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

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

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

    git stash show -p [email protected]{0}
  • কাস্টম স্টাশ আইটেম ব্যবহার এবং ড্রপ করতে

    git stash pop [email protected]{0}
  • কাস্টম স্টাশ আইটেম ব্যবহার এবং ড্রপ না করতে

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

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

    git stash branch new_branch
  • কাস্টম স্টাশ আইটেম বাদ দিতে

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

    git stash clear

লগ (Log)

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

    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 --summary
  • কমিটগুলোর হিস্ট্রি গ্রাফ আকারে শো করতে

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

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

তুলনা (Compare)

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

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

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

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

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

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

    git diff 6eb715d git diff 6eb715d..HEAD git diff 6eb715d..537a09f
  • ফাইল এর কমিটগুলো তুলনা করতে

    git diff 6eb715d index.html git diff 6eb715d..537a09f index.html
  • দরকারী তুলনা

    git diff --stat --summary 6eb715d..HEAD
  • ব্ল্যাম

    git blame -L10,+1 index.html

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

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

    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

সহযোগিতা (Collaborate)

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

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

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

    git remote add RemoteName RemoteURL
  • Fork রিপোসিটোরি ক্ষেত্রে আপস্ট্রিম রিমোট কনফিগার করা

    git remote add upstream https://github.com/user/project.git
  • সার্ভারে আপস্ট্রিম রিমোট কনফিগার করা

    git remote add upstream ssh://[email protected]/path/to/repository/.git
  • অন্য রিপোসিটোরি থেকে ব্রাঞ্চ/রেফ/অবজেক্ট fetch করা

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

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

    git merge upstream/master 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 master OR git push -u origin [branchName]
  • পুশ

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

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

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

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

    git clone https://github.com/user/project.git OR git clone ssh://[email protected]/~/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

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

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

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

    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

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

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