নিমজ্জিত গিট শাখাগুলি সন্ধান করবেন?


276

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


1
প্রথমে আমি "অক্টোপাস মার্জ" শব্দটি নিয়ে হাসছিলাম। তবে যদি আপনি জানেন না, আমার মতো: এটি একীভূত কৌশলটির অফিশিয়াল নাম :-) দেখুন git-scm.com/docs/git- विसর বা atlassian.com/de/git /
পর্যবেক্ষক

উত্তর:


462

এটা চেষ্টা কর:

git branch --merged master

এটি টিনে যা বলেছে তা করে (শাখাগুলির তালিকাতে যা মিশে গেছে master)। আপনি এর সাথে বিপরীতটিও টানতে পারেন:

git branch --no-merged master

যদি আপনি নির্দিষ্ট না করেন master, যেমন ..

git branch --merged

তারপরে এটি আপনাকে শাখাগুলি প্রদর্শিত করবে যা বর্তমানের সাথে একত্রীকরণ করা হয়েছে HEAD(সুতরাং আপনি যদি চালু থাকেন তবে masterএটি প্রথম কমান্ডের সমতুল্য; যদি আপনি চালু থাকেন তবে fooএটি সমতুল্য git branch --merged foo)।

আপনি -rপতাকা বা একটি বিরুদ্ধে রেফারেন্স নির্দিষ্ট করে প্রবাহের শাখাগুলি তুলনা করতে পারেন , যা স্থানীয় বা দূরবর্তী হতে পারে:

git branch -r --no-merged origin/master

5
আপনি একত্রীকরণ তাহলে fooমধ্যে master, এটা প্রদর্শিত হবে git branch --merged masterতালিকা। তবে আপনি যদি আরও একবার প্রতিশ্রুতিবদ্ধ হন তবে কি হবে foo? এটি কি সেই তালিকায় আর উপস্থিত হয় না, বা এটি যেমন নতুন কমিট সত্ত্বেও এটি এক পর্যায়ে একীভূত হয়েছিল master?
ক্রেগ ওটিস

11
@ ক্রেইগঅটিস এটি আর তালিকায় প্রদর্শিত হবে না। --mergedকেবলমাত্র সেই শাখাগুলি তালিকাবদ্ধ করে যা প্রদত্ত শাখায় সম্পূর্ণ মার্জ হয়ে যায়।
আম্বর

এবং gitk --remotes --not origin/masterআপনাকে যে প্রতিটি শাখায় মাস্টার হিসাবে একীভূত হয়নি তা আপনাকে দেখিয়ে দেবে will
yoyo

5
এটি কল্পনা করুন ... একটি গিট উত্তর যা বুঝতে ও ব্যবহার করা সহজ!
জিলিক

1
শাখাটি পরীক্ষা না করে তালিকা পাওয়ার কোনও উপায় আছে কি? সার্ভারের দিকে ইশারা করার মতো এবং তারপরে তালিকাটি পেতে চান?
xbmono

57

আপনি মাস্টার হিসাবে মার্জ করা হয়নি এমন দূরবর্তী শাখাগুলি দেখানোর জন্য -r প্যারামিটার ব্যবহার করতে পারেন:

git branch -r --merged master

git branch -r --no-merged

19
বা -aএকইসাথে দূরবর্তী এবং স্থানীয় উভয়ই দেখতে
সাইমন ফোরসবার্গ

1
সেই শেষটি কি গিট শাখা -আর - না-একীভূত মাস্টার হওয়া উচিত?
মর্টিমারগেটক

28

যদি কোনও শাখা ইতিমধ্যে মার্জ করা থাকে তবে এটিকে আবার মার্জ করলে কিছুই হবে না। সুতরাং ইতিমধ্যে মার্জ হওয়া "পুনরায় মার্জিং" শাখাগুলি সম্পর্কে আপনাকে উদ্বিগ্ন হওয়ার দরকার নেই।

আপনার প্রশ্নের উত্তর দিতে, আপনি কেবল ইস্যু করতে পারেন

 git branch --merged

মার্জ করা শাখা দেখতে বা

 git branch --no-merged

জলাবদ্ধ শাখা দেখতে। আপনার বর্তমান শাখা নিহিত তবে আপনি চাইলে অন্যান্য শাখা নির্দিষ্ট করতে পারেন।

 git branch --no-merged integration

আপনাকে শাখাগুলি প্রদর্শিত হবে যা এখনও integrationশাখায় একীভূত হয়নি ।


1

নীচের স্ক্রিপ্টটি origin/*বর্তমান শাখার আগে থাকা সমস্ত শাখা খুঁজে পাবে

#!/bin/bash

CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)

echo -e "Current branch: \e[94m$CURRENT_BRANCH\e[0m"
echo ''

git branch -a | grep remotes/origin/ | while read LINE
do
    CMD="git diff --shortstat remotes/origin/${CURRENT_BRANCH}...${LINE}"

    if $CMD | grep ' file' > /dev/null; then
        echo -e "\e[93m$LINE\e[0m" | sed 's/remotes\/origin\///'
        $CMD
        echo ''
    fi
done

লিপিটির সর্বশেষতম সংস্করণ


0
Below script will fetch you unmerged branches and write results in .xls file 
#!/usr/bin/env bash
echo "getting list of unmerged_branches from the remote"
file_name=unmerged_branches.xls`enter code here`
current_time=$(date "+%Y.%m.%d-%H.%M.%S")
for branch in `git branch -r --no-merged | grep -v HEAD`;
do echo -e `git show --format="%cd  \\t%cr  \\t%ae" $branch | head -n 1` \\t$branch; 
done | sort -r >> $current_time.$file_name
echo "result is writtein in ";
echo $current_time.$file_name;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.