প্রদত্ত প্রতিশ্রুতি যুক্ত শাখাগুলি কীভাবে তালিকাভুক্ত করবেন?


1086

কোন শাখায় প্রদত্ত প্রতিশ্রুতি রয়েছে তা জানতে আমি কীভাবে গিটকে জিজ্ঞাসা করতে পারি? gitkসাধারণত খুব বেশি শাখা না থাকলে শাখাগুলি তালিকাভুক্ত করে case আমার পুরো তালিকাটি জানতে হবে, বা কমপক্ষে কোনও নির্দিষ্ট শাখায় কমিট রয়েছে কিনা তা জানতে হবে।



: মন্তব্যগুলি প্রতি একটি সমতুল্য এর জন্য সম্পর্কিত প্রশ্ন কমিট stackoverflow.com/questions/16304574/...
UpAndAdam

উত্তর:


1469

থেকে Git-শাখা ম্যানুয়েল পৃষ্ঠা :

 git branch --contains <commit>

কেবলমাত্র শাখাগুলি নির্দিষ্ট করুন যা নির্দিষ্ট প্রতিশ্রুতি রয়েছে (যদি উল্লেখ না করা থাকে তবে হেড)। বোঝায় --list


 git branch -r --contains <commit>

দূরবর্তী ট্র্যাকিং শাখাগুলিও তালিকাভুক্ত করে ( নীচে ব্যবহারকারী 3941992 এর উত্তরে উল্লিখিত) এটি "স্থানীয় শাখা যাগুলির প্রত্যন্ত শাখার সাথে সরাসরি সম্পর্ক রয়েছে"।


এই গিট প্রস্তুত নিবন্ধটি দেখুন।

--containsট্যাগ জিনিসটা একটি নির্দিষ্ট কমিট আপনার শাখা মধ্যে এখনও আনা হয়েছে যদি হবে। সম্ভবত আপনি যে প্যাচটি ভেবেছিলেন যে আপনি প্রয়োগ করেছেন, সেটির কাছ থেকে আপনি একটি প্রতিশ্রুতিবদ্ধ SHA পেয়েছেন বা আপনি কেবলমাত্র আপনার প্রিয় ওপেন সোর্স প্রকল্পের জন্য প্রতিশ্রুতিবদ্ধ কিনা যা মেমরির ব্যবহারের 75% হ্রাস করে তা এখনও বন্ধ রয়েছে কিনা তা যাচাই করতে চান।

$ git log -1 tests
commit d590f2ac0635ec0053c4a7377bd929943d475297
Author: Nick Quaranto <nick@quaran.to>
Date:   Wed Apr 1 20:38:59 2009 -0400

    Green all around, finally.

$ git branch --contains d590f2
  tests
* master

দ্রষ্টব্য: যদি প্রতিশ্রুতিটি কোনও দূরবর্তী ট্র্যাকিং শাখায় থাকে তবে -aবিকল্পটি যুক্ত করুন
( নীচে মিচিয়েলবি মন্তব্য হিসাবে )

git branch -a --contains <commit>

ম্যাট্রিক্সফ্রোগ মন্তব্য করেছেন যে এটি কেবলমাত্র শাখাগুলিতে সেই সঠিক প্রতিশ্রুতি রয়েছে।
আপনি যদি জানতে চান কোন শাখাগুলিতে একটি "সমতুল্য" প্রতিশ্রুতি রয়েছে (অর্থাত্ কোন শাখাগুলিতে চেরি-বাছাই করা আছে) যেটি git cherry:

git cherry কমিট আইডি (শ 1) এর চেয়ে পরিবর্তনের তুলনা করার কারণে , আপনি git cherryস্থানীয়ভাবে করা <upstream>কমিট আলাদা কমিট আইডির আওতায় প্রয়োগ করা হয়েছে কিনা তা জানতে আপনি ব্যবহার করতে পারেন ।
উদাহরণস্বরূপ, যদি আপনি <upstream>ইমেলের মাধ্যমে প্যাচগুলি খাওয়ান বা সরাসরি কমিটস চাপান বা টানেন না this

           __*__*__*__*__> <upstream>
          /
fork-point
          \__+__+__-__+__+__-__+__> <head>

(এখানে, -' চিহ্নিত চিহ্নিত কমিটগুলি প্রদর্শন হবে না git cherry, অর্থাত তারা ইতিমধ্যে উপস্থিত রয়েছে <upstream>))


3
testsএবং master- masterবর্তমান শাখা, সুতরাং তারা।
নীল বর্ণের

54
এটি কেবল দেখায় যে কোন শাখায় সেই সঠিক প্রতিশ্রুতি রয়েছে । যদি আপনি জানতে চান যে কোন শাখায় "সমতুল্য" কমিট রয়েছে (যেমন কোন শাখায় চেরি-বাছাই করা সেই প্রতিশ্রুতি রয়েছে) যেটি git cherry: "কারণ গিট চেরি কমিট আইডি (শে 1) এর পরিবর্তে চেঞ্জটি তুলনা করে, আপনি গিট চেরি ব্যবহার করতে পারেন এটি সন্ধান করতে যদি আপনি স্থানীয়ভাবে প্রতিশ্রুতিবদ্ধ থাকেন তবে <অপ্রাপ্তবয়স্ক> একটি ভিন্ন কমিট আইডির অধীনে প্রয়োগ করা হয়েছে For উদাহরণস্বরূপ, আপনি যদি সরাসরি কমিটকে চাপ দেওয়া বা টানানোর চেয়ে ইমেলের মাধ্যমে <upstream> প্যাচগুলি খাওয়াতেন তবে এটি ঘটবে "" kernel.org/pub/software/scm/git/docs/git-cherry.html
ম্যাট্রিক্সফ্রোগ

62
-aদূরবর্তী শাখাগুলি পরীক্ষা করতে একটি পরামিতি যুক্ত করুন ।
রমন


5
জন্য git cherryঅংশ @UpAndAdam প্রশ্ন জিজ্ঞাসা এখানে: stackoverflow.com/questions/16304574/... , হায়রে প্রশ্ন না (এখনও) বললেন হয়েছে।
অ্যাডেলেক্স

22

আপনি চালাতে পারেন:

git log <SHA1>..HEAD --ancestry-path --merges

আউটপুটে সর্বশেষ প্রতিশ্রুতিবদ্ধ মন্তব্য থেকে আপনি মূল শাখার নামটি খুঁজে পেতে পারেন

উদাহরণ:

       c---e---g--- feature
      /         \
-a---b---d---f---h---j--- master

git log e..master --ancestry-path --merges

commit h
Merge: g f
Author: Eugen Konkov <>
Date:   Sat Oct 1 00:54:18 2016 +0300

    Merge branch 'feature' into master

6
নিস! আমি git log <SHA1>..master --ancestry-path --merges --oneline | tail -n1এটি একটি লাইনে পেয়েছি
জেমস ইজে

1
আপনি যদি খাঁটি গিট কমান্ডটি ব্যবহার করতে চান তবে আপনি এটি ব্যবহার করতে পারেন:git log <SHA1>..master --ancestry-path --merges --oneline -1
বার্টোস

দ্রষ্টব্য: যখন আপনার প্রতিশ্রুতিবদ্ধতা সর্বাধিক সাম্প্রতিক প্রতিশ্রুতি মাস্টার / foo শাখায় (হেড) হয় ... আপনি কোন A..Bপ্রতিশ্রুতি পরিসর করতে পারবেন না , কেবল :: git log HEAD --oneline -1> এর মতো পরিসর ব্যবহার করবেন না 82c12a9 (HEAD, origin/remote-branch-name, origin/master, origin/dev, origin/HEAD, master, dev) commit message
ডেভিন জি রোড

যদি এই গিট রেপো একটি সাবমডিউল হয় এবং আপনি বিচ্ছিন্ন হেড সমস্যাটি সমাধান করার চেষ্টা করছেন ... তবে আপনার পছন্দের শাখার একটি কঠিন প্রশ্ন আছে ... আমার আগের উদাহরণে আপনি সহজেই বলতে পারেন যে masterএটি এই তালিকায় থাকলে সর্বদা পছন্দ হয় । সেখান থেকে এটি কম পরিষ্কার। আপনি চেষ্টা এবং .gitmodules ফাইল থেকে Git শাখা পড়তে পারি: git config -f .gitmodules submodule.src/foo/submodule.branch। এটি দীর্ঘস্থায়ী কাঁটাচামচ / পিআর হতে পারে। আপনি রুট রেপ এবং চালাতে সিডি করতে পারেন git config submodule.src/foo/submodule.branch। আপনি সুপারপ্রজেক্টের বর্তমান গিট শাখাও ব্যবহার করতে পারেন।
ডেভিন জি রোড

ছোট git config submodule.src/foo/submodule.branchসরু হিসাবে: কোনও রেপো-লোকাল .gitconfig ফাইল সহ গিট কনফিগারেশনের বিভিন্ন ধরণের দ্বারা প্রভাবিত হতে পারে। (চলমান প্রয়োজন git config --local include.path ./path/to/your/.gitconfig)
ডেভিন জি রোড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.