ডেভসংকেত

গিট

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

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

  • jaiedsabid
  • Taraldinn
  • nazmulch11
  • iamraufu
  • ikamal7
  • iqbalrony
  • sayedulsayem
  • shaonkabir8
  • tahmid02016
  • sabbirshawon
  • fahimfaisaal
  • asifadib
  • imalisiddique
  • imranfakhrul
  • Mehedi61
  • totanbir
  • mirajehossain

শেয়ার করুন

ইনস্টল (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 "[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

রিসেট (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://[email protected]/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://[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

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

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

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

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

স্পন্সর