শর্টহ্যান্ডের কমিট আইডি যদি 2 টি পৃথক কমিটের বিষয়ে উল্লেখ করতে পারে তবে কি গিট আমাকে সতর্ক করবে?


130

যদি cee1572 টি বিভিন্ন কমিট আইডি উল্লেখ করতে পারেন তবে

cee157eb799af829a9a0c42c0915f55cd29818d4 এবং cee1577fecf6fc5369a80bd6e926ac5f864a754b

আমি টাইপ করলে গিট আমাকে সতর্ক করবে git log cee157? (বা গিট 1.8.5.2 (অ্যাপল গিট -৮৮) আমাকে টাইপ করতে দেয় git log cee1)।

আমি মনে করি এটি করা উচিত, যদিও আমি কোনও প্রামাণিক উত্স খুঁজে পাই না যা বলে যে এটি হবে।


4
দেখুন man gitrevisions, যা অন্তত ইঙ্গিত দেয় একটি সতর্কতা দেওয়া হবে যেহেতু এতে বলা হয়েছে যে আপনি তার সংশোধনটির পুরো SHA1-1 নাম বা "একটি শীর্ষস্থানীয় স্ট্রিং যা ভান্ডারের অভ্যন্তরে অনন্য।"
চিপনার

5
আপনার কি 17 টি আলাদা কমিট আছে? শুধু চেষ্টা করুন git log c... এবং দেখুন।
djechlin

1
ELL এ, আমি সম্ভবত এটি [সাধারণ-রেফারেন্স] হিসাবে পতাকাঙ্কিত করব
জাস্টহেল্ফ

3
@ ডিজজেচলিন আমার কমপক্ষে 4 টি সংখ্যা দরকার। git log abcবলেছেন fatal: ambiguous argument 'abc': unknown revision or path not in the working tree.এমনকি যদি আমি একটি অনন্য SHA1 এ দিয়ে শুরু আছে abc। ১-২-৩ ডিজিট নিয়ে কাজ করে না, 4 টি সর্বনিম্ন বলে মনে হচ্ছে। উইন্ডোজ (1.8.1) এবং ম্যাক (1.9.1) এ পরীক্ষিত।
জানস

4
@ জ্যানোস এটি কারণ পরিবেশে। h এর minimum_abbrevমানকে সংজ্ঞায়িত করে 4
ডিভনুল

উত্তর:


168

এটি আপনাকে এরকম কিছু দেয়:

$ git log cee157
error: short SHA1 cee157 is ambiguous.
error: short SHA1 cee157 is ambiguous.
fatal: ambiguous argument 'cee157': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

আমি এটির মতো সদৃশ উপসর্গগুলির সাথে প্রতিশ্রুতিগুলি সন্ধান করে একটি সত্যিকারের গিট সংগ্রহস্থলের উপর এটি পরীক্ষা করেছি:

git rev-list master | cut -c-4 | sort | uniq -c | sort -nr | head

এটি পুনর্বিবেচনার তালিকাটি গ্রহণ করে master, প্রথম 4 টি অক্ষর কেটে ফেলেছে এবং বাকীটি ফেলে দেয়, সদৃশগুলি গণনা করে এবং সংখ্যা অনুসারে বাছাই করে। আমার তুলনামূলকভাবে 1500 ডলারের একটি ছোট সংগ্রহস্থলটিতে আমি একটি সাধারণ 4-সংখ্যার উপসর্গের সাথে বেশ কয়েকটি সংশোধনী পেয়েছি। আমি একটি 4-সংখ্যার উপসর্গটি বেছে নিয়েছি কারণ এটি গিট দ্বারা সমর্থিত সংক্ষিপ্ততম আইনি দৈর্ঘ্য বলে মনে হচ্ছে। (অস্পষ্ট না হলেও 3 টি সংখ্যা বা তারও কম দিয়ে কাজ করে না))

বিটিডব্লিউ এটি কোনও টাইপো ছিল না, নকল এসএএএল সংখ্যাটি নির্বিশেষে (2 এবং 3 দিয়ে চেষ্টা করা) দ্বিপাক্ষিক SHA1 সম্পর্কে ত্রুটি বার্তা কেন দু'বার প্রদর্শিত হবে তা আমি জানি না:

error: short SHA1 cee157 is ambiguous.
error: short SHA1 cee157 is ambiguous.

(উভয় অন stderr। আসলে পুরো আউটপুট চালু আছে stderr, কিছুই নেই stdout))

উইন্ডোজ পরীক্ষিত:

$ git --version
git version 1.8.1.msysgit.1

আমি মনে করি এটি নিরাপদ বলে মনে হয় যে যদি আপনার সংস্করণ> = 1.8.1 হয় তবে গিট আপনাকে নকল সম্পর্কে সতর্ক করবে । (এটি ডুপ্লিকেট সহ পরিচালনা করতে অস্বীকার করবে)) আমি অনুমান করব যে অনেক পুরানো সংস্করণও এইভাবে কাজ করেছিল।

হালনাগাদ

যখন এই পরীক্ষা, আপনি কারণে, 4 সংখ্যার SHA1 এ কমপক্ষে প্রয়োজন int minimum_abbrev = 4মধ্যে environment.c । ( এটি নির্দেশ করার জন্য @ দেবনুলকে ধন্যবাদ !)


5
ম্যাচের উপসর্গের সাথে দু'টির বেশি কমিট করলেও কি ত্রুটিটি দু'বার প্রদর্শিত হবে?
নিট

4
@ না হ্যাঁ, 3 টি ডুপ থাকলেও বার্তাটি দু'বার প্রদর্শিত হবে। এটা পরিষ্কার করতে আমার উত্তর আপডেট।
জানস

1
গিট সোর্স কোডের কাঠামোটি দেওয়া, দেখে মনে হচ্ছে দুটি আউটপুটগুলির মধ্যে একটি হ'ল সতর্কতা এবং অন্যটিতে একটি ত্রুটি। যদিও নির্দিষ্ট নয়।
ইজকাটা 21

1
@ মার্কহর্ড উভয় স্টারারে আসলে পুরো আউটপুটটি স্ট্যাডারে রয়েছে, স্টডআউটে কিছুই নেই। (যা বোঝায়)
জানস

63

মূল পোস্টারটিতে বলা হয়েছে:

আমি মনে করি এটি করা উচিত, যদিও আমি কোনও প্রামাণিক উত্স খুঁজে পাই না যা বলে যে এটি হবে।

অনুমোদনযোগ্য উত্স উত্স কোড পাওয়া যাবে get_short_sha1() ,।

বরাত দিয়ে এই :

if (!quietly && (status == SHORT_NAME_AMBIGUOUS))
    return error("short SHA1 %.*s is ambiguous.", len, hex_pfx);

এবং এটি :

if (!ds->candidate_checked)
    /*
     * If this is the only candidate, there is no point
     * calling the disambiguation hint callback.
     *
     * On the other hand, if the current candidate
     * replaced an earlier candidate that did _not_ pass
     * the disambiguation hint callback, then we do have
     * more than one objects that match the short name
     * given, so we should make sure this one matches;
     * otherwise, if we discovered this one and the one
     * that we previously discarded in the reverse order,
     * we would end up showing different results in the
     * same repository!
     */
    ds->candidate_ok = (!ds->disambiguate_fn_used ||
                        ds->fn(ds->candidate, ds->cb_data));

if (!ds->candidate_ok)
    return SHORT_NAME_AMBIGUOUS;

তদতিরিক্ত, বৈশিষ্ট্যটি প্রত্যাশার মতো কাজ করে তা নিশ্চিত করার জন্যও পরীক্ষাগুলি উপস্থিত রয়েছে।

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