স্থানীয় / প্রত্যন্ত শাখার নাম দেওয়া, আমি এই শাখাটি যে প্রতিশ্রুতিবদ্ধ তা প্রতিশ্রুতি দেওয়ার হ্যাশ পেতে পারি?
স্থানীয় / প্রত্যন্ত শাখার নাম দেওয়া, আমি এই শাখাটি যে প্রতিশ্রুতিবদ্ধ তা প্রতিশ্রুতি দেওয়ার হ্যাশ পেতে পারি?
উত্তর:
আদেশটি git rev-parseআপনার বন্ধু, যেমন:
$ git rev-parse development
17f2303133734f4b9a9aacfe52209e04ec11aff4
... বা রিমোট ট্র্যাকিং শাখার জন্য:
$ git rev-parse origin/master
da1ec1472c108f52d4256049fe1f674af69e785d
এই কমান্ডটি সাধারণত খুব কার্যকর, যেহেতু এটি শাখার নাম নির্দিষ্ট করার যে কোনও উপায়ে পার্স করতে পারে git, যেমন:
git rev-parse master~3
git rev-parse HEAD@{2.days.ago}
... ইত্যাদি
fooকরতে পারেন:git log --pretty=format:'%H'
def BranchHash = sh "git rev-parse ${BRANCH-NAME}আমি পেয়ে করছি: fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.। কি সমস্যা?
হ্যাশগুলি নীচে সংরক্ষণ করা হয় .git/refs/, যেমন.git/refs/heads/master
তবে git rev-parseনিরাপদ হিসাবে মার্ক লংএয়ারের পরামর্শ অনুসারে প্রোগ্রামক্রমে ব্যবহার করুন ।
গিট 2.19 (Q2 2018) থেকে ভুলে যাবেন না, গিট SHA1 হ্যাশগুলি থেকে SHA2 এ রূপান্তর প্রস্তুত করে: দেখুন " গিট কেন আরও আধুনিক এসএইচএ ব্যবহার করে না? "
গিট 2.25 (কিউ 12020) সহ, git rev-parseসম্ভাব্য নতুন হ্যাশটি বিকশিত হয় এবং প্রতিফলিত করে।
দেখুন fa26d5e কমিট , cf02be8 কমিট , 38ee26b কমিট , কমিট 37ab8eb , কমিট 0370b35 , কমিট 0253e12 , কমিট 45e2ef2 , 79b0edc কমিট , কমিট 840624f , কমিট 32a6707 , কমিট 440bf91 , 0b408ca কমিট , কমিট 2eabd38 (28 অক্টোবর 2019), এবং 1bcef51 কমিট , কমিট ecde49b (05 অক্টোবর 2019) ব্রায়ান মি। কার্লসন ( bk2204) ।
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে 28014c1 কমিট, 10 নভেম্বর 2019)
rev-parse: একটি--show-object-formatবিকল্প যুক্ত করুনসাইন-অফ-বাই: ব্রায়ান মি। কার্লসন
ইনপুট, আউটপুট, বা সঞ্চয়ের জন্য ব্যবহৃত অবজেক্ট ফর্ম্যাটটি মুদ্রণের জন্য একটি বিকল্প যুক্ত করুন।
এটি শেল স্ক্রিপ্টগুলিকে ব্যবহৃত হ্যাশ অ্যালগরিদম আবিষ্কার করতে সহায়তা করে।
যেহেতু রূপান্তর পরিকল্পনা একাধিক ইনপুট অ্যালগরিদমগুলির জন্য মঞ্জুরি দেয়, এমন নথি যা আমরা ইনপুটটির জন্য একাধিক ফলাফল সরবরাহ করতে পারি এবং ফলাফলগুলি যে ফর্ম্যাটটি গ্রহণ করতে পারে।
যদিও আমরা এখন এটি সমর্থন করি না, তাড়াতাড়ি নথিভুক্ত করার অর্থ হ'ল স্ক্রিপ্ট লেখকরা যখন করবেন তখন তাদের স্ক্রিপ্টগুলি ভবিষ্যতের প্রমাণ করতে পারে।
git rev-parseডকুমেন্টেশন এখন রয়েছে:
--show-object-format[=(storage|input|output)]:
.gitডিরেক্টরি, ইনপুট বা আউটপুট এর ভিতরে সঞ্চয়স্থানের জন্য সংগ্রহস্থলের জন্য ব্যবহৃত অবজেক্ট ফর্ম্যাট (হ্যাশ অ্যালগরিদম) দেখান । ইনপুট জন্য, একাধিক অ্যালগরিদম মুদ্রিত হতে পারে, স্থান পৃথকী। নির্দিষ্ট না করা থাকলে ডিফল্টটি হ'ল "স্টোরেজ"।
গিট 2.29 (কিউ 42020) এর সাহায্যে আপনি কোনও ব্রাঞ্চের হ্যাশ কমিট (বা অন্য কোনও বিষয়) পড়তে অবশ্যই কোন ফর্ম্যাটটি ব্যবহার করতে হবে তা নিশ্চিত করতে পারেন।
দেখুন e023ff0 কমিট , 4feb562 কমিট , 8a06d56 কমিট , c49fe07 কমিট , 02a32db কমিট , ceaa4b3 কমিট , eff45da কমিট , b5b46d7 কমিট , কমিট c5aecfc , কমিট e74b606 , কমিট 439d3a1 , কমিট 6c2adf8 , de5737c কমিট , কমিট e0a646e , কমিট 6ff6a67 , 831279d কমিট , কমিট b6e5005 , প্রতিশ্রুতি 287bb3a , প্রতিশ্রুতি 22f1824 , প্রতিশ্রুতি db00af9 ,7187eb1 কমিট , কমিট 98de0b2 , কমিট a5587b8 , কমিট 66b6d43 , 2197f87 কমিট , c0b65ea কমিট , d62607d কমিট , কমিট d482c23 , কমিট 866be6e , 4bacb6d কমিট , কমিট 252a4ee , 368f3cb কমিট , কমিট abe3db1 , কমিট 08fbc5d , কমিট 11b6961 , 9e3bd8a কমিট , d827bce কমিট , প্রতিশ্রুতিবদ্ধ 094a685 (29 জুলাই 2020) ব্রায়ান মি। কার্লসন ( bk2204) ।
দেখাজোহানেস dschoশিন্ডেলিন () দ্বারা 800e6a7 (29 জুলাই 2020 ) প্রতিশ্রুতিবদ্ধ ।
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট e0ad957 , 11 আগস্ট 2020)
docs: এর জন্য ডকুমেন্টেশন যুক্ত করুনextensions.objectFormatসাইন-অফ-বাই: ব্রায়ান মি। কার্লসন
পর্যালোচনা দ্বারা: এরিক সানশাইন
extensions.objectFormatকনফিগার সেটিংস নথি ।
ব্যবহারকারীদের এটিকে নিজেরাই সংশোধন না করার জন্য সতর্ক করুন।
git configএখন এর ম্যান পৃষ্ঠাতে অন্তর্ভুক্ত :
extensions.objectFormatব্যবহারের জন্য হ্যাশ অ্যালগরিদম নির্দিষ্ট করুন।
গ্রহণযোগ্য মানগুলি
sha1এবং>sha256।
নির্দিষ্ট না হলেsha1ধরে নেওয়া হয়। 1
নাcore.repositoryFormatVersionহওয়া পর্যন্ত এই কীটি নির্দিষ্ট করা ত্রুটি ।দ্রষ্টব্য যে এই সেটিংটি কেবল
git initবা দ্বারা সেট করা উচিতgit clone।
আরম্ভের পরে এটি পরিবর্তন করার চেষ্টা করা কার্যকর হবে না এবং হার্ড-ডায়াগনোসিস সমস্যাগুলি তৈরি করবে।
পরিষ্কার হওয়ার জন্য, গিট 2.29 (Q4 2020) এর সাথে SHA-256 সমর্থনটির সাম্প্রতিক সংযোজন ডকুমেন্টেশনে পরীক্ষামূলক হিসাবে চিহ্নিত করা হয়েছে।
দেখুন কমিট ff233d8 দ্বারা (16 আগস্ট 2020) মার্টিন Ågren ( none) ।
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট d1ff741 , 24 আগস্ট 2020)
Documentation:--object-format=sha256পরীক্ষামূলক হিসাবে চিহ্নিত করুনসাইন-অফ-বাই: মার্টিন renগ্রেন
পরে eff45daab8 ( "
repository: enable ডিফল্টরূপে রয়েছে SHA-256 সমর্থন", 2020-07-29, গীত v2.29.0 - একত্রীকরণ তালিকাভুক্ত ব্যাচ 6 নম্বর ), ভ্যানিলা গীত এর তৈরী করে চালানোর জন্য ব্যবহারকারী সক্ষম, যেমন,git init --object-format=sha256এবং হ্যাক দূরে।
এটি SHA-256 বিশ্বের সাথে অভিজ্ঞতা অর্জনের একটি ভাল উপায় হতে পারে, যেমন বাগগুলি খুঁজে পেতেGIT_TEST_DEFAULT_HASH=sha256 make testস্পট না।
তবে এটি সত্যিই একটি পৃথক বিশ্ব: এই জাতীয় SHA-256 টি প্রতিস্থাপন SHA-1 রেপোসের (বর্তমানে মোটামুটি বড়) সেট থেকে সম্পূর্ণ পৃথকভাবে বাস করবে।
সীমান্তের ওপারে আলাপচারিতা নীতিগতভাবে সম্ভব, উদাহরণস্বরূপ, "diff+apply" (বা "format-patch+am") এর মাধ্যমে, তবে এর সীমাবদ্ধতাও রয়েছে: একটি SHA-1 রেপোতে SHA-256 ডিফের প্রয়োগ করা সহজ ক্ষেত্রে কাজ করে তবে আপনি যদি অবলম্বন করা দরকার-3, আপনার ভাগ্যের বাইরে।একইভাবে, "
push+pull" কাজ করা উচিত, তবে আপনি সত্যিই বেশিরভাগ বিশ্বের বাকি থেকে অফসেট পরিচালনা করবেন। আপনি আপনার সংগ্রহস্থলটি আরম্ভ করার সময়টি ঠিক হয়ে যেতে পারে এবং এর পরে বেশ কয়েক মাস ধরে ঠিক থাকতে পারে, তবে এমন একদিন আসতে পারে যখন আপনি[গিট ইআর --object-format = sha256 ব্যবহারের জন্য অনুশোচনা শুরু করছেন](https://github.com/git/git/blob/ff233d8dda12657a90d378f2b403bc6c85838c59/Documentation/git-init.txt#L52)<sup>([man](https://git-scm.com/docs/git-init#Documentation/git-init.txt---object-formatltformatgt))</sup>এবং নিজেকে মোটামুটি গভীর গর্তে খনন করুন।SHA-256 এবং আমাদের কিছু ক্ষেত্রে (মিডেক্স এবং কমিট গ্রাফ) সম্পর্কিত আমাদের ডেটা ফর্ম্যাট এবং প্রোটোকলগুলি ডকুমেন্ট করার জন্য বিমানগুলিতে বর্তমানে বিষয়গুলি রয়েছে, আমরা কীভাবে ফাইল ফর্ম্যাটগুলি নির্দেশ করতে পারি যে কোন অবজেক্ট ফর্ম্যাটটি ব্যবহার করতে হবে।
--object-formatআমাদের ডকুমেন্টেশনে যেখানেই উল্লেখ করা হয়েছে, আসুন এটি পরিষ্কার করুন যে "sha256" এর সাথে এটি ব্যবহার পরীক্ষামূলক।
আমাদের যদি পরে ব্যাখ্যা করতে হয় যে আমরা কেন ২০২০ সালে পুনরায় উত্পন্ন ডেটা হ্যান্ডেল করতে পারি না, আমরা সর্বদা এখানে অনুচ্ছেদটি যুক্ত করছি to"অন্তর্ভুক্ত ::" - দ্বারা একটি ছোট ব্লার্বিং করা, আমাদের ডকুমেন্টেশন জুড়ে সুসংগত হতে সক্ষম হওয়া উচিত এবং ধীরে ধীরে এই পাঠ্যের তীব্রতাটি কমাতে পারি।
একদিন, আমরা এমনকি এটি পর্যায়ক্রমে শুরু করতে ব্যবহার করতে পারি--object-format=sha1, তবে আসুন আমরা নিজের থেকে এগিয়ে যাই না ...এছাড়াও আছে
extensions.objectFormat, তবে এটি কেবল তিনবার উল্লেখ করা হয়েছে। দু'বার যেখানে আমরা এই নতুন দাবিটি যুক্ত করছি এবং তৃতীয় স্থানে ইতিমধ্যে আমাদের "সম্পাদনা করবেন না" সতর্কতা রয়েছে। সেখান থেকে আগ্রহী পাঠকদের শেষ পর্যন্ত এই নতুনটি খুঁজে পাওয়া উচিত যা আমরা এখানে যুক্ত করছি।কারণ
GIT_DEFAULT_HASHএই কার্যকারিতাটিতে অন্য প্রবেশের বিন্দু সরবরাহ করে, এটির পরীক্ষামূলক প্রকৃতিরও নথি করুন।
gitএখন এর ম্যান পৃষ্ঠাতে অন্তর্ভুক্ত :
পরিবর্তে ব্যবহৃত হয়। ডিফল্টটি "sha1"। এই পরিবর্তনশীল বাস্তব! দেখুন
--object-formatমধ্যেgit init।
object-format-disclaimerএখন এর ম্যান পৃষ্ঠাতে অন্তর্ভুক্ত :
এই বিকল্পটি ব্যবহারিক!
SHA-256 সহায়তা পরীক্ষামূলক এবং এখনও প্রাথমিক পর্যায়ে।একটি SHA-256 সংগ্রহস্থল সাধারণত "নিয়মিত" SHA-1 সংগ্রহস্থলের সাথে কাজ ভাগ করতে সক্ষম হয় না।
এটি ধরে নেওয়া উচিত, যেমন, SHA-256 সংগ্রহগুলির ক্ষেত্রে গিট অভ্যন্তরীণ ফাইল ফর্ম্যাটগুলি পিছনের দিকে-অসামঞ্জস্য উপায়ে পরিবর্তন হতে পারে।
কেবল--object-format=sha256পরীক্ষার উদ্দেশ্যে ব্যবহার করুন।
একই গিট 2.29 (কিউ 42020) নিশ্চিত করুন যে SHA-1 সংগ্রহস্থল থেকে একটি ক্লোন যখন SHA-256 ইতিমধ্যে ব্যবহারের জন্য সেট করা আছে তখন " git clone" ( লোক ) কাজ করবে GIT_DEFAULT_HASH।
২.২ Before এর আগে, এর ফলে একটি অকেজো রিপোজিটরির ফলস্বরূপ যে SHA-1 অবজেক্টস এবং রেফগুলি সহ অর্ধ-দাবি SHA-256 সংগ্রহস্থল হিসাবে দাবি করে।
এটি সংশোধন করা হয়েছে।
দেখুন কমিট 47ac970 দ্বারা (20 সেপ্টেম্বর 2020) ব্রায়ান মি। কার্লসন ( bk2204) ।
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট b28919c , 29 সেপ্টেম্বর 2020)
builtin/clone: সঙ্গে ব্যর্থতা এড়ানোGIT_DEFAULT_HASHরিপোর্ট-বাই: ম্যাথিউস টাভারেস
সাইন-অফ-বাই: ব্রায়ান মি। কার্লসন
যদি কোনও ব্যবহারকারী
GIT_DEFAULT_HASH"sha256" সেট করে একটি SHA-1 সংগ্রহস্থলটির ক্লোনিং করে থাকেন তবে আমরা একটি সংগ্রহস্থলটি শেষ করতে পারি যেখানে সংগ্রহস্থলের বিন্যাসের সংস্করণ 0 থাকে তবেextensions.objectformatকীটি সেট করা থাকে "sha256"।
এটি উভয়ই ভুল (ব্যবহারকারীর একটি SHA-1 সংগ্রহস্থল রয়েছে) এবং অরক্ষণীয় (কারণ এক্সটেনশনটি কোনও v0 সংগ্রহস্থানে ব্যবহার করা যাবে না)।এটি হ'ল কারণ কোনও ক্লোন হয়ে আমরা প্রথমে সংগ্রহস্থল সেট আপ করি এবং তারপরে দূরবর্তী দিকটি আমাদের এটি কী ব্যবহার করে তা বলে তার ভিত্তিতে এর অ্যালগরিদম পরিবর্তন করি।
আমরা প্রাথমিকভাবে এই ক্ষেত্রে SHA-256 হিসাবে সংগ্রহস্থল সেট আপ করেছি এবং তারপরে পরে এক্সটেনশানটি সাফ না করে পুনরায় সংগ্রহস্থল সংস্করণ পুনরায় সেট করার জন্য।আমরা এই ক্ষেত্রে কেবল সর্বদা এক্সটেনশানটি সেট করতে পারতাম, তবে এর অর্থ হ'ল আমাদের এসএএএ -1 সংগ্রহস্থলগুলি পুরানো গিট সংস্করণগুলির সাথে সামঞ্জস্যপূর্ণ ছিল না, যদিও তাদের না হওয়ার কোনও কারণ নেই।
এবং আমরা প্রথমে SHA-1 হিসাবে সংগ্রহস্থলটি আরম্ভ করতে চাই না, যেহেতু এর অর্থ যদি আমরা একটি খালি সংগ্রহস্থলটি ক্লোন করে দিই, তবে আমরাGIT_DEFAULT_HASHভেরিয়েবলটি সম্মান করতে ব্যর্থ হয়েছি এবং একটি SHA-1 সংগ্রহস্থল দিয়ে শেষ করব না একটি SHA-256 সংগ্রহস্থল।এর মধ্যে কোনওটিই আবেদন করছে না, সুতরাং আমরা যদি SHA-1 ব্যবহার করি তবে এক্সটেনশনটি সাফ করার জন্য, যদি আমরা এটির মতো একটি পুনর্নির্মাণ করছি এবং যদি তাই হয় তবে, সংগ্রহস্থল সূচনা কোডটি বলি।
এটি নিশ্চিত করে যে আমরা একটি বৈধ এবং কার্যকরী ভান্ডার তৈরি করেছি এবং আমাদের অন্যান্য ব্যবহারের কেস ভাঙবে না।