- সেট আপ
- কনফিগারেশন ফাইল
- তৈরী করা
- লোকালি পরিবর্তন করা
- অনুসন্ধান
- কমিট ইতিহাস
- সড়ানো বা নাম পরিবর্তন
- ব্রাঞ্চ এবং ট্যাগ
- আপডেট এবং প্রকাশ
- মার্জ এবং রিবেস
- আনডো
- গিট ফ্লো
$ git config --list
$ git config --local --list
$ git config --global --list
$ git config --system --list
$ git config --global user.name "[firstname lastname]"
$ git config --global user.email "[valid-email]"
$ git config --global color.ui auto
$ git config --global core.editor vi
<repo>/.git/config
~/.gitconfig
/etc/gitconfig
দুটি উপায় আছে:
SSH এর মাধ্যমে
$ git clone ssh://user@domain.com/repo.git
HTTP এর মাধ্যমে
$ git clone http://domain.com/user/repo.git
$ git init
$ git init <directory>
$ git status
$ git diff
$ git diff <file>
$ git add .
$ git add -p <file>
$ git add <filename1> <filename2>
$ git commit -a
$ git commit
$ git commit -m 'message here'
$ git commit -am 'message here'
$ git commit --date="`date --date='n day ago'`" -am "<Commit Message Here>"
প্রকাশিত কমিটটি সংশোধন করবেন না!
$ git commit -a --amend
প্রকাশিত কমিটটি সংশোধন করবেন না!
$ git commit --amend --no-edit
GIT_COMMITTER_DATE="date" git commit --amend
$ git commit --amend --date="date"
$ git stash
$ git checkout branch2
$ git stash pop
$ git stash apply
git stash list
থেকে {stash_number} পাওয়া যাবে
$ git stash apply stash@{stash_number}
$ git stash drop
$ git grep "Hello"
$ git grep "Hello" v2.5
$ git log -S 'keyword'
$ git log -S 'keyword' --pickaxe-regex
$ git log
$ git log --oneline
$ git log --author="username"
$ git log -p <file>
$ git log --oneline <origin/master>..<remote/master> --left-right
$ git blame <file>
$ git reflog show
$ git reflog delete
Rename Index.txt to Index.html
$ git mv Index.txt Index.html
$ git branch
$ git branch -a
$ git branch -r
$ git checkout <branch>
$ git checkout <branch> -- <filename>
$ git checkout -b <branch>
$ git checkout -
$ git checkout -b <new_branch> <existing_branch>
$ git checkout <commit-hash> -b <new_branch_name>
$ git branch <new-branch>
$ git branch --track <new-branch> <remote-branch>
$ git branch -d <branch>
$ git branch -m <new_branch_name>
আপনি মার্জ না করা পরিবর্তনগুলি হারাবেন!
$ git branch -D <branch>
$ git tag <tag-name>
$ git tag -a <tag-name>
$ git tag <tag-name> -am 'message here'
$ git tag
সমস্ত ট্যাগকে তাদের বার্তাগুলির সাথে তালিকাভুক্ত করুন (ট্যাগের কোনও বার্তা না থাকলে, ট্যাগ বার্তা বা কমিট বার্তা):
$ git tag -n
$ git remote -v
$ git remote show <remote>
$ git remote add <remote> <url>
$ git remote rename <remote> <new_remote>
$ git remote rm <remote>
দ্রষ্টব্য: git remote rm
সার্ভার থেকে রিমোট রিপোজিটরি মুছে দেয় না। এটি কেবল আপনার লোকাল রিপোজিটরি থেকে রিমোট এবং এর রেফারেন্সগুলি সরিয়ে দেয়।
$ git fetch <remote>
$ git remote pull <remote> <url>
$ git pull origin master
$ git pull --rebase <remote> <branch>
$ git push <remote> <branch>
$ git push <remote> :<branch> (since Git v1.5.0)
অথবা
$ git push <remote> --delete <branch> (since Git v1.7.0)
$ git push --tags
$ git config --global merge.tool meld
$ git mergetool
$ git merge <branch>
$ git branch --merged
প্রকাশিত কমিট রিবেস করবেন না!
$ git rebase <branch>
$ git rebase --abort
$ git rebase --continue
কনফ্লিক্টগুলি ম্যানুয়ালি সমাধান করতে আপনার এডিটরটি ব্যবহার করুন এবং (সমাধানের পরে) ফাইলটিকে সমাধান হয়েছে হিসাবে চিহ্নিত করুন:
$ git add <resolved-file>
$ git rm <resolved-file>
$ git rebase -i <commit-just-before-first>
এখন এটি প্রতিস্থাপন করুন,
pick <commit_id>
pick <commit_id2>
pick <commit_id3>
এই,
pick <commit_id>
squash <commit_id2>
squash <commit_id3>
$ git reset --hard HEAD
$ git reset HEAD
$ git checkout HEAD <file>
$ git revert <commit>
আপনার হেড পয়েন্টারকে পূর্ববর্তী কমিটটিতে পুনরায় সেট করুন এবং তারপর থেকে সমস্ত পরিবর্তন বাতিল করুন:
$ git reset --hard <commit>
$ git reset --hard <remote/branch> e.g., upstream/master, origin/my-feature
আপনার হেড পয়েন্টারকে পূর্ববর্তী কমিটটিতে রিসেট করুন এবং সমস্ত পরিবর্তনগুলিকে আন-স্টেইজ পরিবর্তন হিসাবে সংরক্ষণ করুন:
$ git reset <commit>
$ git reset --keep <commit>
$ git rm -r --cached .
$ git add .
$ git commit -m "remove xyz file"
ইমপ্রোভড Git-flow
পূর্বশর্ত হিসাবে আপনার একটি কার্যকরী গিট ইনস্টলেশন প্রয়োজন। গিট ফ্লো ওএসএক্স, লিনাক্স এবং উইন্ডোজে
কাজ করে।
$ brew install git-flow-avh
$ port install git-flow
$ sudo apt-get install git-flow
$ wget -q -O - --no-check-certificate https://raw.githubusercontent.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh install <state> | bash
আপনার প্রজেক্ট সেটআপ কাস্টমাইজ করার জন্য গিট প্রবাহ শুরু করা প্রয়োজন। একটি বিদ্যমান গিট রিপোজিটরির ভিতরে শুরু করে গিট-ফ্লো ব্যবহার শুরু করুন:
আপনাকে আপনার শাখার নামকরণের নিয়মাবলী সম্পর্কিত কয়েকটি প্রশ্নের উত্তর দিতে হবে। এটি ডিফল্ট মান ব্যবহার করার সুপারিশ করা হয়।
git flow init
অথবা
git flow init -d
git flow feature start MYFEATURE
git flow feature finish MYFEATURE
আপনি কি সহযোগিতার মাধ্যমে একটি ফিচার তৈরি করবেন? লোকাল সার্ভারে একটি ফিচার পাবলিশ করুন যাতে এটি অন্যান্য ব্যবহারকারীদের দ্বারা ব্যবহার করা যায়৷
git flow feature publish MYFEATURE
git flow feature pull origin MYFEATURE
git flow feature track MYFEATURE
একটি নতুন প্রোডাকশন রিলিজের প্রস্তুতি সমর্থন করুন। ছোটখাট বাগ ফিক্স এবং রিলিজের জন্য মেটা-ডেটা প্রস্তুত করার অনুমতি দিন।
একটি রিলিজ শুরু করতে, git flow release
কমান্ডটি ব্যবহার করুন। এটি develop
ব্রাঞ্চ থেকে একটি রিলিজ ব্রাঞ্চ তৈরি করে। রিলিজ শুরু করার জন্য আপনি ঐচ্ছিকভাবে একটি [BASE] কমিট sha-1 হ্যাশ সরবরাহ করতে পারেন। কমিটটি অবশ্যই develop
ব্রাঞ্চে থাকতে হবে।
git flow release start RELEASE [BASE]
অন্য ডেভেলপারদের রিলিজ কমিট করার জন্য, এটি তৈরি করার পরে রিলিজ ব্রাঞ্চ প্রকাশ করা বুদ্ধিমানের কাজ। কমান্ডের সাথে ফিচার প্রকাশনার অনুরূপ এটি করুন:
git flow release publish RELEASE
git flow release finish RELEASE
হটফিক্সগুলি লাইভ প্রোডাকশন সংস্করণের একটি অবাঞ্ছিত অবস্থায় অবিলম্বে কাজ করার প্রয়োজনীয়তা থেকে উদ্ভূত হয়। উৎপাদন সংস্করণ চিহ্নিতকারী মাস্টার ব্রাঞ্চের সংশ্লিষ্ট ট্যাগ থেকে ব্রাঞ্চ করা যেতে পারে।
$ git flow hotfix start VERSION [BASENAME]
সংস্করণ আর্গুমেন্ট এতদ্বারা নতুন হটফিক্স রিলিজের নাম চিহ্নিত করে। ঐচ্ছিকভাবে আপনি শুরু করার জন্য একটি বেসনাম উল্লেখ করতে পারেন।
একটি হটফিক্স শেষ করার মাধ্যমে এটি আবার পুনরায় ডেভেলপ এবং মাস্টারে একত্রিত হয়। মাস্টার মার্জটি হটফিক্স সংস্করণের সাথে ট্যাগ করা হয়।
git flow hotfix finish VERSION