গিট - ফাইল যেখানে যুক্ত করা হয়েছিল তা সন্ধান করুন Find


208

বলুন আমার কাছে এমন একটি ফাইল রয়েছে foo.jsযা কিছু সময় আগে প্রতিশ্রুতিবদ্ধ হয়েছিল। এই ফাইলটি প্রথম যুক্ত করা হয়েছিল এমন জায়গায় আমি কেবল প্রতিশ্রুতি সন্ধান করতে চাই।

উত্তরগুলি পড়ার পরে এবং আমার নিজের কৌতুক, এটি আমার পক্ষে কাজ করে

git log --follow --diff-filter=A --find-renames=40% foo.js

উত্তর:


316

পাইপলাইনের দরকার নেই, এটি করার সহজ, এখানে "খাঁটি গিট" উপায়:

git log --diff-filter=A -- foo.js

ডকুমেন্টেশন চেক করুন। আপনি মুছে ফেলা, পরিবর্তিত ইত্যাদির জন্য একই জিনিস করতে পারেন

https://git-scm.com/docs/git-log#Documentation/git-log.txt---diff-filterACDMRTUXB82308203

এটির জন্য আমার একটি সহজ উপকরণ আছে, কারণ আমি সর্বদা এটি ভুলে যাই:

git config --global alias.whatadded 'log --diff-filter=A'

এটি এটিকে এত সহজ করে তোলে:

git whatadded -- foo.js

নিচের মাছ ধরার নৌকা যাও recursively উপ ডিরেক্টরি মাধ্যমে অনুসন্ধান করবে $PWDজন্য foo.jsফাইলে সরবরাহ এবং পরম বা আপেক্ষিক পাথ না করেও, কিংবা একই ডিরেক্টরির মধ্যে হতে ফাইল প্রয়োজন হবে$PWD

git log --diff-filter=A -- **foo.js

27
+1 টি! যাইহোক, আমার ফাইলটি একটি সাবফোল্ডারে ছিল, সুতরাং আমি সামনে একটি নক্ষত্র যুক্ত করার পরে কেবল কাজ করেছিgit log --diff-filter=A -- *subfolder/foo.js
জিও

4
অন্যান্য শাখাগুলি থেকে মার্জ হওয়া ফাইলগুলিতে এটি কীভাবে কাজ করবে তবে যেগুলি শাখায় যুক্ত করা হয়নি তা সংযুক্তি সম্পাদনকারী ব্যবহারকারী দ্বারা সংযুক্ত করা হচ্ছে?
g33kz0r

উপরের ডক লিঙ্কটি পতাকা সংক্রান্ত তথ্যে ঝাঁপ দেয় না। পোস্ট হওয়ার পরে এটি পরিবর্তন হতে পারে। git-scm.com/docs/git-log# ডকুমেন্টেশন/…
ওয়েবওয়ার

1
হ্যাঁ, তারা ডক্সে অ্যাঙ্কর কাঠামো পরিবর্তন করেছে। আপডেট হয়েছে, ধন্যবাদ!
স্টেলেটার্ড

@ জিও আমি মনে করি আপনি যা বলছেন তা বাস্তবে পাওয়া যায় না তবে আমার একইরকম ব্যবহার রয়েছে, যেখানে আমি সাধারণত গিট ডিরেক্টরিতে প্রকল্পের মূলের মধ্যে থাকি এবং সেখান থেকে কমান্ড জারি করি এবং সরবরাহকৃত একটি লাইনার ব্যবহার করে git log --diff-filter=A -- foo.jsমুদ্রণ করা হয়নি আমার টার্মিনালে আইডি / হ্যাশ বন্ধ করুন পরিবর্তে কাঙ্ক্ষিত ফলাফল পেতে আমাকে গিট রেপো রুট থেকে ফাইলের আপেক্ষিক পথটি সরবরাহ করতে হয়েছিল
আইপ্যাচ


1

নিম্নলিখিতগুলি আপনার আগ্রহের মধ্যে নাও থাকতে পারে তবে আমি মনে করি এটি ভবিষ্যতে আপনাকে সহায়তা করবে এবং গিতের ডিবাগিং ইকোসিস্টেমের অংশ is

আপনি git-blameকোন ফাইলের প্রতিটি লাইন, বিশেষত ফাইল টীকা সংশোধন এবং লেখক সর্বশেষ পরিবর্তন করেছেন তা দেখাতে ব্যবহার করতে পারেন । পরিদর্শন https://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git

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

git blame -L 174,190  xx.py

আপনি দয়া করে ব্যাখ্যা করতে পারবেন প্রতিটি অপারেশন কী করে? আমি বুঝতে পারি আপনি প্রাসঙ্গিক আরটিএফএমের একটি লিঙ্ক সরবরাহ করেছেন, তবে সামান্য বর্ণনাই আপনার পোস্টটিকে ওয়ান স্টপ শপ হিসাবে পরিণত করবে।
rossmcm

প্রো-গিট বইতে যেমন বলা হয়েছে যে আপনি যদি নিজের কোডটিতে কোনও বাগ সন্ধান করেন এবং কখন এটি চালু হয়েছিল এবং কেন তা জানতে চান, ফাইল টীকাটি প্রায়শই আপনার সেরা সরঞ্জাম। এটি আপনাকে দেখায় যে কোনও ফাইলের প্রতিটি লাইন পরিবর্তন করার জন্য সর্বশেষ প্রতিশ্রুতিবদ্ধ ছিল, সুতরাং এই উদাহরণটি যে আমি দেখিয়েছি -L বিকল্পটি ব্যবহার করে আউটপুটকে 174 এর মধ্যবর্তী লাইনের মধ্যে সীমাবদ্ধ করতে এবং শেষ জিনিসটি কেবলমাত্র লক্ষ্য ফাইল যা আপনি পরীক্ষা করতে চান ( xx.py) এক্ষেত্রে একটি অজগর ফাইল @rossmcm
রেডেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.