ऐसा लगता है कि उचित समाधान के बिना यह अभी भी एक समस्या है। मेरे पास टिप्पणी करने के लिए पर्याप्त क्रेडिट नहीं है, इसलिए यहां मेरा थोड़ा योगदान है।
सेठ रॉबर्टसन के 1 समाधान थोड़े ने मेरे लिए काम किया, लेकिन केवल मुझे स्थानीय शाखाएं दीं, जिनमें कई झूठी सकारात्मकताएं थीं, शायद इसलिए स्थिर शाखा से विलय के कारण।
एडम डाइमिट्रुक का दूसरा समाधान मेरे लिए बिल्कुल भी कारगर नहीं था। शुरुआत के लिए, क्या --format =% 5 है? यह git द्वारा मान्यता प्राप्त नहीं है, मुझे इसके बारे में कुछ भी नहीं मिला और मैं इसे अन्य प्रारूप विकल्पों के साथ काम करने के लिए नहीं प्राप्त कर सका।
लेकिन उनका पहला समाधान - स्रोत विकल्प और एक साधारण grep के साथ संयुक्त मददगार साबित हुआ:
git log --all --source -- <filename> | grep -o "refs/.*" | sort -u
यह मुझे कई दूरस्थ टैग और शाखाएँ और एक स्थानीय शाखा देता है, जहाँ मैंने फ़ाइल में नवीनतम परिवर्तन किए हैं। निश्चित नहीं है कि यह पूरा कैसे हुआ।
हाल के बदलाव से शाखाओं को छाँटने के लिए @nealmcb के अनुरोध के अनुसार अद्यतन करें :
सबसे पहले, आप grep को "refs / heads /.*" में बदल सकते हैं, जो आपको केवल स्थानीय शाखाएँ देगा। यदि कुछ ही शाखाएँ हैं, तो आप इस तरह से हर एक की नवीनतम प्रतिबद्ध की जाँच कर सकते हैं:
git log -1 <branch> -- <filename>
यदि अधिक शाखाएं हैं और आप वास्तव में इसे स्वचालित करना चाहते हैं, तो आप xargs, git लॉग फॉर्मेटिंग और इस एक-लाइनर में एक अन्य प्रकार का उपयोग करके दो कमांड जोड़ सकते हैं:
git log --all --source -- <filename> | grep -o "refs/heads/.*" | sort -u | xargs -I '{}' git log -1 --format=%aI%x20%S '{}' -- <filename> | sort -r
यह इस तरह उत्पादन में परिणाम होगा:
2020-05-07T15:10:59+02:00 refs/heads/branch1
2020-05-05T16:11:52+02:00 refs/heads/branch3
2020-03-27T11:45:48+00:00 refs/heads/branch2