गिट स्थिति short format जानकारी का उपयोग करके, यहां एक बैश स्क्रिप्ट है जो आपको अनुकूलित स्थिति आउटपुट देने के लिए Awk और column
कमांड का उपयोग करती है।
#!/bin/bash
git status --porcelain | \
awk 'BEGIN {FS=" "}
{
xstat = substr($0, 1, 1);
ystat = substr($0, 2, 1);
f = substr($0, 4);
ri = index(f, " -> ");
if (ri > 0) f = substr(f, 1, ri);
if (xstat == " " && ystat ~ "M|D") stat = "not updated";
else if (xstat == "M" && ystat ~ " |M|D") stat = "updated in index";
else if (xstat == "A" && ystat ~ " |M|D") stat = "added to index";
else if (xstat == "D" && ystat ~ " |M") stat = "deleted from index";
else if (xstat == "R" && ystat ~ " |M|D") stat = "renamed in index";
else if (xstat == "C" && ystat ~ " |M|D") stat = "copied in index";
else if (xstat ~ "M|A|R|C" && ystat == " ") stat = "index and work tree matches";
else if (xstat ~ " |M|A|R|C" && ystat == "M") stat = "work tree changed since index";
else if (xstat ~ " |M|A|R|C" && ystat == "D") stat = "deleted in work tree";
else if (xstat == "D" && ystat == "D") stat = "unmerged, both deleted";
else if (xstat == "A" && ystat == "U") stat = "unmerged, added by us";
else if (xstat == "U" && ystat == "D") stat = "unmerged, deleted by them";
else if (xstat == "U" && ystat == "A") stat = "unmerged, added by them";
else if (xstat == "D" && ystat == "U") stat = "unmerged, deleted by us";
else if (xstat == "A" && ystat == "A") stat = "unmerged, both added";
else if (xstat == "U" && ystat == "U") stat = "unmerged, both modified";
else if (xstat == "?" && ystat == "?") stat = "untracked";
else if (xstat == "!" && ystat == "!") stat = "ignored";
else stat = "unknown status";
print f " " stat;
}' | \
column -t -s " "
आप अपने PATH
($HOME/bin
होना चाहिए एक अच्छी जगह) पर एक निर्देशिका में एक निष्पादन git-status-ls
बनाते हैं, तो आप किसी भी Git रेपो में git status-ls
लिख सकते हैं। या आप इसके लिए एक गिट उर्फ एक-लाइनर बना सकते हैं। आप पर्ल, पायथन, सी या जो भी भाषा आप सबसे अधिक आरामदायक हैं, का उपयोग करके इसे कार्यान्वित भी कर सकते हैं।
B renamed in index
A untracked
dont_delete_git_pre-commit_hook untracked
बस एहसास हुआ, टैब रिक्त स्थान के रूप में प्रदर्शित कर रहे हैं:
यहां एक नमूना उत्पादन है। Awk स्क्रिप्ट print f " " stat;
और column -t -s " "
कमांड में, डबल-कोट्स के बीच एक टैब (रिक्त स्थान नहीं) है। आप टैब के अलावा एक विभाजक का उपयोग कर सकते हैं।
उपर्युक्त स्क्रिप्ट में हैंडलिंग स्थिति झंडे के साथ कोई समस्या नहीं है और इसे ठीक किया गया है।
स्रोत
2012-01-04 14:10:38
आप क्या तर्क है 'Git status' पर इस प्रारूप का लाभ है? – Nate
@Nate: यह एक बेहतर birdseye, आईएमओ प्रदान करता है। विशेष रूप से उपयोगी अगर कई फाइलें बदली गईं। लेकिन पूरे डीआईआर-लिस्टिंग के संदर्भ में परिवर्तन देखने के लिए उपयोगी है। – berkes
निकटतम संभवतः 'गिट स्टेटस-एस' है, लेकिन यह – fge