না একটি গীত সংগ্রহস্থলের মধ্যে , বরং এ GitHub বিশেষভাবে - আমি কিভাবে খুঁজে দেখব শুধু একটি নির্দিষ্ট সংগ্রহস্থলের / শাখার বার্তা কমিট?
না একটি গীত সংগ্রহস্থলের মধ্যে , বরং এ GitHub বিশেষভাবে - আমি কিভাবে খুঁজে দেখব শুধু একটি নির্দিষ্ট সংগ্রহস্থলের / শাখার বার্তা কমিট?
উত্তর:
2017 এর হিসাবে এটি গিটহাব নিজেই অন্তর্ভুক্ত একটি কার্যকারিতা ।
তাদের দ্বারা ব্যবহৃত উদাহরণ অনুসন্ধান repo:torvalds/linux merge:false crypto policy
Https://github.com/blog/2299-search-commit-messages থেকে GIF চিত্র
আপনি এটি করতে সক্ষম হতেন, তবে গিটহব 2013-এর মাঝামাঝি সময়ে এই বৈশিষ্ট্যটি সরিয়ে নিয়েছে। স্থানীয়ভাবে এটি অর্জন করতে, আপনি এটি করতে পারেন:
git log -g --grep=STRING
( -g
আপনি যদি অন্যান্য শাখা এবং ড্যাংলিং কমিটগুলি সন্ধান করতে চান তবে পতাকাটি ব্যবহার করুন ))
-g, --walk-reflogs
Instead of walking the commit ancestry chain, walk reflog entries from
the most recent one to older ones.
-g
সর্বাধিক সাধারণ ব্যবহারের ক্ষেত্রে পতাকাটি বাদ দিতে পরামর্শ দিন । আমি এটিতে খুব বেশি নজর দেইনি, তবে এটির সাথে -g
অনুসন্ধানটি কেবল এক মাস ফিরে যাবে বলে মনে হচ্ছে। git log -g --grep=fix
যখন develop
একটি রেপো আছে ~ 8000 দুই বছর spanning করে শাখা, শুধুমাত্র হিসাবে পর্যন্ত ফিরে 2. ফেব্রুয়ারী যেমন যায়
-g
পতাকাটি সহ কমপক্ষে 5 মাসের মধ্যে ফেরত যেতে চাইছিলাম ।
আপডেট (2017/01/05):
গিটহাব একটি আপডেট প্রকাশ করেছে যা আপনাকে এখন তাদের ইউআইয়ের মধ্যে থেকে প্রতিশ্রুতিবদ্ধ বার্তাগুলির মধ্যে অনুসন্ধান করতে দেয়। আরও তথ্যের জন্য ব্লগ পোস্ট দেখুন ।
আমারও একই প্রশ্ন ছিল এবং গতকাল গিটহাবের কারও সাথে যোগাযোগ করেছি:
যেহেতু তারা তাদের অনুসন্ধান ইঞ্জিনটি ইলাস্টিকসারচে সরিয়ে নিয়েছে গিটহাব ইউআই ব্যবহার করে প্রতিশ্রুতিবদ্ধ বার্তাগুলি সন্ধান করা সম্ভব নয়। তবে সেই বৈশিষ্ট্যটি দলের ইচ্ছার তালিকায় রয়েছে।
দুর্ভাগ্যক্রমে এখনই এই ফাংশনটির জন্য কোনও প্রকাশের তারিখ নেই।
সংক্ষিপ্ত উত্তরটি হল, আপনি github.com ওয়েবসাইটে সরাসরি প্রতিশ্রুতিবদ্ধ বার্তা অনুসন্ধান করতে পারবেন না। আপাতত আমরা git grep
এই থ্রেডের অন্যদের প্রস্তাব স্থানীয় সমাধানের প্রস্তাব দিই ।
একসময় গিটহাব git grep
একক ভাণ্ডারের জন্য কমিট কমিটের বার্তা চেয়ে একটি স্টাইল অনুসন্ধানের প্রস্তাব দেয় । দুর্ভাগ্যক্রমে, এই পদ্ধতির পরিষেবাটির অস্বীকারকে উন্মোচিত করে যা কোনও ফাইল সার্ভারকে অ্যাক্সেসযোগ্য করে তুলতে পারে। এই কারণে, আমরা git grep
অনুসন্ধান সরিয়েছি ।
খামের বর্তমান ব্যাক-এর প্রাক্কলন গিটহাবের কমিটের সংখ্যাটিকে কোথাও ৮০ বিলিয়ন ডলার রাখে। যদিও গুগল ইঞ্জিনিয়াররা আমাদের পিঠে পিছনে হাসেন, এটি ইলাস্টিক অনুসন্ধানে সঞ্চয় করার জন্য একটি বৃহত সংখ্যক নথি। আমরা এই ডেটাসেটটিকে অনুসন্ধানযোগ্য করে তুলতে চাই, তবে এটি তুচ্ছ প্রকল্প নয়।
git diff's
করে
এটি গিটহাব থেকে সরানো হয়েছে। আমি ব্যবহার করি:
$git log --all --oneline | grep "search query"
আপনি লেখক দ্বারাও ফিল্টার করতে পারেন:
$git log --all --oneline --author=rickhanlonii | grep "search query"
অনুসন্ধানের কোডের সহায়তা পৃষ্ঠা থেকে মনে হয় এটি এখনও সম্ভব নয়।
অনুসন্ধানের জন্য ফাইল বা পাথ বেছে নেওয়ার ক্ষমতা সহ আপনি আপনার সংগ্রহশালায় পাঠ্যের সন্ধান করতে পারেন, তবে আপনি কমিটে অনুসন্ধান করতে চান তা নির্দিষ্ট করতে পারবেন না।
হয়তো তাদের এই সুপারিশ ?
আপনি গুগল দ্বারা ক্রল করা ভান্ডারগুলি দিয়ে এটি করতে পারেন (ফলাফলগুলি সংগ্রহস্থল থেকে সংগ্রহস্থল পর্যন্ত পরিবর্তিত হয়)।
"লাইসেন্স পরিবর্তন করুন" সাইট: https://github.com/*/*/commits
"লাইসেন্স পরিবর্তন করুন" সাইট: https://github.com/*/*/commits/master
"লাইসেন্স পরিবর্তন করুন" সাইট: https://github.com/twitter/*/commits/master
"লাইসেন্স পরিবর্তন করুন" সাইট: https://github.com/twitter/some_project/commits
জানুয়ারী 2017 আপডেট করুন (দুই বছর পরে):
আপনি এখন প্রতিশ্রুতিবদ্ধ বার্তা অনুসন্ধান করতে পারেন ! (এখনও কেবলমাত্র মাস্টার শাখায়)
ফেব্রুয়ারী ২০১৫: ইলাস্টিকসার্কের বর্তমান অনুসন্ধান অবকাঠামো বেস ( জানুয়ারী ২০১৩ সালে প্রবর্তিত) বিবেচনা করে এটি যে কখনও সম্ভব হয়েছে তা নিশ্চিত নয় ) ।
একটি উত্তর হিসাবে "বিশ্বাসযোগ্য এবং / বা সরকারী উত্স থেকে অঙ্কন", এখানে গিটহাবের ইলাস্টিকারচ পরিচয় করানোর দায়িত্বে গিটহাবের লোকদের সাথে করা একটি সাক্ষাত্কার দেওয়া হয়েছে (আগস্ট ২০১৩)
টিম পিস : আমাদের সেখানে দুটি নথির প্রকার রয়েছে: একটি সোর্স কোড ফাইল এবং অন্যটি হ'ল একটি সংগ্রহস্থল। গিট যেভাবে কাজ করে তা হ'ল আপনার প্রতিশ্রুতিবদ্ধ এবং প্রতিটি প্রতিশ্রুতির জন্য আপনার একটি শাখা রয়েছে। সংগ্রহস্থল ডকুমেন্টগুলি সূচকযুক্ত সেই নির্দিষ্ট ভাণ্ডারের জন্য সর্বাধিক সাম্প্রতিক প্রতিশ্রুতি রাখে। যখন ব্যবহারকারী গিথুবকে একটি নতুন প্রতিশ্রুতি দেয়, তখন আমরা স্থিতিস্থাপক অনুসন্ধান থেকে সেই সংগ্রহস্থল ডকুমেন্টটি টানি। তারপরে আমরা সর্বাধিক সূচিকৃত প্রতিশ্রুতি দেখতে পাই এবং তারপরে আমরা সাম্প্রতিক পুশ এবং আমরা পূর্বে সূচীকরণকৃত কিছুর মধ্যে সংশোধিত, বা যুক্ত করা বা মুছে ফেলা সমস্ত ফাইলের একটি তালিকা পাই। তারপরে আমরা এগিয়ে যেতে পারি এবং কেবলমাত্র সেই ডকুমেন্টগুলি আপডেট করা যেতে পারে যা পরিবর্তন করা হয়েছে। প্রতিবার কেউ যখন চাপ দেয় তখন আমাদের পুরো উত্স কোড ট্রিটিকে পুনরায় সূচীকরণ করতে হবে না।
অ্যান্ড্রু চোলাকিয়ান: সুতরাং, তোমরা সবাই কেবল সূচক, আমি ধরে নিচ্ছি, মাস্টার শাখা।
টিম পীজ: সঠিক। এটি কেবলমাত্র মাস্টার শাখার প্রধান যে আপনি সেখানে যাবেন এবং এখনও এটি প্রচুর ডেটা, দুই বিলিয়ন ডকুমেন্ট, 30 টেরাবাইট।
অ্যান্ড্রু চোলাকিয়ান: এটি দুর্দান্তভাবে বিশাল।
[...]
টিম পীজ: পুশ করার সূচক কোডটি সহ, এটি একটি স্ব-নিরাময় প্রক্রিয়া।
আমাদের কাছে সেই সংগ্রহস্থল ডকুমেন্ট রয়েছে যা সর্বশেষ সূচকযুক্ত প্রতিশ্রুতি ট্র্যাক করে। যদি আমরা মিস করি, কেবল সেই তিনটি কমিট মিস করতে হবে যেখানে সেই চাকরীগুলি ব্যর্থ হয়, পরবর্তী প্রতিশ্রুতি আসে যা আমরা এখনও পূর্বের প্রতিশ্রুতিগুলির মধ্যে পার্থক্যটির দিকে তাকিয়ে থাকি যা আমরা সূচকযুক্ত এবং আমরা এই নতুন ধাক্কা দিয়ে দেখছি।
আপনি একটি করেনgit diff
এবং আপডেট করা, মুছে ফেলা বা যুক্ত করা সমস্ত ফাইল আপনি পান। আপনি কেবল বলতে পারেন, "ঠিক আছে, আমাদের এই ফাইলগুলি সরানো দরকার need আমাদের এই ফাইলগুলি এবং সমস্ত কিছু যুক্ত করতে হবে। " এটি স্ব-নিরাময় এবং এটিই আমরা প্রায় সমস্ত স্থাপত্যের সাথে গ্রহণ করেছি ure
এর অর্থ হ'ল সমস্ত রেপোর সমস্ত শাখা সেই পদ্ধতির সাথে সূচিযুক্ত হবে না।
একটি আন্তর্জাতিক প্রতিশ্রুতি বার্তা অনুসন্ধান আপাতত উপলভ্য নয়।
এবং টিম পিজ নিজেই নিশ্চিত করেছেন প্রতিশ্রুতিবদ্ধ বার্তাগুলি ইনডেক্স করা হয়নি ।
মনে রাখবেন যে স্থানীয় ক্লোনটির নিজস্ব ইলাস্টিক অনুসন্ধান স্থানীয় সূচিপত্র পাওয়া অসম্ভব নয়: দেখুন " ইলাস্টিক অনুসন্ধানের সাথে গিট সংগ্রহস্থল অনুসন্ধান করা "
তবে একটি নির্দিষ্ট রেপোর জন্য, এটি ক্লোন করা এবং একটি করা সহজতম অবশেষ:
git log --all --grep='my search'
(" প্রতিশ্রুতি বার্তার মাধ্যমে গিট সংগ্রহস্থল কীভাবে সন্ধান করবেন? " এ আরও বিকল্পসমূহ )
যেহেতু এটি গিটহাব থেকে সরানো হয়েছে, তাই এটি করার জন্য আমি gitk
লিনাক্সে ব্যবহার করছি ।
টার্মিনাল থেকে আপনার সংগ্রহস্থলে যান এবং টাইপ করুন gitk
।
জিইউআইয়ের মাঝখানে একটি অনুসন্ধান বাক্স রয়েছে। এটি ফিল্টারগুলির একটি ভাল নির্বাচন সরবরাহ করে:
স্কোপ - ধারণ করে, পায়ে স্পর্শ করা, স্ট্রিং যুক্ত করা / অপসারণ, লাইন ম্যাচ পরিবর্তন করা
ম্যাচের ধরণ - সঠিক / IgnCase / Regexp
ক্ষেত্রগুলি অনুসন্ধান করুন - সমস্ত ক্ষেত্র / শিরোনাম / মন্তব্য / প্রতিশ্রুতিবদ্ধ
এটি গ্রিপসের মধ্যে থেকেই ভাল কাজ করে , যতক্ষণ না গিটহাব বৈশিষ্ট্যটি যুক্ত করে:
আপনার যদি ভাণ্ডারের স্থানীয় সংস্করণ থাকে, আপনি আপনার ডিফল্ট ব্রাউজারে নতুন অনুসন্ধান ট্যাবগুলিতে আপনার অনুসন্ধানের শব্দটির সাথে মেলে সমস্ত কমিটের জন্য গিটহাব পৃষ্ঠাগুলি খোলার জন্য লিখেছিলাম এই অশোধিত শেল স্ক্রিপ্টটি চেষ্টা করতে পারেন:
#!/bin/sh
for sha1 in $(git rev-list HEAD -i --grep="$1"); do
python -mwebbrowser https://github.com/RepoOwnerUserName/RepoName/commit/$sha1 >/dev/null 2>/dev/null
done
কেবলমাত্র https://github.com/RepoOwnerUserName/RepoName/
আপনার সংগ্রহস্থলের আসল গিটহাব ইউআরএল প্রতিস্থাপন করুন, স্ক্রিপ্টটি কোথাও সংরক্ষণ করুন (যেমন githubsearch.sh
, এটি কার্যকরকরণযোগ্য করুন chmod +x githubsearch.sh
) এবং তারপরে নীচের উপন্যাসটি আপনার যুক্ত করুন~/.bashrc
ফাইলটিতে করুন:
alias githubsearch='/path/to/githubsearch.sh'
তারপরে, আপনার গিট সংগ্রহস্থলের যে কোনও জায়গা থেকে, টার্মিনালে এটি করুন:
githubsearch "what you want to search for"
এবং আপনার (কেস সংবেদনশীল) অনুসন্ধানের শব্দটির সাথে মেলে এমন কোনও প্রতিশ্রুতিগুলিতে আপনার ব্রাউজারে তাদের সম্পর্কিত গিটহাব পৃষ্ঠা খোলা থাকবে। (সতর্কতা অবলম্বন করুন যে যদি আপনার অনুসন্ধান শব্দটি শত শত কমিটে উপস্থিত হয় তবে এটি আপনার ব্রাউজারটি ক্র্যাশ করতে পারে এবং কিছুক্ষণের জন্য আপনার পিসির সিপিইউ খায়))