গিট লগ শুধুমাত্র নির্দিষ্ট শাখার জন্য কমিট করতে পেতে


214

আমি সমস্ত কমিটগুলি তালিকাবদ্ধ করতে চাই যা কেবলমাত্র একটি নির্দিষ্ট শাখার অংশ।

নিম্নলিখিতগুলির সাথে, এটি শাখা থেকে সমস্ত কমান্ডের তালিকাবদ্ধ করে, তবে পিতামাতার (মাস্টার) থেকেও

git log mybranch

অন্য যে বিকল্পটি আমি পেলাম তা হ'ল কর্তা দ্বারা গ্রহণযোগ্য কমিটগুলি বাদ দেওয়া এবং আমাকে যা চান তা দিয়েছিলেন তবে আমি অন্যান্য শাখার নাম জানার প্রয়োজনীয়তা এড়াতে চাই।

git log mybranch --not master

আমি ব্যবহার করার চেষ্টা করছিলাম git for-each-ref, তবে এটি মাইব্র্যাঞ্চকেও তালিকাভুক্ত করছে তাই আসলে এটি সমস্ত বাদ দিচ্ছে:

git log mybranch --not $(git for-each-ref --format '^%(refname:short)' refs/heads/)

হালনাগাদ:

আমি একটি নতুন বিকল্প যা আমি কিছুক্ষণ আগে খুঁজে পেয়েছি পরীক্ষা করছি, এবং এখনও অবধি মনে হচ্ছে এটি আমি যা খুঁজছিলাম তা হতে পারে:

git log --walk-reflogs mybranch

আপডেট (2013-02-13 টি 15: 08):

--Walk-reflogs বিকল্পটি ভাল, তবে আমি পরীক্ষা করে দেখেছি যে রিফ্লাগগুলির জন্য একটি মেয়াদোত্তীর্ণতা রয়েছে (ডিফল্ট 90 দিন, gc.reflogExpire )।

আমি মনে করি যে উত্তরটি আমি সন্ধান করেছি তা পেয়েছি:

git log mybranch --not $(git for-each-ref --format='%(refname)' refs/heads/ | grep -v "refs/heads/mybranch")

আমি কেবল উপলভ্য শাখাগুলির তালিকা থেকে বর্তমান শাখাটি সরিয়ে দিচ্ছি এবং লগ থেকে বাদ পড়ার জন্য সেই তালিকাটি ব্যবহার করছি। এইভাবে আমি কেবল কমিটগুলি পাই যা কেবল মাইব্র্যাঙ্ক দ্বারা পৌঁছে যায়


সঙ্গে সম্ভাব্য প্রতিলিপির stackoverflow.com/questions/53569
StarPinkER

ইতিমধ্যে প্রশ্নটিও দেখেছেন, তবে একই নয়
1313

2
আপনি কি নিশ্চিত যে এটি চান? আমি লক্ষ্য মনে করাই ভাল বলে মনে করি: "আমার শাখায় কী আছে যা উজানে নেই", বা "আমার শাখায় কী আছে যা মাস্টার নয়"। এছাড়াও, গিটটি ছাঁটাই করার সময় দ্রুত রয়েছে, আপনার আরও শাখা রয়েছে বলে এটি আরও ব্যয়বহুল হতে চলেছে। আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা আমি ব্যবহার করি bzr এর "অনুপস্থিত" কমান্ডের পরে "গিট মিসিং" call আপনি এটি এখানে পেতে পারেন: github.com/jszakmeister/etc/blob/master/git-addons/git-missing
জন স্মাকমিস্টার

1
পোস্ট-রিসিভ হুকের জন্য আমার আসলে এটি দরকার, তাই "মাস্টার" বরাবরই শাখা হতে না পারে
অন্ধকার করুন

হ্যাঁ, স্টারপিংকারের দ্বারা উল্লিখিত সদৃশটি আমার পক্ষে ভাল কাজ করেছে: গিট লগ $ (গিট মার্জ-বেস হেড শাখা) .. শাখা
চ্যারো

উত্তর:


165

যা আপনার মনে হচ্ছে তা থেকে ব্যবহার করা উচিত cherry:

git cherry -v develop mybranch

এটি মাইক্রাঙ্কের মধ্যে থাকা সমস্ত কমিটগুলি দেখায় , কিন্তু এটি বিকাশে নেই । আপনি যদি সর্বশেষ বিকল্পটি ( মাইব্রাঞ্চ ) ছেড়ে দেন তবে এটি বর্তমান শাখার পরিবর্তে তুলনা করবে।

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


4
আমার ঠিক এটির প্রয়োজন ছিল তবে এটির মতো মনে হয় এর আরও একটি স্বজ্ঞাত কমান্ড থাকা উচিত (হ্যাঁ এমনকি গিতের জগতেও)।
শেঠ

12
আপনি git cherry -v masterআপনার বর্তমান শাখাকে মাস্টার শাখার সাথে তুলনা করতেও করতে পারেন ।
পিথিকোস

2
গিট চেরি ব্যবহারের বিপদটি হ'ল যদি তাদের ফাইলের শাখাগুলির মধ্যে আলাদা হয় তবে কমিটগুলি কেবল তার সাথে মিলে যায়। যদি কোনও ধরণের মার্জ করা হয়ে থাকে যা একটি শাখার এবং অন্য শাখার মধ্যে পার্থক্যকে আলাদা করে তোলে, তবে গিট চেরি তাদেরকে আলাদা আলাদা কমিট হিসাবে দেখবে।
বেন

এই শুধু আমাকে দেয় fatal: Unknown commit mybranch
ম্যাট আর্নল্ড

1
@ ম্যাটআরনল্ড আপনাকে "বিকাশ" এবং "মাইবার্যাঞ্চ" পাঠ্যটি আপনার রেপোতে উপস্থিত শাখাগুলিতে পরিবর্তন করতে হবে
স্মিলি

40

তবে আমি অন্যান্য শাখার নাম জানার প্রয়োজনীয়তা এড়াতে চাই।

এটি সম্ভব বলে আমি মনে করি না: গিটের একটি শাখা সবসময় অন্য একটি উপর ভিত্তি করে বা কমপক্ষে অন্য কমিটের উপর ভিত্তি করে থাকে, যেমন " গিট ডিফ যথেষ্ট দেখায় না " তে বর্ণিত হয়েছে :

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

আপনার লগগুলি সঠিক কমিটগুলি দেখানোর জন্য আপনার একটি রেফারেন্স পয়েন্ট দরকার।

" জিআইটি - আমি কোথা থেকে শাখা করেছি? " তে উল্লিখিত হিসাবে :

শাখাগুলি কেবল একটি ডাগের নির্দিষ্ট কমিটের দিকে নির্দেশ করে simply

এমনকি যদি git log master..mybranchএকটি উত্তর হয় তবে এটি এখনও অনেকগুলি প্রতিশ্রুতি দেখায়, যদি mybranchভিত্তি করে থাকে তবে myotherbranchনিজেই ভিত্তিক master

সেই রেফারেন্সটি (আপনার শাখার উত্স) সন্ধানের জন্য, আপনি কেবলমাত্র প্রতিশ্রুতিগুলি পার্স করতে পারেন এবং দেখতে পাচ্ছেন যে তারা কোন শাখায় রয়েছে:


26

অবশেষে ওপি যা চেয়েছিল তা করার উপায় খুঁজে পেয়েছি। এটি এতটা সহজ:

git log --graph [branchname]

কমান্ডটি এমন সমস্ত কমিট প্রদর্শন করবে যা গ্রাফের ফর্ম্যাটে প্রদত্ত শাখা থেকে আগত। তবে, আপনি কমিট গ্রাফটি দেখে *প্রতিশ্রুতিবদ্ধ রেখার প্রথম চরিত্রটি দেখে সহজেই সেই শাখায় সমস্ত কমিটিকে ফিল্টার করতে পারেন ।

উদাহরণস্বরূপ, আসুন git log --graph masterনীচে কেকএফপি গিটহাব রেপোর সংক্ষেপগুলি দেখুন:

D:\Web Folder\cakephp>git log --graph master
*   commit 8314c2ff833280bbc7102cb6d4fcf62240cd3ac4
|\  Merge: c3f45e8 0459a35
| | Author: José Lorenzo Rodríguez <lorenzo@users.noreply.github.com>
| | Date:   Tue Aug 30 08:01:59 2016 +0200
| |
| |     Merge pull request #9367 from cakephp/fewer-allocations
| |
| |     Do fewer allocations for simple default values.
| |
| * commit 0459a35689fec80bd8dca41e31d244a126d9e15e
| | Author: Mark Story <mark@mark-story.com>
| | Date:   Mon Aug 29 22:21:16 2016 -0400
| |
| |     The action should only be defaulted when there are no patterns
| |
| |     Only default the action name when there is no default & no pattern
| |     defined.
| |
| * commit 80c123b9dbd1c1b3301ec1270adc6c07824aeb5c
| | Author: Mark Story <mark@mark-story.com>
| | Date:   Sun Aug 28 22:35:20 2016 -0400
| |
| |     Do fewer allocations for simple default values.
| |
| |     Don't allocate arrays when we are only assigning a single array key
| |     value.
| |
* |   commit c3f45e811e4b49fe27624b57c3eb8f4721a4323b
|\ \  Merge: 10e5734 43178fd
| |/  Author: Mark Story <mark@mark-story.com>
|/|   Date:   Mon Aug 29 22:15:30 2016 -0400
| |
| |       Merge pull request #9322 from cakephp/add-email-assertions
| |
| |       Add email assertions trait
| |
| * commit 43178fd55d7ef9a42706279fa275bb783063cf34
| | Author: Jad Bitar <jadbitar@mac.com>
| | Date:   Mon Aug 29 17:43:29 2016 -0400
| |
| |     Fix `@since` in new files docblocks
| |

যেমন আপনি দেখতে পাচ্ছেন, কেবল প্রতিশ্রুতিবদ্ধ লাইনগুলির মধ্যে প্রথম চরিত্রটিই কমিট করে 8314c2ff833280bbc7102cb6d4fcf62240cd3ac4এবং থাকে c3f45e811e4b49fe27624b57c3eb8f4721a4323bhave *এই কমিটিগুলি মাস্টার শাখা থেকে এবং অন্য চারটি অন্য কয়েকটি শাখার।


11

নিম্নলিখিত শেল কমান্ডটি যা চায় তা করা উচিত:

git log --all --not $(git rev-list --no-walk --exclude=refs/heads/mybranch --all)

আদেশ সহকারে

যদি আপনি mybranchচেক আউট করে থাকেন তবে উপরের কমান্ডটি কাজ করবে না। এটি কারণ যে প্রতিশ্রুতিগুলিও mybranchসেগুলির মাধ্যমে পৌঁছানো যায় HEADতাই গিট কমিটগুলি অনন্য বলে মনে করে না mybranchmybranchচেক আউট হয়ে গেলে এটি কাজ করার জন্য , আপনাকে অবশ্যই এর জন্য একটি বর্জন যুক্ত করতে হবে HEAD:

git log --all --not $(git rev-list --no-walk \
    --exclude=refs/heads/mybranch \
    --exclude=HEAD \
    --all)

তবে, যদি না চেক আউট করা হয় HEADতবে আপনার বাদ দেওয়া উচিত নয়mybranch , অন্যথায় আপনি এমন কমিটগুলি দেখানোর ঝুঁকি নিতে পারেন যা সীমাবদ্ধ নয় mybranch

একইভাবে, আপনার যদি origin/mybranchস্থানীয় কোনও শাখার সাথে মিলেমিশ্রিত একটি প্রত্যন্ত mybranchশাখা থাকে, আপনাকে এটিকে বাদ দিতে হবে:

git log --all --not $(git rev-list --no-walk \
    --exclude=refs/heads/mybranch \
    --exclude=refs/remotes/origin/mybranch \
    --all)

এবং যদি রিমোট শাখাটি দূরবর্তী সংগ্রহস্থলের জন্য ডিফল্ট শাখা হয় (সাধারণত কেবল origin/masterএটির জন্য সত্য ) তবে আপনাকেও বাদ দিতে হবে origin/HEAD:

git log --all --not $(git rev-list --no-walk \
    --exclude=refs/heads/mybranch \
    --exclude=refs/remotes/origin/mybranch \
    --exclude=refs/remotes/origin/HEAD \
    --all)

যদি আপনার শাখাটি চেক আউট হয়ে থাকে এবং একটি দূরবর্তী শাখা থাকে এবং দূরবর্তী শাখাটি দূরবর্তী সংগ্রহস্থলের জন্য ডিফল্ট হয়, তবে আপনি অনেকগুলি বাদ দিয়ে শেষ করবেন:

git log --all --not $(git rev-list --no-walk \
    --exclude=refs/heads/mybranch \
    --exclude=HEAD
    --exclude=refs/remotes/origin/mybranch \
    --exclude=refs/remotes/origin/HEAD \
    --all)

ব্যাখ্যা

git rev-listকমান্ড একটি নিম্ন স্তরের (নদীর গভীরতানির্ণয়) কমান্ড দেওয়া পুনর্বিবেচনা পদচারনা এবং SHA1 এ শনাক্তকারী সম্মুখীন ডাম্প হয়। git logএটিকে কেবল SHA1 shows কোনও লগ বার্তা, কোনও লেখকের নাম, কোনও টাইমস্ট্যাম্প না দেখানো সমতুল্য মনে করুন that যে কোনও "অভিনব" জিনিস নেই।

--no-walkবিকল্প, যেমন নাম থেকেই বোঝা, প্রতিরোধ git rev-listউত্পত্তি শৃঙ্খল হাঁটা থেকে। সুতরাং আপনি যদি git rev-list --no-walk mybranchএটি টাইপ করেন তবে এটি কেবল একটি SHA1 শনাক্তকারী মুদ্রণ করবে: mybranchশাখার টিপ কম্টের সনাক্তকারী ।

--exclude=refs/heads/mybranch --allআর্গুমেন্ট বলতে git rev-listছাড়া প্রতিটি রেফারেন্স থেকে শুরু করার জন্য refs/heads/mybranch

সুতরাং, আপনি যখন চালান git rev-list --no-walk --exclude=refs/heads/mybranch --all, গিট বাদে প্রতিটি রেফের টিপ কমিটের SHA1 সনাক্তকারীকে মুদ্রণ করে refs/heads/mybranch। এই করে এবং তাদের পূর্বপুরুষদের করে আপনি হয় না ইন-এই করে আপনি না হয় আগ্রহী না দেখতে চাই।

অন্যান্য করে বেশী আপনি, দেখতে তাই আমরা আউটপুট সংগ্রহ করতে চান git rev-list --no-walk --exclude=refs/heads/mybranch --allএবং গীত বলতে সবকিছু কিন্তু যারা করে এবং তাদের পূর্বপুরুষদের দেখানোর জন্য।

--no-walkযুক্তি বৃহৎ ভান্ডার জন্য প্রয়োজনীয় (এবং ছোট ভান্ডার জন্য একটি অপ্টিমাইজেশান হল): তা ছাড়া, গীত প্রিন্ট করতে হবে, এবং শেল সংগ্রহ করতে হবে (এবং মেমরিতে স্টোর) আরো অনেক প্রয়োজনীয় তুলনায় শনাক্তকারী কমিট। বড় সংগ্রহস্থলের সাহায্যে সংগ্রহ করা কমিটের সংখ্যা সহজেই শেলের কমান্ড-লাইন আর্গুমেন্টের সীমা অতিক্রম করতে পারে।

গিট বাগ?

আমি নিম্নলিখিতটি কাজ করার আশা করতাম:

git log --all --not --exclude=refs/heads/mybranch --all

তবে তা হয় না। আমি অনুমান করছি এটি গিটের একটি বাগ, তবে সম্ভবত এটি ইচ্ছাকৃত।


সুন্দর ব্যাখ্যা। +1
ভনসি

5
আমি এখানে মर्कুরিয়াল কীভাবে করবেন তা জানতে চেয়ে এখানে এসেছি hg log -b <branch>। আমি বুঝতে পারি না কেন লোকেরা গিটকে বন্ধুত্বপূর্ণ বলে। / s
weberc2

আমি জানি না কেন git log --all --not --exclude=refs/heads/mybranch --allকাজ করে না তবে কাজ git log refs/heads/mybranch --not --exclude=refs/heads/mybranch --allকরে, একই সাথে হেড এবং উত্স বাদ দিয়ে cave
বেন সি

8

দ্রুত উত্তর:

git log $(git merge-base master b2)..HEAD

চল বলি:

  1. আপনার একটি মাস্টার শাখা আছে

  2. কয়েকটি কমিট করুন

  3. আপনি বি 2 নামে একটি শাখা তৈরি করেছেন

  4. কর git log -n1; কমিট আইডি হ'ল বি 2 এবং মাস্টারের মধ্যে একত্রিত বেস

  5. বি 2-তে কয়েকটি কমিট করুন

  6. git log বি 2 এবং মাস্টার আপনার লগ ইতিহাস প্রদর্শন করবে

  7. কমিট রেঞ্জটি ব্যবহার করুন, যদি আপনি ধারণার সাথে পরিচিত না হন তবে আমি আপনাকে এটি গুগল করার জন্য বা ওভারফ্লো-স্ট্যাকের জন্য আমন্ত্রণ জানাচ্ছি,

    আপনার প্রকৃত প্রসঙ্গে আপনি উদাহরণস্বরূপ করতে পারেন

    git log commitID_FOO..comitID_BAR
    

    ".." হ'ল লগ কমান্ডের ব্যাপ্তি অপারেটর।

    এর অর্থ, একটি সরল আকারে, কমিটআইডিএফইউ-র চেয়ে আমার সমস্ত লগ আরও সাম্প্রতিক দিন ...

  8. # 4 পয়েন্টটি দেখুন, মার্জ বেস

    সুতরাং: git log COMMITID_mergeBASE..HEADআপনাকে পার্থক্য দেখাবে

  9. গিট আপনার মতো এইভাবে মার্জ বেসটি পুনরুদ্ধার করতে পারে

    git merge-base b2 master
    
  10. শেষ পর্যন্ত আপনি করতে পারেন:

    git log $(git merge-base master b2)..HEAD
    

4

আপনি এরকম কিছু চেষ্টা করতে পারেন:

#!/bin/bash

all_but()
{
    target="$(git rev-parse $1)"
    echo "$target --not"
    git for-each-ref --shell --format="ref=%(refname)" refs/heads | \
    while read entry
    do
        eval "$entry"

        test "$ref" != "$target" && echo "$ref"
    done
}

git log $(all_but $1)

বা, গিট ব্যবহারকারীর ম্যানুয়ালটিতে রেসিপি থেকে ধার নেওয়া :

#!/bin/bash
git log $1 --not $( git show-ref --heads | cut -d' ' -f2 | grep -v "^$1" )

+1 টি। আমি আমার উত্তরে লিখছিলাম যে আপনার শাখার উত্স খুঁজে পেতে আপনাকে কমিটগুলি পার্স করতে হবে এবং আপনি ঠিক এটি করেছেন বলে মনে হচ্ছে।
ভনসি

আপনি কি লগ - ওয়াক-রিফ্লোগ ব্যবহার করেছেন? আমি এই বিকল্পটি সম্পর্কে পড়ছি এবং এখন পর্যন্ত আমার প্রয়োজনীয় ফলাফলগুলি
দিচ্ছি

@ ডিমার্ক রিফ্লাগস সব মিলিয়ে একটি আলাদা জন্তু। এটি সময়ের সাথে সাথে সাধারণত পুনরুদ্ধারের উদ্দেশ্যে শাখা পয়েন্টগুলি রেকর্ড করে। আমি নিশ্চিত নই যে আপনি আপনার পোস্ট-রিসিভ হুকটিতে কী করছেন তবে আপনি যদি এটি ব্যাখ্যা করে থাকেন তবে ভাবেন আপনার সমস্যার আরও বুদ্ধিমান উত্তর সরবরাহ করতে পারে।
জন স্মাকমিস্টার

আমার কেবল একটি প্রতিশ্রুতিতে সমস্ত প্রতিশ্রুতিবদ্ধ বার্তাগুলি বিশ্লেষণ / পরীক্ষা করতে হবে। আমি যে বিষয়টি আবরণ করতে চাই তা হ'ল যদি কেউ মাস্টারে একাধিক কমিট চাপায় এবং একাধিক কমিটের সাথে একটি নতুন শাখাও তৈরি করে। পোস্ট-রিসিভ হুকের উভয়ই রেফ / শাখার জন্য করা পরিবর্তনগুলি পরীক্ষা করা দরকার, উদাহরণস্বরূপ মাস্টার এবং নিউ ব্র্যাঞ্চ, দু'বার কমিটের বার্তাগুলিকে পার্সিং এড়াতে নতুন শাখার সীমানা আমার জানা দরকার, যেহেতু মাস্টার থেকে কমিট করা যেতে পারে।

1
ঠিক আছে. তারপরে আমি মনে করি উপরোক্ত পদ্ধতির সত্যই আমি উল্লেখ করেছি আপনি যা চান তা তা। রিফ্লগের সাথে, কিছু সময়ের পরে এন্ট্রিগুলি বন্ধ হয়ে যাবে এবং আমি মনে করি এটি আপনাকে কিছু মাথা ব্যথার কারণ করবে। আপনি git show-ref --tagsখুব ব্যবহার দেখতে চাইবেন ।
জন স্মাকমিস্টার

4
git rev-list --exclude=master --branches --no-walk

প্রতিটি শাখার টিপস তালিকাভুক্ত করবে যা তা নয় master

git rev-list master --not $(git rev-list --exclude=master --branches --no-walk)

masterইতিহাসের প্রতিটি প্রতিশ্রুতি তালিকাভুক্ত করবে যা অন্য কোনও শাখার ইতিহাসে নেই।

প্রতিশ্রুতি বাছাইয়ের জন্য ফিল্টার পাইপলাইন সেটআপ করা বিকল্পগুলির জন্য সিকোয়েন্সিং গুরুত্বপূর্ণ, সুতরাং --branchesএটি প্রয়োগ করার কথা বলে যে কোনও বর্জনীয় প্যাটার্নগুলি --no-walkঅনুসরণ করতে হবে এবং পুনরায়-তালিকার সরবরাহকারী ফিল্টারগুলি অনুসরণ করতে হবে যা চলার কথা নয়।


4

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

git_show_all_commits_only_on_this_branch

#!/bin/bash
function show_help()
{
  ME=$(basename $0)
  IT=$(cat <<EOF
  
  usage: $ME {NEWER_BRANCH} {OLDER_BRANCH} {VERBOSE}
  
  Compares 2 different branches, and lists the commits found only 
  in the first branch (newest branch). 

  e.g. 
  
  $ME         -> default. compares current branch to master
  $ME B1      -> compares branch B1 to master
  $ME B1 B2   -> compares branch B1 to B2
  $ME B1 B2 V -> compares branch B1 to B2, and displays commit messages
  
  )
  echo "$IT"
  exit
}

if [ "$1" == "help" ]
then
  show_help
fi

# Show commit msgs if any arg passed for arg 3
if [ "$3" ]
then
  OPT="-v"
fi

# get branch names
OLDER_BRANCH=${2:-"master"}
if [ -z "$1" ]
then
  NEWER_BRANCH=$(git rev-parse --abbrev-ref HEAD)
else
  NEWER_BRANCH=$1
fi

if [ "$NEWER_BRANCH" == "$OLDER_BRANCH" ]
then
  echo "  Please supply 2 different branches to compare!"
  show_help
fi

OUT=$(\git cherry $OPT $OLDER_BRANCH $NEWER_BRANCH)

if [ -z "$OUT" ]
then
  echo "No differences found. The branches $NEWER_BRANCH and $OLDER_BRANCH are in sync."
  exit;
fi

if [ "$OPT" == "-v" ]
then
  echo "$OUT"
else
  echo "$OUT" | awk '{print $2}'
fi

1
এটি আমার জন্য প্রায় 100 অপ্রাসঙ্গিক লগ বার্তা তৈরি করেছে।
অর্লি স্টিফেন্স

আরে @ আরলিস্টেফেনস - আমি চেষ্টা করেছিলাম এবং মনে হচ্ছে এটি এখনও আমার জন্য কাজ করে? আমি উপরের দিকে স্রেফ সহায়তা এবং আরও ত্রুটি বার্তা যুক্ত করেছি। এটা কেমন চলছে আমাকে জানাও!
ব্র্যাড পার্কগুলি 12

মজাদার. কোডটি আপনার এখন যেমন রয়েছে তেমনটি দেখে আমি মনে করি এটি ধারণাটি মূল হিসাবে এতটা সহজ হতে পারে যে আমি যে শাখার যত্ন নিই তা মাস্টার বন্ধ হয়ে গেছে। বর্তমান কোড সহ, আমি স্পষ্টভাবে অভিভাবক শাখা নির্দিষ্ট করতে পারে। (আইআইআরসি, আমার দেব শাখা একটি রিলিজ শাখা থেকে এসেছে, মাস্টার নয়))
আর্লি স্টিফেন্স

@ আরলিস্টেফেনস - হ্যাঁ আমি মনে করি না যে আমি কোনও কার্যকারিতা পরিবর্তন করেছি .... আমি এটিকে আরও একবার আপডেট করেছি এবং কিছু স্থানীয় পরীক্ষার পরে ডক্সকে কিছুটা আরও নির্ভুল করে তুলেছি ... এবং সেখানে "ভার্বোজ" বিকল্পটি যুক্ত করেছিলাম, তবে আমি এটি ডক করতে পারি নি
ব্র্যাড পার্কস

3

আমি নিম্নলিখিত কমান্ড ব্যবহার করছি:

git shortlog --no-merges --graph --abbrev-commit master..<mybranch>

অথবা

git log --no-merges --graph --oneline --decorate master..<mybranch>

1

আমি এই পদ্ধতির তুলনামূলক সহজ।

শাখায় চেকআউট এবং তার চেয়েও বেশি

  1. চালান

    git rev-list --simplify-by-decoration -2 HEAD
    

এটি মাত্র দুটি এসএইচএ সরবরাহ করবে:

1) শাখার শেষ প্রতিশ্রুতি [সি 1]

2) এবং শাখার প্রথম প্রতিশ্রুতিতে পিতামাতার প্রতিশ্রুতিবদ্ধ [সি 2]

  1. এখন চালান

    git log --decorate --pretty=oneline --reverse --name-status <C2>..<C1>
    

এখানে সি 1 এবং সি 2 দুটি স্ট্রিং রয়েছে যখন আপনি প্রথম কমান্ডটি চালাবেন। এই মানগুলি <> দ্বিতীয় কমান্ডে ছাড়াই রাখুন।

এটি শাখার মধ্যে ফাইল পরিবর্তনের ইতিহাসের তালিকা দেবে।


আপনি যদি প্রশ্নের প্রথম তিনটি লাইন পড়ে থাকেন তবে আপনি দেখতে পাবেন যে লেখক এই সঠিক আদেশটি তালিকাভুক্ত করেছেন এবং ব্যাখ্যা করছেন যে কেন তারা যা খুঁজছেন তা নয়
black_fm

আহ @ ব্ল্যাক_এফএম উত্তরে আমি কিছু পরিবর্তন করেছি। আপনি যদি এটি এখন দরকারী মনে করেন তবে এটিতে ভোট দিতে পারেন। :)
মোস্তকিম কে

0

আমার পরিস্থিতিতে, আমরা গিট ফ্লো এবং গিটহাব ব্যবহার করছি। আপনাকে যা করতে হবে তা হ'ল গিটহাবের আপনার বিকাশকারী শাখার সাথে আপনার বৈশিষ্ট্য শাখার তুলনা করুন।

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

উদাহরণ স্বরূপ:

https://github.com/your_repo/compare/develop...feature_branch_name


আমি সম্মত হই যে আপনি যখন এই পরিস্থিতিতে পড়েন "আমি একটি পুল অনুরোধটি কেমন হবে তা দেখতে চাই", সর্বোত্তম সমাধানটি প্রায়শই উপেক্ষা করা gitএবং তার পরিবর্তে কেবল একটি টানার অনুরোধ করতে বা শাখাগুলির তুলনা করতে গিটহাব ব্যবহার করা হয়।
পেকম্ব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.