character-encoding - विंडोज 10 कमांड प्रॉम्प्ट पर git लॉग आउटपुट एन्कोडिंग समस्याएं





locale command-prompt (3)


अगर किसी को set LC_ALL=C.UTF-8 के PowerShell समकक्ष में दिलचस्पी है, तो यह है:

$env:LC_ALL='C.UTF-8'

हालांकि यह केवल वर्तमान सत्र के लिए काम करता है इसे स्थायी बनाने के लिए, मान के साथ LC_ALL नामक एक पर्यावरण चर बनाएँ C.UTF-8

मुसीबत

कैसे git log कमांड आउटपुट को ठीक से विंडोज कमांड प्रॉम्प्ट पर प्रदर्शित करने के लिए?

उदाहरण

जैसा कि आप देख सकते हैं कि मैं द्विघातक वर्णों को ठीक से टाइप कर सकता हूं, लेकिन git log पर git log आउट आउटपुट किसी भी तरह से बच जाता है। UTF-8 एन्कोडिंग तालिका के अनुसार, आउटपुट से एंग्लिड ब्रैकेट्स ( < और > ) के बीच के कोड पहले टाइप किए गए git config पैरामीटर के अनुरूप होते हैं।

मैंने LESSCHARSET पर्यावरण चर को utf-8 को समान मुद्दे के उत्तर में से एक के रूप में LESSCHARSET करने की कोशिश की है, लेकिन फिर आउटपुट विकृत हो गया है:

मुझे पता है कि .git/config को utf-8 साथ ठीक से एन्कोड किया गया है क्योंकि यह अपेक्षित होने के रूप में gitk द्वारा नियंत्रित किया जाता है

यदि आवश्यक हो तो यहां locale कमांड आउटपुट है

LANG=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_ALL=

संपादित करें:

उत्पादन शुद्ध गीट-बीश में भी है:

इसलिए मेरा मानना ​​है कि समस्या शेल स्वतंत्र है और गिट या इसके कॉन्फ़िगरेशन से संबंधित है




ठीक है, मैंने थोड़ा सा प्रयोग किया और पाया कि पोलिश (या अन्य यूटीएफ -8 पात्रों) को सही ढंग से प्रदर्शित करने के लिए विंडोज जीआईटी कमांड को वास्तव में यूनिक्स वैरिएबल की आवश्यकता है जैसे LC_ALL बस इस आदेश का प्रयास करें:

set LC_ALL=C.UTF-8

फिर परिणाम का आनंद लें। मेरे कंसोल (फ़ॉन्ट " chcp ", कोई chcp आवश्यक नहीं) पर यह हुआ है:

अद्यतन करें:

  • ठीक है, ठीक से काम करने के लिए विंडोज कमांड जैसे type (कंसोल पर फ़ाइल प्रदर्शित करें) के लिए आपको chcp 65001 आवश्यकता है
  • और अगर आप set LC_ALL=C.UTF-8 बैश की तरह cat पसंद करते हैं तो आप उपर्युक्त set LC_ALL=C.UTF-8 से लाभ set LC_ALL=C.UTF-8

अपडेट 2: स्थायी परिवर्तन कैसे करें

जैसे उपयोगकर्ता ब्लैन मोनो ने कहा, एक पर्यावरण चर LC_ALL बनाएँ और उसे मूल्य C.UTF-8 , विश्व स्तर पर या केवल अपने स्वयं के उपयोगकर्ता प्रोफाइल के लिए (जर्मन स्क्रीनशॉट के लिए खेद) असाइन करें:

अगली बार जब आप एक कमांड प्रोसेसर कंसोल (cmd.exe) खोलते हैं, तो आपको कमांड echo %LC_ALL% जारी करते समय वैरिएबल मान देखना चाहिए। PowerShell में आपको इसे $env:LC_ALL जारी करते समय देखना चाहिए।

यूटीएफ -8 कोड पेज स्थायी बनाने के लिए सबसे आसान तरीका है regeedit को खोलने के लिए और regeedit स्ट्रिंग के नाम पर एक नया मान जोड़ना HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor और इसे मान chcp 65001

इसके बाद, जब भी आप एक नया सीएमडी.एक्सई कंसोल खोलेंगे, तब यह कमांड निष्पादित होगा। आप इसकी आउटपुट को नई विंडो में भी देखते हैं: "एक्टिव कोडपेप: 65001." (या आपकी संबंधित भाषा में समान)

ओह, वैसे: PowerShell में एक UTF-8 एन्कोडेड फ़ाइल को सही ढंग से प्रदर्शित करने के लिए आप Get-Content -encoding UTF8 file.txt या cat -encoding UTF8 file.txt ( cat PowerShell में Get-Content लिए उपनाम होने के लिए उपयोग कर सकते हैं )।




एक संशोधन में संशोधन 3 और 4 को गठबंधन करने के लिए, आप गिट रिबेस का उपयोग कर सकते हैं। यदि आप संशोधन 3 में परिवर्तनों को हटाना चाहते हैं, तो आपको इंटरैक्टिव रीबेस मोड में संपादन कमांड का उपयोग करने की आवश्यकता है। यदि आप परिवर्तन को एक संशोधन में जोड़ना चाहते हैं, तो स्क्वैश का उपयोग करें।

मैंने सफलतापूर्वक इस स्क्वैश तकनीक का उपयोग किया है, लेकिन पहले कभी संशोधन को हटाने की आवश्यकता नहीं है। "स्प्लिटिंग कमेट्स" के तहत गिट-रीबेस दस्तावेज़ों को आशा है कि आपको इसे समझने के लिए पर्याप्त विचार दें। (या किसी और को पता हो सकता है)।

गिट दस्तावेज से :

इसे सबसे पुरानी प्रतिबद्धता के साथ शुरू करें जिसे आप बनाए रखना चाहते हैं:

git rebase -i <after-this-commit>

एक संपादक को आपकी वर्तमान शाखा (मर्ज कमेटी को अनदेखा कर) में सभी कामों के साथ निकाल दिया जाएगा, जो दिए गए प्रतिबद्धता के बाद आता है। आप इस सूची में अपने दिल की सामग्री के लिए प्रतिबद्धताओं को पुन: व्यवस्थित कर सकते हैं, और आप उन्हें हटा सकते हैं। सूची इस तरह कम या कम दिखती है:

pick deadbee The oneline of this commit
pick fa1afe1 The oneline of the next commit
...

ऑनलाइन विवरण पूरी तरह से आपकी खुशी के लिए हैं; गिट-रीबेज उन्हें नहीं देखेगा लेकिन इस उदाहरण में प्रतिबद्ध नाम ("डेडबी" और "fa1afe1" पर), इसलिए नामों को हटाएं या संपादित न करें।

"संपादन" आदेश के साथ "पिक" कमांड को प्रतिस्थापित करके, आप उस प्रतिबद्धता को लागू करने के बाद रोकने के लिए गिट-रीबेस को बता सकते हैं, ताकि आप फ़ाइलों और / या प्रतिबद्ध संदेश को संपादित कर सकें, प्रतिबद्धता में संशोधन कर सकें, और पुन: जारी रखना जारी रख सकें।

यदि आप दो या दो से अधिक काम करना चाहते हैं, तो दूसरी और बाद की प्रतिबद्धता के लिए "स्क्वैश" के साथ "पिक" कमांड को प्रतिस्थापित करें। यदि समितियों के पास अलग-अलग लेखकों थे, तो यह स्क्वैश प्रतिबद्ध को पहली प्रतिबद्धता के लेखक को श्रेय देगा।







git character-encoding locale command-prompt