msysGit 中文環境配置及跨平台開發注意事項

2021-09-24 11:42:30 字數 3742 閱讀 6062

2019獨角獸企業重金招聘python工程師標準》

:因從 git v1.7.10 開始引入了 unicode 支援,所以在此版本之前會出現的亂碼問題可能在之後的版本則不需要設定,但仍存在一些亂碼問題,因此我仍然強烈推薦與 mintty 配合使用。

git 是乙個非常不錯的分布式版本控制系統,雖然它最初設計在 linux 平台下,但現在已經被很好的移植到其它平台。windows 平台下對應的 git 工具為 msysgit,在涉及到跨語言開發時我們需要做一些配置來規避部分問題。但有些問題因為平台差異並不能夠很好的解決,但只要在使用時留心這些差異,我們仍然可以讓 msysgit 幾乎完美的工作。

[解決方法] 在 "/etc/inputrc" 中新增或修改以下配置:

set

output

-meta on

setconvert

-meta off

[解決方法] 在 "/etc/gitconfig" 中新增或修改以下配置:
[

gui]

encoding

=utf-8

[i18n

]commitencoding

=gbk

logoutputencoding

=gbk

或在 git bash 中執行下列**:
git config 

--system gui

.encoding utf-8

git config

--system i18n

.commitencoding gbk

git config

--system i18n

.logoutputencoding gbk

並在 /etc/profile 中新增:
export

lesscharset

=utf-8

說明:

gui.encoding = utf-8 解決 git gui 和 gitk 裡中文亂碼;

i18n.commitencoding = gbk 提交 log 使用的編碼;

i18n.logoutputencoding = gbk 使在執行 git log 時將 utf-8 編碼轉換成 gbk 編碼;

export lesscharset=utf-8 設定 less 分頁器的編碼,使 git log 在使用分頁時正常顯示中文(預設分頁)。

[解決方法] 在 "/etc/git-completion.bash" 新增:

aliasls=

'ls --show-control-chars'

如果你想 ls 也像其它環境下一樣自動著色,也可以用下面替代:
aliasls=

'ls --show-control-chars --color=auto'

注意: 這樣雖然能解決中文檔名或目錄的問題,但是在跨平台開發時,不應使用中文檔名和目錄。

#!/bin/sh

mintty sh

-l

需要注意的是,如果你 mintty 設定為 linux 環境開發,即 "~/.minttyrc" 對應的設定如下:

locale

=zh_cn

charset

=utf-8

你需要將 "/etc/gitconfig" 中的 i18n 設定節點全部設定為 utf-8,以及 core.quotepath 設定為 false,即:

[

core

]quotepath

=false

[i18n

]commitencoding

=utf-8

logoutputencoding

=utf-8

雖然此時關於 lesscharset 的設定可有可無,但為了更好地交替使用 git bash 和 mintty,我所做的方法是保留此設定,並準備兩個版本的 gitconfig 分別對應 gitconfig.msysgit 和 gitconfig.mintty,並在 "/etc/bin" 目錄下新建 usemsysgit 和 usemintty 檔案如下:

#!/bin/sh

# usemsysgit

cp /

etc/

gitconfig

.msysgit

/etc

/gitconfig

printf

'msysgit is ready.'

#!/bin/sh

# usemintty

cp /

etc/

gitconfig

.mintty

/etc

/gitconfig

mintty

/bin

/bash

-l

之所以把換行問題放在最後,是因為不能用固定的換行配置去適應多種不同的環境,只有何種配置更適合當前環境。git 通過設定 core.eol,core.safecrlf, core.autocrlf 的值相應地處理換行問題,具體如下:

core

.eol

-lf

# 使用 lf 為行結束型別。

-crlf

# 使用 crlf 為行結束型別。

-native

# 預設,使用本地(當前作業系統)的行結束型別。

# windows 使用 crlf,linux 和 macos 使用 lf(macos 9 前使用 cr)。

core

.safecrlf

-true

# 保證換行型別轉換為可逆轉換(如同時包含 crlf 和 lf 換行符時便不是可逆轉換)。

-false

# 不檢查換行型別轉換。

-warn

# 當換行型別轉換不可逆時顯示警告資訊,但不影響操作執行。

core

.autocrlf

-true

# 提交時自動將 crlf 轉換為 lf,獲取自動將 lf 轉換為 crlf。

-false

# 不轉換換行型別(本地和源的**完全一致)。

-input

# 提交時轉換將 crlf 轉換為 lf,獲取時不轉換。

# 換行型別為 lf 的環境中配置。

core

.autocrlf

=input

# 換行型別為 crlf 的環境中配置。

core

.autocrlf

=true

上面這種配置方式也是比較主流的配置方式,但當你跨平台拷貝移動源倉庫時請記得先轉換換行型別(可通過修改配置後再獲取的方式)。還有乙個問題就是如果二進位制檔案如果在傳輸中轉換結束型別時往往會使檔案不能正常使用,因此需通過設定 gitattributes 將這些檔案排出,例如當前專案中包含 helloworld.exe 的二進位制檔案,則在同級或上級目錄的 .gitattributes 檔案中做如下設定(一般為專案根目錄):。

*.exe binary

vue跨域及分環境打包配置

一 proxytable配置介面位址 config index.js dev 二 分環境打包 開發時1.config dev.env.js,通過process.ar 獲取啟動命令引數 use strict const merge require webpack merge const prodenv...

Docker Linux配置中文環境

我們平時所使用的docker映象其實就可以看作是乙個linux的環境,因此docker的中文環境配置其實類似於linux的中文環境配置。首先,在終端中輸入locale locale lang posix lc ctype posix lc numeric posix lc time posix lc...

jmeter環境配置,配置中文環境,原理 1

jmeter原理 jmeter通過執行緒組來驅動多個執行緒組執行測試指令碼對被測試伺服器發起負載,每乙個負載機上都可以執行多個執行緒組。控制機,控制多台 負載機 去測試 被測應用系統 1.控制機 運用多台jmeter負載機進行效能測試時,被選中作為管理機的那台機器即是控制機。jmeter控制機也可以...