গিট রেভ-পার্স কী করে?


282

কি করে git rev-parse?

আমি ম্যান পৃষ্ঠাটি পড়েছি তবে এটি উত্তরের চেয়ে আরও বেশি প্রশ্ন উত্থাপন করেছে। ভালো জিনিস:

প্যারামিটারগুলি বেছে নিন এবং ম্যাসেজ করুন

ম্যাসেজ ? ওটার মানে কি?

আমি রিভিশন স্পেসিফায়ারদের (যেমন SHA1) এর সমাধানকারী হিসাবে ব্যবহার করছি like

git rev-parse HEAD^

অথবা

git rev-parse origin/master

এটাই কি আদেশের উদ্দেশ্য? যদি তা না হয় তবে এটি অর্জনের জন্য এটি ব্যবহার করা কি সঠিক?


3
ম্যান পৃষ্ঠাতে যতদূর আমি দেখতে পাচ্ছি, অন্যান্য কমান্ডের জন্য পুনর্বিবেচনা / অবজেক্টের নাম পার্স করার এটি বেশিরভাগ অভ্যন্তরীণ ইউটিলিটি। আপনি যা করছেন তা হ'ল rev-parseকমান্ডের উদ্দেশ্য । আপনি এটি কমান্ড লাইনের স্বাভাবিককরণের জন্যও ব্যবহার করতে পারেন, যাতে প্রকৃত প্রোগ্রামটি গিটের জটিল অবজেক্ট নাম সিনট্যাক্সটি বুঝতে না পারে (আপনি git rev-parseপরিবর্তনের জন্য ব্যবহার করতে চান , বা "ম্যাসেজ", কমান্ড লাইনের নির্দিষ্ট পরামিতিগুলির আগে প্রকৃত প্রোগ্রাম বলা হয়)।

আরও দেখুন github.com/git/git/commit/…
ভনসি

60
ম্যান পেজটি git rev-parseহাস্যকরভাবে অপ্রয়োজনীয়। আমি অবাক হয়েছি যে 5 বছর পরেও কেউ এই পাঠকটিকে মানুষের পাঠযোগ্য কিছুতে আবারও লিখতে ভাবেনি।
not2qubit

@ not2qubit Me: 'স্পষ্ট করার জন্য আপনাকে ধন্যবাদ, আমি নিকৃষ্ট অনুভব করছিলাম।' লিনাস টোরভাল্ডস: 'আমি এটি আবার পড়লাম, ঠিক কোন অংশটি আপনি বুঝতে পারেন নি?'
ব্রেইন 2000

উত্তর:


245

git rev-parseplumbingপ্রাথমিকভাবে ম্যানিপুলেশনের জন্য ব্যবহৃত একটি আনুষঙ্গিক কমান্ড।

এর একটি সাধারণ ব্যবহার git rev-parseহ'ল একটি সংশোধন নির্দিষ্টকারী প্রদত্ত SHA1 হ্যাশগুলি মুদ্রণ করা। তদতিরিক্ত, এই আউটপুটটি ফর্ম্যাট করার বিভিন্ন বিকল্প রয়েছে যেমন --shortএকটি স্বল্প অনন্য SHA1 মুদ্রণের জন্য।

এছাড়াও অন্যান্য ব্যবহারের কেস রয়েছে (স্ক্রিপ্ট এবং গিটের উপরে নির্মিত অন্যান্য সরঞ্জামগুলিতে) যা আমি ব্যবহার করেছি:

  • --verify নির্দিষ্ট বস্তুটি একটি বৈধ গিট বস্তু কিনা তা যাচাই করতে to
  • --git-dir.gitডিরেক্টরিটির অ্যাবস / আপেক্ষিক পথ প্রদর্শন করার জন্য ।
  • আপনি বর্তমানে কোনও ব্যবহারকারীর --is-inside-git-dirগাছ ব্যবহার করে বা কোনও কাজের গাছের মধ্যে রয়েছেন কিনা তা পরীক্ষা করা হচ্ছে--is-inside-work-tree
  • রেপো খালি ব্যবহার করে কিনা তা পরীক্ষা করা হচ্ছে --is-bare-repository
  • শাখাগুলির ( --branches), ট্যাগগুলি ( --tags) এবং রেফগুলি ছাপানোও রিমোটের ভিত্তিতে (ব্যবহার করে --remote) ফিল্টার করা যায়
  • --parse-optস্ক্রিপ্টে আর্গুমেন্টগুলি স্বাভাবিক করার জন্য (এর মতো ধরণের getopt) এবং এর সাথে ব্যবহার করা যেতে পারে এমন আউটপুট স্ট্রিং মুদ্রণ করতেeval

Massageকেবল ইঙ্গিত দেয় যে তথ্যকে একটি ফর্ম থেকে অন্য রূপান্তর করা অর্থ একটি রূপান্তর কমান্ডে রূপান্তর করা সম্ভব। এগুলি কয়েকটি দ্রুত উদাহরণ যা আমি ভাবতে পারি:

  • কমিটের SHA1 তে একটি শাখা বা ট্যাগের নাম এটি নির্দেশ করছে যাতে এটি একটি নদীর গভীরতানির্ণয় কমান্ডে যেতে পারে যা কেবল কমিটের জন্য SHA1 মান গ্রহণ করে।
  • অন্তর্নিহিত প্লাম্বিং কমান্ড হিসাবে সমতুল্য আর্গুমেন্টগুলির A..Bজন্য git logবা এর জন্য একটি সংশোধন সীমাgit diffB ^A

102

কমান্ডের নামটির ব্যুৎপত্তিটি ব্যাখ্যা করার জন্য rev-parse, গিট ধারাবাহিকভাবে revপ্লাম্বিং কমান্ডগুলিতে "রিভিশন" এর সংক্ষিপ্ত হিসাবে ব্যবহার করেন এবং সাধারণত প্রতিশ্রুতি হিসাবে 40-অক্ষর SHA1 হ্যাশ অর্থ। কমান্ড rev-listউদাহরণস্বরূপ একটি শাখার জন্য 40-চারটি কমিট হ্যাশগুলির তালিকা মুদ্রণ করে।

এই ক্ষেত্রে নামটি প্রসারিত হতে পারে parse-a-commitish-to-a-full-SHA1-hash। কমান্ডটিতে টাক্সডুডের উত্তরে বর্ণিত বেশ কয়েকটি আনুষঙ্গিক ফাংশন রয়েছে, তবে এর নামজামটি অনেক প্রোগ্রামিং / প্লাম্বিংয়ের জন্য সবচেয়ে কার্যকর 40-বর্ণের SHA1 হ্যাশকে একটি শাখার নাম বা সংক্ষিপ্ত হ্যাশের মতো ব্যবহারকারী-বান্ধব রেফারেন্সকে রূপান্তর করার ব্যবহার হিসাবে দেখা যাচ্ছে উদ্দেশ্য।

আমি জানি আমি এটি "রিভার্স-পার্স" করার কিছুক্ষণ ভাবছিলাম এবং এটি "ম্যাসেজিং" এবং "হেরফের" শব্দের অনুভূতি তৈরি করতে একই সমস্যা হয়েছিল :)

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


9
ব্যাখ্যার জন্য ধন্যবাদ, আমি গিট- ডক্সটি
জ্যাকব ম্যাককে

আপনি কি আমাদের পূর্বে উদাহরণ হিসাবে messagingএবং উদাহরণ manipulationহিসাবে দিতে পারেন ?
বো চেন

5
অন্য কথায়, এর git rev-parseজন্য সংক্ষিপ্ত git revision-parse। এটি প্রদত্ত ইনপুট নেয় এবং সংশ্লিষ্ট 40-অক্ষর সংশোধন ID প্রদান করে।
জোনাথন বেন

36

git rev-parseএছাড়াও বর্তমান শাখার নামটি --abbrev-ref পতাকা ব্যবহার করে পাওয়ার জন্য কাজ করে :

git rev-parse --abbrev-ref HEAD

এভাবে প্রতিশ্রুতিবদ্ধ বার্তা পাওয়া কি পপসেসযোগ্য?
লিও ড্রয়েডকোডার

2
@ লিওড্রয়েডকোডার চেষ্টা করুনgit log --format=%B -n 1 <revision>
হিপহপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.