উত্তর:
git branch --merged masterতালিকা শাখা মধ্যে মিশে গিয়ে তৈরি মাস্টার
git branch --mergedতালিকা শাখা মধ্যে মিশে গিয়ে তৈরি মস্তক (বর্তমান শাখার অর্থাত ডগা)
git branch --no-merged মার্জ করা হয়নি এমন শাখাগুলির তালিকা করে
ডিফল্টভাবে এটি কেবল স্থানীয় শাখায় প্রযোজ্য। দ্য-aপতাকা স্থানীয় ও দূরবর্তী উভয় শাখা, এবং দেখাবে -rপতাকা শো শুধুমাত্র দূরবর্তী শাখা।
git branch -a --merged/no-mergedপ্রক্রিয়াটিতে স্থানীয় ট্র্যাকিং শাখা তৈরি না করে দৃশ্যত, এটিও কাজ করে।
git branch -r --merged/--no-mergedদূরবর্তী শাখাগুলি সন্ধান করতে।
--merged/--no-mergedএটির পরে একটি alচ্ছিক প্রতিশ্রুতি যুক্তি নেয়। কমপক্ষে আমার গিট সংস্করণে (1.9.1), পতাকা -aবা -rপতাকা যুক্ত করার পরে এটি আমাকে মারাত্মক ত্রুটি দেয়। এর আগে-a বা -r আগে যুক্ত করুন --(no-)merged ।
আপনি git merge-baseদুটি শাখার মধ্যে সর্বশেষ সাধারণ প্রতিশ্রুতি সন্ধান করতে কমান্ডটি ব্যবহার করতে পারেন । যদি সেই প্রতিশ্রুতি আপনার শাখার প্রধানের মতো হয় তবে শাখাটি পুরোপুরি একত্রিত হয়ে গেছে।
নোটটি
git branch -dইতিমধ্যে এই ধরণের জিনিসটি করে কারণ এটি ইতিমধ্যে সম্পূর্ণভাবে মার্জ করা হয়নি এমন একটি শাখা মুছতে অস্বীকার করবে ।
git branch -dবর্তমান শাখায় একীভূত হয়নি এমন একটি শাখা মুছে ফেলা অস্বীকার করবে। বর্তমান শাখাটি মোছা হচ্ছে না ।
পাশাপাশি একটি গ্রাফিকাল ইন্টারফেস সমাধান আছে। লিখো
gitk --all
একটি নতুন অ্যাপ্লিকেশন উইন্ডো আপনার পুরো রেপোর গ্রাফিকাল উপস্থাপনা সহ প্রম্পট করবে, যেখানে কোনও শাখা ইতিমধ্যে মার্জ করা হয়েছে কিনা তা উপলব্ধি করা খুব সহজ where
gitক্লায়েন্টের অংশ নয় । উবুন্টুতে apt-get install gitk,।
brew install git-gui, পেতে gitkকমান্ড করেন।
আমি নিম্নলিখিত বাশ ফাংশনটি ব্যবহার করছি: git-is-merged develop feature/new-feature
git-is-merged () {
merge_destination_branch=$1
merge_source_branch=$2
merge_base=$(git merge-base $merge_destination_branch $merge_source_branch)
merge_source_current_commit=$(git rev-parse $merge_source_branch)
if [[ $merge_base = $merge_source_current_commit ]]
then
echo $merge_source_branch is merged into $merge_destination_branch
return 0
else
echo $merge_source_branch is not merged into $merge_destination_branch
return 1
fi
}
ব্যবহার git merge-base <commit> <commit>।
এই আদেশটি দুটি কমিটের মধ্যে সেরা সাধারণ পূর্বপুরুষদের (স) খুঁজে বের করে। এবং যদি সাধারণ পূর্বপুরুষ একটি "শাখা" এর শেষ প্রতিশ্রুতির সাথে সমান হয়, তবে আমরা নিরাপদে ধরে নিতে পারি যে একটি "শাখা" ইতিমধ্যে মাস্টারের মধ্যে মিশে গেছে।
পদক্ষেপগুলি এখানে
git merge-base <commit-hash-step1> <commit-hash-step2>। গিট মার্জ-বেস সম্পর্কে আরও তথ্য https://git-scm.com/docs/git- विसیا- বেস ।
masterএকীভূত হয়েছিল branchএবং তারপরে আরও 4 টি কমিট যুক্ত হয়েছিল branch।
git log -1 $(git merge-base base-branch feature-branch)এবং যদি আপনি feature-branchআউটপুটে দেখেন , তবে আপনি কি জানেন যে তারা একত্রিত হয়েছে?
প্রত্যন্ত শাখাগুলি পরিষ্কার করার বিষয়ে
git branch -r | xargs -t -n 1 git branch -r --contains
এটি প্রতিটি প্রত্যন্ত শাখা তালিকাভুক্ত করে যারপরে প্রত্যন্ত শাখাগুলি তাদের সর্বশেষ SHA এর মধ্যে রয়েছে।
কোন দূরবর্তী শাখাগুলি মার্জ করা হয়েছে তবে মুছে ফেলা হয়নি এবং কোনগুলি মার্জ করা হয়নি এবং এভাবে ক্ষয় হচ্ছে তা নির্ধারণ করার জন্য এটি দরকারী।
আপনি যদি 'টিগ' ব্যবহার করেন (এটি গিটকের মতো তবে টার্মিনাল ভিত্তিক) তবে আপনি এটি করতে পারেন
tig origin/feature/someones-decaying-feature
চেকআউট না করে কোনও শাখার অঙ্গীকারের ইতিহাস দেখতে
কোন শাখাগুলিকে মাস্টারে একত্রিত করা হয়েছে তা যাচাই করার জন্য আপনার এই আদেশগুলি ব্যবহার করা উচিত:
git branch <flag[-r/-a/none]> --merged master সমস্ত শাখার তালিকা মাস্টারে বিভক্ত।git branch <flag[-r/-a/none]> --merged master | wc -l মাস্টারে একত্রীকৃত সমস্ত শাখার সংখ্যা গণনা করুন।পতাকাগুলি হ'ল:
-aপতাকা - (সমস্ত) দূরবর্তী এবং স্থানীয় শাখা দেখায়-rপতাকা - (দূরবর্তী) কেবল দূরবর্তী শাখা দেখায়<emptyFlag>- শুধুমাত্র স্থানীয় শাখা দেখানো হচ্ছেউদাহরণস্বরূপ: git branch -r --merged master আপনাকে সমস্ত দূরবর্তী সংগ্রহস্থলকে মাস্টারে মার্জ করে দেখিয়ে দেবে।
এখানে আমার কৌশলগুলি যখন আমার কোনও শাখা মার্জ করা হয়েছে কিনা তা নির্ধারণ করার দরকার রয়েছে, এমনকি এটি আমাদের প্রধান শাখার সাথে আধুনিকীকরণের জন্য পুনর্বাসিত করা হয়েছে, যা বৈশিষ্ট্য শাখার জন্য একটি সাধারণ দৃশ্য।
এই পদ্ধতির কোনওটিই মূর্খ প্রমাণ নয়, তবে আমি এগুলিকে বহুবার দরকারী বলে মনে করেছি।
গিটক বা টরটোইজিটের মতো ভিজ্যুয়াল সরঞ্জাম ব্যবহার করে, বা কেবল - সমস্ত গিট লগ সহ প্রধান শাখায় সমস্ত সংযুক্তি দেখতে ইতিহাস জুড়ে see এই নির্দিষ্ট বৈশিষ্ট্য শাখাটি মার্জ করা হয়েছে কিনা তা আপনার স্পট করতে সক্ষম হওয়া উচিত।
আপনি যখন কোনও বৈশিষ্ট্য শাখায় মার্জ হওয়ার সময় আপনার যদি স্থানীয় এবং দূরবর্তী শাখা উভয়ই সরিয়ে ফেলার ভাল অভ্যাস থাকে তবে আপনি কেবল অন্য কম্পিউটারে রিমোটগুলি আপডেট এবং ছাঁটাই করতে পারেন এবং বৈশিষ্ট্যগুলি শাখাটি অদৃশ্য হয়ে যাবে।
এটি করা মনে রাখতে সহায়তা করার জন্য, আমি স্থানীয়ভাবে আমার বৈশিষ্ট্যগুলি শাখা তৈরি করতে এবং মার্জ করার জন্য ইতিমধ্যে গিট ফ্লো এক্সটেনশানস (এভিএইচ সংস্করণ) ব্যবহার করছি , তাই আমিও দূরবর্তী শাখাটি স্বয়ংক্রিয়ভাবে সরিয়ে ফেলতে চাইছি কিনা তা জানতে আমাকে নীচের গিট ফ্লো হুক যুক্ত করে।
উদাহরণ তৈরি করুন / সমাপ্ত বৈশিষ্ট্য শাখা
554 Andreas:MyRepo(develop)$ git flow start tmp
Switched to a new branch 'feature/tmp'
Summary of actions:
- A new branch 'feature/tmp' was created, based on 'develop'
- You are now on branch 'feature/tmp'
Now, start committing on your feature. When done, use:
git flow feature finish tmp
555 Andreas:MyRepo(feature/tmp)$ git flow finish
Switched to branch 'develop'
Your branch is up-to-date with 'if/develop'.
Already up-to-date.
[post-flow-feature-finish] Delete remote branch? (Y/n)
Deleting remote branch: origin/feature/tmp.
Deleted branch feature/tmp (was 02a3356).
Summary of actions:
- The feature branch 'feature/tmp' was merged into 'develop'
- Feature branch 'feature/tmp' has been locally deleted
- You are now on branch 'develop'
556 Andreas:ScDesktop (develop)$
.git / আঙ্গুলসমূহ / পোস্ট-প্রবাহ-বৈশিষ্ট্য ফিনিস
NAME=$1
ORIGIN=$2
BRANCH=$3
# Delete remote branch
# Allows us to read user input below, assigns stdin to keyboard
exec < /dev/tty
while true; do
read -p "[post-flow-feature-finish] Delete remote branch? (Y/n) " yn
if [ "$yn" = "" ]; then
yn='Y'
fi
case $yn in
[Yy] )
echo -e "\e[31mDeleting remote branch: $2/$3.\e[0m" || exit "$?"
git push $2 :$3;
break;;
[Nn] )
echo -e "\e[32mKeeping remote branch.\e[0m" || exit "$?"
break;;
* ) echo "Please answer y or n for yes or no.";;
esac
done
# Stop reading user input (close STDIN)
exec <&-
exit 0
আপনি যদি সর্বদা দূরবর্তী শাখাটি অপসারণ না করেন, তাহলেও শাখাটি মার্জ করা হয়েছে কিনা তা নির্ধারণ করার জন্য আপনি একই জাতীয় কমিট অনুসন্ধান করতে পারেন। এখানে দুর্ভাগ্য হ'ল দূরবর্তী শাখাটি যদি অজ্ঞাতনামা হিসাবে পুনর্বার করা হয় যেমন স্কোয়াশিং কমিট বা কমিট বার্তা পরিবর্তন করা।
মাস্টার শাখায় কমান্ড উদাহরণ:
gru
gls origin/feature/foo
glf "my message"
আমার ব্যাশ। প্রোফাইল কনফিগারেশনে
alias gru='git remote update -p'
alias glf=findCommitByMessage
findCommitByMessage() {
git log -i --grep="$1"
}
git log --all --color --graph --decorate --topo-order --date=relative --abbrev-commit --pretty=format:"%C(green)%h %C(red bold)[%<(14)%ad] %Creset%s%Cred%d%C(blue) [%an]"
git logকরতে যোগ করতে পারেন --merges। stackoverflow.com/a/25986615/134761
এখানে একটি সামান্য এক-লাইনার যা আপনাকে জানতে দেবে যে আপনার বর্তমান শাখাটি কোনও দূরবর্তী উত্স / মাস্টার শাখা থেকে অন্তর্ভুক্ত রয়েছে বা তথ্য থেকে বেরিয়ে গেছে:
$ git fetch && git branch -r --merged | grep -q origin/master && echo Incorporates origin/master || echo Out of date from origin/master
কোনও বৈশিষ্ট্য শাখায় কাজ করার সময় এবং প্রায়শই আমার নিজের পৃথক কার্যনির্বাহী শাখায় আমার সাম্প্রতিক কাজটি অন্তর্ভুক্ত করা হয়েছে কিনা তা নিশ্চিত করতে চাইলে আমি এই প্রশ্নটি জুড়ে এসেছি।
এই পরীক্ষাটি সাধারণীকরণের জন্য আমি আমার ~ / .gitconfig এ নিম্নলিখিত উপন্যাসটি যুক্ত করেছি:
[alias]
current = !git branch -r --merged | grep -q $1 && echo Incorporates $1 || echo Out of date from $1 && :
তারপরে আমি কল করতে পারি:
$ git current origin/master
আমি বর্তমান কিনা তা পরীক্ষা করতে
git branch --mergedএবং তারপরে স্থানীয় এবং দূরবর্তী শাখাগুলি মুছলাম।