মাস্টার এবং শাখার মধ্যে পিছনে / পিছনে তথ্য গিট?


201

আমি আমার স্থানীয় রেপোতে পরীক্ষার জন্য একটি শাখা তৈরি করেছি test-branchযা আমি ঠেকিয়েছি Github

আমি যদি আমার Githubঅ্যাকাউন্টে গিয়ে test-branchএটি নির্বাচন করি তবে এটি তথ্যটি দেখায়:

This branch is 1 commit ahead and 2 commits behind master

আমার প্রশ্নগুলি হ'ল:

  1. আমি কীভাবে এই তথ্য স্থানীয়ভাবে প্রদর্শন করতে পারি (যেমন: একটি কমান্ড যা Githubএটি দেখার জন্য খোলার পরিবর্তে টার্মিনালে এটি দেখায় )?
  2. আমি জানি আমি ব্যবহার করে শাখাগুলির মধ্যে পার্থক্য দেখতে পাচ্ছি:

    git diff master..test-branch
    

    বা ব্যবহার Meld(যা আমি পছন্দ করি):

    git difftool master..test-branch
    

    তবে আমি ভাবছিলাম যে সামনে এবং পিছনে আলাদাভাবে কমিট করার কোনও উপায় আছে কিনা । আই.ই: দেখানোর কোন উপায় আছে যে 1 নিজের দ্বারা প্রতিশ্রুতিবদ্ধ এবং তারপরে এই 2 জন নিজেরাই পিছনে প্রতিশ্রুতিবদ্ধ ?



1
গিট 2.5+ (কিউ 2 2015) উপস্থাপন করবে git for-each-ref --format="%(push:track)" refs/heads। দেখুন নিচের আমার উত্তর
VonC

1
আমি যে কীওয়ার্ডগুলি লিখতে চলেছি তা ব্যবহার করে এই প্রশ্নটি খুঁজে পেলাম না, তাই আমি কেবল উল্লেখ করতে চাই যে এই শাখাগুলি (এবং "ব্যবস্থাপত্রগুলির সেটগুলির মধ্যে আপেক্ষিক পরিপূরক (বা" সেট পার্থক্য ") গ্রহণের পরিমাণ amounts তারপরে উপাদানগুলি গণনা করা)। আশা করি এটি অনুসন্ধান ইঞ্জিন সূচকগুলিতে পরিণত করে।
pmos

উত্তর:


309

আমি এখানে দুটি শাখা তুলনা করতে এবং প্রতিটি শাখা অপরটির তুলনায় আরও কতগুলি প্রতিশ্রুতিবদ্ধ তা দেখানোর কৌশল খুঁজে পেয়েছি (আপনার প্রশ্নের 1 এর আরও সাধারণ উত্তর):

জন্য স্থানীয় শাখা: git rev-list --left-right --count master...test-branch

জন্য দূরবর্তী শাখা: git rev-list --left-right --count origin/master...origin/test-branch

এটি নিম্নলিখিতগুলির মতো আউটপুট দেয়:

1 7

এই আউটপুটটির অর্থ: "তুলনায় master, test-branch7 টি কমিট এগিয়ে এবং 1 টি কমিট পিছনে"

আপনি স্থানীয় শাখাগুলি দূরবর্তী শাখাগুলির সাথেও তুলনা করতে পারেন, উদাহরণস্বরূপ origin/master...master, স্থানীয় masterশাখাটি তার দূরবর্তী অংশের পিছনে / পিছনে কতটি প্রতিশ্রুতিবদ্ধ তা সন্ধান করতে ।


1
আমি কোনও শাখা মুছতে পারি কিনা বা এটি এখনও বিকাশের আগে রয়েছে কিনা তা খুঁজে বের করার জন্য এটি আমার জন্য দুর্দান্ত সমাধান।
ম্যাভারিক

1
@ মাভেরিক ১ , হ্যাঁ, আপনি যখন গিটফ্লো ওয়ার্কফ্লো অনুসরণ করছেন (যা আমি)
ব্যবহারকারী 1834095

2
আপনার বর্তমান বৈশিষ্ট্য শাখা দূরবর্তী মাস্টার ( git rev-list --left-right --count origin/master...@) এর পিছনে রয়েছে কিনা - এটি ব্যবহারকারীর git fetchআগে ব্যবহারের ক্ষেত্রে অনুসন্ধানের ক্ষেত্রে আমার ব্যবহারের ক্ষেত্রে এটি সেরা ; পুরানো শাখা থেকে টানুন অনুরোধ রোধ করতে দরকারী
jakub.g

9
ঠিক কতগুলি পিছনে কমিট রয়েছে তা যাচাই করতে বর্তমান শাখাটি:git rev-list --left-right --count origin/master...@ | cut -f1
জাকুব ২

8
@ জাকুব। উদাহরণস্বরূপ আপনার যদি কাটা প্রয়োজন হয় না --left-onlyবা--right-only
জেসনকার্নস

39

প্রথমে আপনি স্থানীয়ভাবে কতগুলি সংশোধনী পিছনে রয়েছেন তা git fetchদেখার জন্য, আপনার দূরবর্তী থেকে সর্বশেষতম তথ্য রয়েছে কিনা তা নিশ্চিত করার জন্য আপনার একটি করা উচিত ।

এর ডিফল্ট আউটপুট git statusআপনাকে বলে যে আপনি কতগুলি সংশোধন এগিয়ে বা পিছনে রয়েছেন তবে সাধারণত আমি এটি খুব ভার্জোজ মনে করি:

$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 2 and 1 different commit each, respectively.
#
nothing to commit (working directory clean)

আমি পছন্দ করি git status -sb:

$ git status -sb
## master...origin/master [ahead 2, behind 1]

প্রকৃতপক্ষে আমি এটিকে সহজভাবে নাম দিয়েছি git sএবং স্থিতি পরীক্ষার জন্য এটিই প্রধান আদেশ command

"সামনের সংশোধন" এর পার্থক্যটি দেখতে master, আমি "সংশোধনগুলির পিছনে" বাদ দিতে পারি origin/master:

git diff master..origin/master^

"পুনর্বিবেচনার পিছনে" এর পার্থক্যটি দেখতে origin/master, আমি "সামনের সংশোধনগুলি" এ থেকে বাদ দিতে পারি master:

git diff origin/master..master^^

সামনে বা পিছনে যদি 5 টি সংশোধনী থাকে তবে এটির মতো লিখতে আরও সহজ হতে পারে:

git diff master..origin/master~5
git diff origin/master..master~5

হালনাগাদ

সামনের / পিছনের সংশোধনগুলি দেখতে, অন্য একটি শাখা ট্র্যাক করতে অবশ্যই শাখাটি কনফিগার করা উচিত। আমার কাছে এটি পূর্বনির্ধারিত আচরণ যখন আমি কোনও রিমোট রিপোজিটরি ক্লোন করি এবং এর পরে আমি একটি শাখাটি ধাক্কা খাই git push -u remotename branchname। আমার সংস্করণটি 1.8.4.3, তবে যতক্ষণ আমার মনে আছে এটি এ জাতীয়ভাবে কাজ করে চলেছে।

সংস্করণ ১.৮ অনুসারে আপনি ট্র্যাকিং শাখাটি এভাবে সেট করতে পারেন:

git branch --track test-branch

সংস্করণ ১.7 অনুসারে বাক্য গঠনটি ভিন্ন ছিল:

git branch --set-upstream test-branch

আপনি কোন সংস্করণ gitব্যবহার করছেন? আমি কি আপনার সাথে পারেন পেতে পুনর্গঠন করতে পারবে না git statusকিংবা সঙ্গে git status -sb। আমি যদি কমান্ডটি চেষ্টা করি (করার পরে git fetch) আমি সামনের / পিছনে কমিটের কোনও তথ্য পাই না।
গ্যাব্রিয়েল

8
করে এগিয়ে এবং পিছনে দেখতে আপনার উপায় প্রয়োগ করা হয় masterএবং origin/masterআমি জন্য ঐ diffs দেখতে চাই masterএবং অন্য শাখা test-branch। আপনি কি এই উত্তরটিতে নিজের উত্তর ঠিকানাটি পুনরায় ফর্ম্যাট করতে পারেন?
গ্যাব্রিয়েল

"পিছনে" এবং "সামনের" সংশোধনগুলির পার্থক্য কেবল তখনই আমার পক্ষে কাজ করে যদি আমি শাখার নামগুলির মধ্যে (3 নয়) 3 টি বিন্দু ব্যবহার করি। এবং ^ এবং here এখানে গুরুত্বপূর্ণ মনে হয় না যেমন: গিট ডিফ মাস্টার ... উত্স / মাস্টার গিট ডিফ উত্স / মাস্টার ... মাস্টার যাইহোক, "গিট স্ট্যাটাস-এসবি" খুব সহায়ক ছিল।
ভিটুইল

10

গিট 2.5+ এর সাথে আপনার কাছে এখন সমস্ত শাখাগুলির সামনে / পিছনে দেখার অপশন রয়েছে যা একটি শাখায় ঠেলাঠেলি করার জন্য কনফিগার করা হয়েছে।

git for-each-ref --format="%(push:track)" refs/heads

"এ আরও দেখুন দেখার Unpushed গীত করে "


আপনি কি কেবল বর্তমান শাখা এবং এর দূরবর্তী ট্র্যাকিং শাখার জন্য এটি করতে পারেন?
স্পেক্স

@spex হ্যাঁ: সম্পূর্ণ refs/headsবর্তমান শাখার নাম (সঙ্গে stackoverflow.com/a/12142066/6309 ):refs/heads/$(git rev-parse --abbrev-ref HEAD)
VonC

3

আপনি awkএটিকে কিছুটা সুন্দর করে তোলার জন্যও ব্যবহার করতে পারেন:

git rev-list --left-right --count  origin/develop...feature-branch | awk '{print "Behind "$1" - Ahead "$2""}'

আপনি এমন একটি উপাধও তৈরি করতে পারেন যা সর্বদা প্রথমে উত্স প্রাপ্ত করে এবং তারপরে শাখাগুলির সাথে তুলনা করে

commit-diff = !"git fetch &> /dev/null && git rev-list --left-right --count"

1

গিট ফেচ করার পরে, আপনি শাখাটির রিমোট সংস্করণটির সামনে বা পিছনে স্থানীয় শাখা কতটা কমিট করে তা দেখানোর জন্য আপনি গিট স্ট্যাটাসটি চালাতে পারেন।

এটি আপনাকে দেখাবে না যদিও এটি আলাদা শাখার সামনে বা পিছনে কতটি প্রতিশ্রুতিবদ্ধ। আপনার বিকল্পগুলি সম্পূর্ণ পৃথক, গিথুবকে দেখছে বা উপরে সংযুক্ত বিম্সার মতো সমাধান ব্যবহার করছে: সমস্ত রেপোর চেয়ে গিটের অবস্থা

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.