आप git filter-branch
उस के लिए उपयोग कर सकते हैं , --tree-filter
विकल्प के साथ , और --all
शाखा के लिए निर्दिष्ट कर सकते हैं ।
यहाँ एक उदाहरण है (एक अनिक्स-टाइप टेक्स्ट फ़ाइल के साथ खाली निर्देशिका में शुरू किया गया है:
तैयारी:
$ hexdump -C testfile
00000000 61 0d 0a 62 0d 0a 63 0d 0a |a..b..c..|
00000009
$ git init
Initialized empty Git repository in /home/seigneur/tmp/a/.git/
$ git add testfile && git commit -m "dos file checked in"
[master (root-commit) df4970f] dos file checked in
1 files changed, 3 insertions(+), 0 deletions(-)
create mode 100644 testfile
आदेश:
$ git filter-branch --tree-filter 'git ls-files -z | xargs -0 dos2unix' -- --all
आउटपुट:
Rewrite df4970f63e3196216d5986463f239e51eebb4014 (1/1)dos2unix: converting file testfile to Unix format ...
Ref 'refs/heads/master' was rewritten
$ hexdump -C testfile
00000000 61 0a 62 0a 63 0a |a.b.c.|
00000006
मैं दृढ़ता से पहले से ही पूर्ण बैकअप करने की सलाह देता हूं । अपने लिनक्स मशीन से चलाना (जब तक कि आपके विंडोज़ वातावरण में एक अच्छा शेल सेट न हो जाए) संभवत: आसान है।
संपादित करें: रूपांतरण पहली बार के आसपास उलट गया था।
git filter-branch --tree-filter 'git ls-files -z | xargs -0 dos2unix' -- --all
:। झंडे-z
और-0
बताएंgit ls-files
और पंक्ति के अंत के रूप मेंxargs
मुद्रित और व्याख्या करेंnull
।