আমি গিটে শাখাগুলির মধ্যে প্রতিশ্রুতিবদ্ধ পার্থক্য কীভাবে দেখতে পারি?


341

আমি শাখা-এক্স এ আছি এবং এর উপরে আরও কয়েকটি কমিট যোগ করেছি। আমি মাস্টার এবং শাখার মধ্যে যে সমস্ত পার্থক্য রয়েছে তা আমি কমিটের ক্ষেত্রে দেখতে চাই। আমি শুধু একটি করতে পারে

git checkout master
git log

এবং তারপর ক

git checkout branch-X
git log

এবং দৃশ্যত এগুলি পৃথক, তবে আমি একটি সহজ, কম ত্রুটি-প্রবণ পদ্ধতির জন্য আশা করছি।


উত্তর:


324

এর সাথে আপনার শাখাগুলি কীভাবে পৃথক হয় তার একটি সত্যই সুন্দর, ভিজ্যুয়াল আউটপুট আপনি পেতে পারেন

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative master..branch-X

13
এটি আপনাকে শাখাগুলির মধ্যে পার্থক্য দেখাবে না যদিও এটি যা চাওয়া হচ্ছে।
পাবলো ফার্নান্দেজ হিলহুক

47
git log --oneline --graph --all --decorate --abbrev-commitএকটি সংক্ষিপ্ত / আরও পঠনযোগ্য কমান্ডে আপনাকে অনুরূপ আউটপুট দেবে
পাবলো ফার্নান্দেজ হিলহুক

4
আমি এটি পছন্দ করি:git log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset'
অ্যাভেরি

6
চূড়ান্তভাবে overcomplicated।
শন এরউখার্ট

12
git log --oneline --graph --all --decorateপর্যাপ্ত, --abbrev-commitপ্রয়োজনীয় নয়, এর --onelineজন্য সংক্ষিপ্ত--pretty=oneline --abbrev-commit
এভোমোহন

720

আপনি এটি দিয়ে সহজেই এটি করতে পারেন

git log master..branch-X

এটি আপনাকে দেখায় যে শাখা-এক্স রয়েছে তবে মাস্টার তা করেন না।


9
উভয় শাখায় অন্যটি না করে এমন কমিট রয়েছে এমন কি বিকল্প আছে? এখনই, আপনাকে যুক্তিগুলি ফ্লিপ করতে হবে এবং অন্য শাখায় কমিট রয়েছে তা দেখার জন্য এটি উভয়ভাবে চালাতে হবে।
এলিয়ট স্লটার

38
আপনি যদি ইতিমধ্যে আপনার কাছে স্যুইচ করে থাকেন তবে branch-Xব্যবহার করতে পারেনgit log master..
ডেভ

8
@ এলিয়টস্লাটার: আপনি যদি এমন প্রতিশ্রুতি খুঁজে পেতে চান যা উভয়ই মাস্টার বা শাখা-এক্সে রয়েছে তবে উভয়ই নয়, আপনি ব্যবহার করতে পারেন git log master...branch-X(দুটির পরিবর্তে তিনটি বিন্দু)। দেখুন man gitrevisionsআরও তথ্যের জন্য।
জাভিয়ের টি।

3
এটি সত্যিকার অর্ধেক উত্তর মাত্র। মাস্টারটিতে এমন কোনও প্রতিশ্রুতি রয়েছে যার ফলে শাখাগুলি বিভক্ত হওয়ার কারণ দেখাবে না
২৩ শে

9
যদি কমিটগুলি শাখা-এক্স থেকে মাস্টার হিসাবে চেরি-বাছাই করা হয় তবে এটি সেগুলি ছাঁটাবে না। তারা উভয়ই বাস্তবে থাকা সত্ত্বেও তারা "শাখা-এক্সে তবে মাস্টার নয়"
কমিটের তালিকায় থাকবে

87

আমি মনে করি এটি পছন্দ এবং প্রসঙ্গের বিষয় I আমি ব্যবহার করতে পছন্দ করি

git log origin/master..origin/develop --oneline --no-merges

এটি বিকাশে কমিটগুলি প্রদর্শন করবে যা মাস্টার শাখায় নেই।

আপনি যদি দেখতে চান যে কোন ফাইলগুলি আসলে ব্যবহারের পরিবর্তিত

git diff --stat origin/master..origin/develop --no-merges

আপনি যদি যুক্তি নির্দিষ্ট না করেন তবে এটি সম্পূর্ণ ভিন্নতা প্রদর্শন করবে। আপনি যদি ভিজ্যুয়াল ডিফ দেখতে চান তবে meldলিনাক্স বা WinMergeউইন্ডোতে ইনস্টল করুন । সেগুলি ডিফল্ট বিচ্ছিন্নতা আছে কিনা তা নিশ্চিত করুন something

git difftool -y origin/master..origin/develop --no-merges

আপনি যদি এটি বর্তমান শাখার সাথে তুলনা করতে চান। ব্যবহারের মতো শাখার পরিবর্তে হেড ব্যবহার করা আরও সুবিধাজনক:

git fetch
git log origin/master..HEAD --oneline --no-merges

এটি আপনাকে একত্রিত করার বিষয়ে সমস্ত কমিটগুলি প্রদর্শন করবে


1
আপনি যদি একটি রিলিজ শাখার তুলনা করেন যা মার্জ হতে পারে। আপনি --no-mergesgit log origin/master..HEAD --oneline --no-merges
পরমের সাহায্যে মার্জ কমিটগুলি

15

আপনি যদি লিনাক্সে থাকেন তবে gitgএটি খুব দ্রুত এবং গ্রাফিকভাবে করার উপায়।

আপনি যদি কমান্ড লাইনে জোর দিয়ে থাকেন তবে আপনি এটি ব্যবহার করতে পারেন:

git log --oneline --decorate

git logডিফল্ট হিসাবে আরও ভাল করতে , আমি সাধারণত এই বিশ্বব্যাপী পছন্দগুলি সেট করে থাকি:

git config --global log.decorate true
git config --global log.abbrevCommit true

14

"কমিটে" পার্থক্যটি দেখার জন্য আমি নীচের পরামর্শ দেব। প্রতিসম পার্থক্যের জন্য, উল্টানো আরোগুলি সহ কমান্ডটি পুনরাবৃত্তি করুন:

git cherry -v master [your branch, or HEAD as default]

এটি কি গিট মাস্টারের চেয়ে আলাদা .. ব্রাঞ্চ-এক্স?
ইলমিরস

2
অবশ্যই, "গিট চেরি" স্মার্ট: এটি "প্রতিশ্রুতিবদ্ধ" থেকে "প্যাচ / ডিফস" -এ অনুবাদ করে এবং উভয় শাখায় থাকা "প্যাচ" প্রতিবেদন করা এড়াতে পারে যা বিভিন্ন ক্রমে প্রয়োগ করা হয়।
মর্মুস্কা

8

আপনি যদি গিটক ব্যবহার করতে চান:

gitk master..branch-X

এটি একটি সুন্দর পুরাতন স্কুল জিইউআই আছে


4

নিখুঁত উত্তর নয় তবে গিথুব ব্যবহার করা লোকদের পক্ষে আরও ভাল কাজ করে:

এখানে চিত্র বর্ণনা লিখুন

আপনার রেপোতে যান: Insights -> Network


এছাড়াও, একটি পুল অনুরোধ তৈরি করা শাখার পার্থক্যগুলিও প্রদর্শন করবে।
pkamb

ওএমজি আমি আপনাকে আলিঙ্গন করতে চাই
এসেরার

@ ইশারা আমিও বড় আলিঙ্গন :) :) আপনাকে স্বাগতম: ডি
আইয়ন

2

আপনি যদি প্রতিশ্রুতিবদ্ধ বার্তাগুলির উপর ভিত্তি করে তুলনা করতে চান, আপনি নিম্নলিখিতটি করতে পারেন:

git fetch
git log --oneline origin/master | cut -d' ' -f2- > master_log
git log --oneline origin/branch-X | cut -d' ' -f2- > branchx_log
diff <(sort master_log) <(sort branchx_log)

1
আপনি ব্যবহার করতে --onelineএবং পাইপ পরিবর্তে ব্যবহার cutকরতে পারেনgit log --format='%s'
অপ্টিসাইক্লিক

0
#! /bin/bash
if ((2==$#)); then
  a=$1
  b=$2
  alog=$(echo $a | tr '/' '-').log
  blog=$(echo $b | tr '/' '-').log
  git log --oneline $a > $alog
  git log --oneline $b > $blog
  diff $alog $blog
fi

এটি অবদান রাখছে কারণ এটি যদি আপনার এবং ভিজ্যুয়াল ডিফ সরঞ্জাম থাকে তবে পাশাপাশি একটি এবং বি লগগুলি দৃশ্যত পৃথকভাবে পৃথক করা যায়। ভিজ্যুয়াল ডিফ সরঞ্জাম শুরু করার জন্য কমান্ডের সাথে শেষে ডিফ কমান্ডটি প্রতিস্থাপন করুন।


0

আমি কয়েকটি উত্তর ব্যবহার করেছিলাম এবং একটি পেয়েছি যা আমার ক্ষেত্রে উপযুক্ত (নিশ্চিত করুন যে সমস্ত কাজ মুক্তির শাখায় রয়েছে)।

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

git fetch
git log origin/master..origin/release-1.1 --oneline --no-merges

অথবা আপনি আপনার বর্তমানের সাথে মাস্টারের সাথে তুলনা করতে পারেন

git fetch
git log origin/master..HEAD --oneline --no-merges

git fetch আপনি আপডেট করা তথ্য ব্যবহার করছেন তা নিশ্চিত করার জন্য রয়েছে।

এইভাবে প্রতিটি প্রতিশ্রুতি এক লাইনে থাকবে এবং আপনি এটিকে একটি পাঠ্য সম্পাদকের মধ্যে অনুলিপি / পেস্ট করতে পারেন এবং একত্রিত হওয়া কমিটগুলির সাথে কার্যগুলির তুলনা শুরু করতে পারেন।

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