YUM保存软件包及离线下载

默认情况下,当前版本的 yum 在成功下载和安装软件包后,会把下载的文件删掉。这样可以减少 yum 占用的磁盘空间。你可以打开缓存,这样 yum 将在缓存目录保留下载到的文件。

1. 缓存优势:

  • yum 的性能可以提高

  • 只使用缓存你可以离线运行 yum 操作

  • 你可以复制缓存中的软件包以备用

默认情况下,yum 在 /var/cache/yum/ 目录保存临时文件,每个仓库都有自己的子目录。仓库目录中 packages/ 子目录包含了缓存的软件包。例如,目录/var/cache/yum/development/packages/ 包含从 development 仓库下载的软件包。

2. 启用 yum 缓存

要配置 yum 保留已下载的文件而不是删除,设置 /etc/yum.conf 中的keepcache 选项为 1:

keepcache=1

打开缓存后,每个 yum 操作都可能从仓库下载软件包数据。要保证缓存包含了软件包数据,在启用缓存后运行一个操作,例如 list 或 search 来下载软件包数据而不影响系统。

3.在只使用缓存的模式下使用 yum

要在没有网络的情况下执行 yum,只要启用了缓存,就可以用 -C 选项。这样 yum 就不会检查网络上的仓库,只使用缓存。在这个模式中,yum 只能安装已下载并缓存的软件包。

要在没有网络连接的时候搜索软件包 tsclient,输入命令:

su -c 'yum -C list tsclient'

4. 缓存带来的好处

如果你有多台机子 只须要一台机子从网上下载 软件包跟软件更新包 , 还有如果你想重装系统不想再下载的几个G的更新跟软件(前提缓存了你系统所有安装的软件的更新包).

在开启 缓存的状态下因为 yum 下载的软件包不会被删除,所以可以多次利用.(就是占硬盘空间而以, 呵呵几个G我不放在眼里,我硬盘有 1.2TB)

很简单的方法,把这台机子的 /var/cache/yum/ 目录下的所有文件包过目录. 复制到另一台机子下的相同目录. 执行.

# yum -C update
# yum -C install <软件包名>

5.清空 yum 缓存

# yum clean headers

要删除缓存中所有软件包,使用命令:

#yum clean package
[root@Iprayz ~]# rpm -ql yum    /var/cache/yum
[root@Iprayz ~]# cat /etc/yum.conf |grep  cachedir cachedir=/var/cache/yum/$basearch/$releasever
[root@Iprayz ~]# cat /etc/yum.conf |grep keep  keepcache=0
#  Fedora which don't keep old packages around. If you don't like this checking
[root@Iprayz ~]#

解决CentOS安装过程中出现的Kdump安装失败

在安装完成重启后开始进行一些初始化的配置,在最后一项是配置Kdump,但是蛋疼的问题出现了。

看到这个“没有足够的内存配置kdump”(在英文界面下提示的是“insufficient memory to configure kdump”),但是我后来分配了4G内存给虚拟机,但是还是提示这个错误。后来想起kdump还有一个图形界面配置的命令,所以在终端下输入system-config-kdump命令,会弹出下面的界面:

选择Target settings,会弹出下面的界面:

我第一次点开的时候没有红色圈住的那部分,后来就点了那个“Reload”按钮,然后再点击了“apply”按钮,在终端下输入service kdump restart终于启动成功了!真是太爽了!

赶紧测试一下,输入echo “c”>/proc/sysrq-trigger,界面会出现一些信息,类似下面一样:

过一会系统就会自动重启,这个时候就说明你的kdump已经配置成功了,重启之后/var/crash目录下就可以看到有一个文件夹,文件夹的名字是日期,里面就是你需要的core文件。至此终于神奇的误打误撞成功了。如果你还没成功,就把那几个“apply”、“reload”,“enable”,“disable”按钮来回点,多试几次,说不定也像我一样成功了。

最后总结一下整个过程:

1、完全安装CentOS 6.2,所有的包都选,一个也不要落下。
2、安装按成后忽略“没有足够的内存配置kdump”(在英文界面下提示的是“insufficient memory to configure kdump”)这个错误,进入系统后打开终端输入system-config-kdump命令,如果没有,先安装。
3、在界面中先点击reload按钮,然后在点击“apply”让配置生效,重启系统,测试看是否成功。

 

安装CentOS时提示kdump安装失败

由于测试需要,我在Ubuntu的虚拟机下安装了CentOS。安装过程中一切顺利,结果在启动的时候发现kdump启动失败。
听名字感觉kdump像个debug工具。上网搜索了一下,得知:
[codesyntax lang=”text”]

kdump是在系统崩溃、死锁或者死机的时候用来转储内存运行参数的一个工具和服务。
打个比方,如果系统一旦崩溃那么正常的内核就没有办法工作了,
在这个时候将由kdump产生一个用于capture当前运行信息的内核,
该内核会将此时的内存中的所有运行状态和数据信息收集到一个dump core
文件中以便于Red Hat工程师分析崩溃原因,一旦内存信息收集完成,系统将自动重启。
这和以前的diskdump,netdump是同样道理。只不过kdump是RHEL5特有的。

[/codesyntax]
虽然不影响设备的正常使用,启动不了老是觉得不舒服。经过我的多次研究,我是这样修复的:

编辑/etc/sysconfig/kdump文件:
设置MKDUMPRD_ARGS和KDUMP_COMMANDLINE

MKDUMPRD_ARGS="/sbin/mkdumprd"(默认时这个参数的空的)
KDUMP_COMMANDLINE="ro root=LABEL=xxx"

其中xxx是root所在的分区的卷标。查看root卷标的命令是:
ls /etc/disk/by-label

保存,然后重启。

重启之后如果还不行:
安装kexec-tools
[codesyntax lang=”bash”]

yum install kexec-tools

[/codesyntax]
其实我不知道安装这个软件是不是必须的,
对于一般用户来说,没有必要开kdump。
所以建议初次时候通过ntsysv禁止其随开机启动

Vi中常用操作

插入类操作:

i:在光标之前添加文本
I:在光标行首添加文本
a:在光标之后添加文本
A:在光标行末添加文本
o:在光标下插入新行
O:在光标上插入新行

 

命令类操作:

:set nu 回车设置行号
:set nonu 回车取消行号
:n 移至文件的第n行
:n1,n2d 删除n1到n2行的内容

 

位置类操作:

ZZ: 退出
h: 左移一个字符
j: 下移一个字符
k: 上移一个字符
l: 右移一个字符
$: 移至行尾
0: 移至行首
Enter:移至下行行尾
H: 移至屏幕上端
M: 移至屏幕中端
L: 移至屏幕下端
G: 移至文件的最后一行
nG:移至文件的第n行:
1G移至文件的第1行,
10G移至文件的第10行

 

编辑类操作:

x: 删除光标所在的一个字符(相当于向后删除)
X: 删除光标前面的一个字符(相当于向前删除)
dd: 删除光标所在的行
dG: 删除光标所在的行到末尾的内容
D: 删除光标所在处到行尾的内容
u:撤销
yy,Y: 复制当前行
nyy,nY:复制包括当前行在内的n行
p: 将已经选择复制或被删除的行放到当前行下(粘贴)
r: 取代光标所在处的字符
R: 从光标所在处开始替换字符,按ESC结束
s: 替换光标所在处字符并进入文本输入方式
S: 替换光标所在全行,按ESC结束
u: 取消上一步操作(取消到上次打开文件的点上,并不是上次保存的点上),ctrl+r取消取消的操作
U: 取消当前行的所有操作
:w 保存
:w new_filename 另存为
:wq 保存退出
:q 不保存退出
:q! 强制不保存退出
:wq!强制保存退出
:x
:x!
/string 搜索字符串
?string 搜索字符串
n 向下搜索(?向上)
N 向上搜索(?向下)
:%s/旧的字符串/新的字符串/g 将旧的内容全部替换为新的内容
:%s/旧的字符串//g 将旧的内容删除
:r 文件名
:!操作系统命令
vi -o file1 file2 同时打开多个文件(水平排列)
vi -O file1 file2 同时打开多个文件(垂直排列)
ctrl+ww 文件之前切换

 

Vi中输入中文乱码

Vim 有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding

它们的意义如下:

encoding: Vim 内部使用的字符编码方式,包括 Vim 的 buffer (缓冲区)、菜单文本、消息文本等。
fileencoding: Vim 中当前编辑的文件的字符编码方式,Vim 保存文件时也会将文件保存为这种字符编码方式 (不管是否新文件都如此)。
fileencodings: Vim 启动时会按照它所列出的字符编码方式逐一探测即将打开的文件的字符编码方式,并且将 fileencoding 设置为最终探测到的字符编码方式。因此最好将 Unicode 编码方式放到这个列表的最前面,将拉丁语系编码方式 latin1 放到最后面。
termencoding: Vim 所工作的终端 (或者 Windows 的 Console 窗口) 的字符编码方式。这个选项在 Windows 下对我们常用的 GUI 模式的 gVim 无效,而对 Console 模式的 Vim 而言就是 Windows 控制台的代码页,并且通常我们不需要改变它。 用英文菜单和提示最好,可以免去下面对菜单和提示信息(B,C部分)的设置如果用英文菜单和提示在安装gvim的时候,将支持本地语言的选项去掉。

解决vim文件乱码,打开文件乱码,菜单,提示信息乱码:

有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding 在linux中修改.vimrc(在win中是_vimrc)

A:设置文件的代码形式: 

set encoding=utf-8
set termencoding=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,chinese,cp936

B:vim的菜单乱码解决: 

同样在 _vimrc文件里以上的中文设置后加上下列命令

source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

C:vim提示信息乱码的解决:

language messages zh_CN.utf-8

nginx使用三方模块方法

nginx文件非常小但是性能非常的高效,这方面完胜apache,nginx文件小的一个原因之一是nginx自带的功能相对较少,好在nginx允许第三方模块,第三方模块使得nginx越发的强大. 在安装模块方面,nginx显得没有apache安装模块方便,当然也没有php安装扩展方便.在原生的nginx,他不可以动态加载模块,所以当你安装第三方模块的时候需要覆盖nginx文件.接下来看看如何安装nginx第三模块吧.

nginx第三方模块安装方法:
[codesyntax lang=”text”]

./configure --prefix=/你的安装目录  --add-module=/第三方模块目录

[/codesyntax]
以安装pagespeed模块实例

在未安装nginx的情况下安装nginx第三方模块
[codesyntax lang=”text”]

# ./configure --prefix=/usr/local/nginx-1.4.1 \
--with-http_stub_status_module \
--with-http_ssl_module --with-http_realip_module \
--with-http_image_filter_module \
--add-module=../ngx_pagespeed-master --add-module=/第三方模块目录
# make
# make isntall
# /usr/local/nginx-1.4.1/sbin/nginx

[/codesyntax]

在已安装nginx情况下安装nginx模块
[codesyntax lang=”text”]

# ./configure --prefix=/usr/local/nginx-1.4.1 \
 --with-http_stub_status_module \
 --with-http_ssl_module --with-http_realip_module \
 --with-http_image_filter_module \
 --add-module=../ngx_pagespeed-master
# make
# /usr/local/nginx-1.4.1/sbin/nginx -s stop
# cp objs/nginx /usr/local/nginx/sbin/nginx
# /usr/local/nginx-1.4.1/sbin/nginx

[/codesyntax]

相比之下仅仅多了一步覆盖nginx文件.

总结,安装nginx安装第三方模块实际上是使用–add-module重新安装一次nginx,不要make install而是直接把编译目录下objs/nginx文件直接覆盖老的nginx文件.如果你需要安装多个nginx第三方模块,你只需要多指定几个相应的–add-module即可.

备注:
重新编译的时候,记得一定要把以前编译过的模块一同加到configure参数里面.

nginx提供了非常多的nginx第三方模块提供安装,地址http://wiki.nginx.org/3rdPartyModules

HTTPD启动绑定端口失败

问题描述:

在apache中绑定非http标准端口时,一直出现如下的错误提示:

[root@localhost ~]# /etc/init.d/httpd start
Starting httpd: (13)Permission denied: make_sock: could not bind to address 0.0.0.0:8087
no listening sockets available, shutting down
Unable to open logs

原因分析:

该问题是由SELinux 引起的

解决方案:

 

1、快速解决,修改selinux级别(不推荐)

vi /etc/sysconfig/selinux 
SELINUX=enforcing =>SELINUX=disabled 
reboot

 

2、从根本上解决(推荐)

根据自己的需求在selinux中添加需要指定的端口
前提需要先安装semanage(Centos6.0默认没有安装该应用)
a)安装方式如下:

[root@localhost /]# yum provides /usr/sbin/semanage
[root@localhost /]# yum whatprovides /usr/sbin/semanage
[root@localhost /]# yum -y install policycoreutils-python
[root@localhost /]# semanage

b)使用semanage添加apache侦听的端口

查看现在的支持http的端口有哪些

[root@localhost /]# semanage port -l|grep http 
为http服务添加新的端81 

[root@localhost /]# semanage port -a -t http_port_t -p tcp 81 
查看添加的结果 

[root@localhost /]# semanage port -l|grep http

 

DB2 IMPORT 详解

IMPORT 实用程序概述

IMPORT 实用程序用一个输入文件将数据填充到一个表中,输入文件的文件类型可以是 ASC、DEL、IXF 或 WSF。目标是一个表、一个类型化表(typed table)或者一个视图。但是,不能导入到系统表、临时表和物化查询表。建议使用 MESSAGES 子句,以便记录错误、警告和包含有用信息的消息。

要想成功地导入数据,必须拥有 SYSADM 或 DBADM 权限,或者目标表或数据库上的底层特权(SELECT、INSERT、CONTROL 或 CREATETAB),这取决于使用什么选项。为了将数据导入到一个包含受保护的行和列的表中,必须拥有允许对表中所有受保护数据进行写访问的 LBAC 凭证。此外,将数据导入包含受保护行的表时,要求您的 LBAC 凭证是保护表的安全策略的一部分。

下面显示的 IMPORT 命令具有五个不同的选项:

[codesyntax lang=”sql”]

IMPORT FROM file_name OF file_type
   MESSAGES message_file
   [ INSERT | INSERT_UPDATE | REPLACE | REPLACE_CREATE | CREATE ]
   INTO target_table_name
   

[/codesyntax]

INSERT 选项将导入的数据插入表中。目标表必须已经存在。 INSERT_UPDATE 将数据插入表中,或者更新表中具有匹配主键的行。目标表必须已经存在,并且定义了一个主键。 REPLACE 选项删除所有已有的数据,并将导入的数据插入到一个已有的目标表中。 使用 REPLACE_CREATE 选项时,如果目标表已经存在,则导入实用程序删除已有的数据,并插入新的数据,就像 REPLACE 选项那样。如果目标表还没有定义,那么首先创建这个表以及它的相关索引,然后再导入数据。正如您可能想像的那样,输入文件必须是 PC/IXF 格式的文件,因为那种格式包含对导出表的结构化描述。如果目标表是被一个外键引用的一个父表,那么就不能使用 REPLACE_CREATE。 CREATE 选项首先创建目标表和它的索引,然后将数据导入到新表中。该选项惟一支持的文件格式是 PC/IXF。还可以指定新表所在表空间的名称。 例子:

[codesyntax lang=”sql”]

IMPORT FROM emp.ixf OF IXF
   MESSAGES msg.out
   CREATE INTO employee IN datatbsp INDEX IN indtbsp

[/codesyntax]

IMPORT 选项

IMPORT 基本上是用于成批插入数据的一个实用程序。这种成批插入操作就像一般的插入语句一样,也涉及到活动的日志记录、索引的更新、参照完整性检查和表约束检查。默认情况下,IMPORT 只在操作结束时提交一次。如果将大量的行一次性导入或插入到表中,那么需要有足够的事务记录用于回滚和恢复。此外也可以采用周期性的提交,以防日志写满。通过定期地提交插入,还可以减少导入操作期间出现失败时丢失的行数。COMMITCOUNT 选项规定在导入一组记录后强制执行 COMMIT。还可以指定 AUTOMATIC 选项,该选项允许导入实用程序在内部决定何时需要执行提交。该实用程序将考虑发出一个提交命令,以避免日志写满或者避免锁升级。下面是关于如何使用 COMMITCOUNT 选项的一个例子:

[codesyntax lang=”sql”]

IMPORT FROM myfile.ixf OF IXF
   COMMITCOUNT 500
   MESSAGES msg.out
   INSERT INTO newtable
   

[/codesyntax]

如果由于某种原因导致以上命令在执行期间遭到失败,那么可以使用消息文件来确定成功导入且已提交的最后一行。然后,可以使用 RESTARTCOUNT 选项重新开始导入。注意,SKIPCOUNT 选项的行为与 RESTARTCOUNT 是相同的。在下面的命令中,该实用程序在开始 IMPORT 操作之前,将忽略前 30,000 条记录。

[codesyntax lang=”sql”]

IMPORT FROM myfile.ixf OF IXF
   COMMITCOUNT 500 RESTARTCOUNT 30000 ROWCOUNT 100000
   MESSAGES msg.out
   INSERT INTO newtable

[/codesyntax]

注意,这个例子中还使用了 ROWCOUNT 选项。该选项指定要导入的物理记录的条数。由于使用了 RESTARTCOUNT 选项,导入实用程序将忽略前 30,000 条记录,并且将剩下的 100,000 条记录导入到表中。

默认情况下,在插入任何行之前,导入实用程序将获得目标表上的一个排它锁。一旦导入完成,这个排它锁将被释放。这是 ALLOW NO ACCESS 选项的行为。为了允许并发应用程序访问表数据,可以使用 ALLOW WRITE ACCESS 选项。注意,该选项与 REPLACE、CREATE 或 REPLACE_CREATE 导入选项不兼容。下面是关于 ALLOW WRITE ACCESS 选项的一个例子。

[codesyntax lang=”sql”]

IMPORT FROM myfile.ixf OF IXF
   ALLOW WRITE ACCESS
   MESSAGES msg.out
   INSERT INTO newtable

[/codesyntax]

导入 XML 数据

为了导入 XML 文件,可以使用 XML FROM 选项指定 XML 文件所在的一个或多个路径。否则,导入实用程序将在当前目录中查找 XML 文件。您可以选择如何解析 XML 文档;是去掉空白还是保留空白。如果没有指定 XMLPARSE 选项,那么将根据 CURRENT XMLPARSE OPTION 专用寄存器来决定对 XML 文档的解析行为。下面是关于 XML FROM 和 XMLPARSE 选项的一个例子。

[codesyntax lang=”sql”]

IMPORT FROM myfile.ixf OF IXF
   XML FROM d:\xmlpath
   XMLPARSE PRESERVE WHITESPACE
   MESSAGES msg.out
   INSERT INTO newtable
   

[/codesyntax]

当插入或更新一个 XML 文档时,您可能想确定 XML 文档的结构、内容和数据类型是否有效。导入实用程序还通过 XMLVALIDATE 选项提供了对 XML 验证的支持。下面是可用的三种方法。

USING XDS — 回想一下,您可以导出 XML 模式信息并将它存储在 XML Data Specifier (XDS) 的 SCH 属性中。SCH 属性的值将用于执行验证。如果在 XDS 中没有 SCH 属性,则考虑 DEFAULT、IGNORE 或 MAP 三者之中的一个值。 USING SCHEMA schema-sqlid — 使用这个子句中指定的 XML 模式。 USING SCHEMALOCATION HINTS — 根据源 XML 文档中 XML 模式位置提示所标识的模式来验证 XML 文档。

[codesyntax lang=”sql”]

IMPORT FROM myfile.ixf OF IXF
   XML FROM d:\xmlpath
   XMLPARSE PRESERVE WHITESPACE
   XMLVALIDATE USING XDS
   DEFAULT S1.SCHEMA_A
   IGNORE (S1.SCHEMA_X, S1.SCHEMA_Y, S1.SCHEMA_Z)
   MAP (S1.SCHEMA_A, S1.SCHEMA_B)
   COMMITCOUNT 500 RESTARTCOUNT 30000
   MESSAGES msg.out
   INSERT INTO newtable
   

[/codesyntax]

前面的 IMPORT 命令将:

插入 myfile.ixf 和 d:\xmlpath 下的 XML 文件中的数据。 当解析 XML 文档时,保留空白。 使用 XDS 的 SCH 属性标识的模式信息对每个 XML 文档进行验证。但是,如果用于任何特定行的 XDS 没有包含 SCH 属性,那么使用 S1.SCHEMA_A。 如果 SCH 属性被指定为 S1.SCHEMA_X 或 S1.SCHEMA_Y 或 S1.SCHEMA_Z,那么对于导入的 XML 文档不执行验证。 如果 SCH 属性被指定为 S1.SCHEMA_A,它将被映射到 S1.SCHEMA_B。注意,尽管 DEFAULT 子句指定了 S1.SCHEMA_A,但是后面的任何映射都将不会执行。 每导入 500 行之后,导入实用程序将发出一次提交命令。 导入操作从第 30,001 条记录开始。前 30,000 条记录被忽略。 任何错误、警告和包含信息的消息都写到 msg.out 文件中。 将新数据插入(或附加)到 newtable 中。 这个例子只是让您对如何验证导入的 XML 文档有一些认识。DB2 Information Center 中还有更多的例子来演示 XMLVALIDATE 选项的威力。

文件类型修饰符

IMPORT 实用程序还支持五种文件类型修饰符来定制导入操作。在 DB2 Command Reference 的 IMPORT 小节下有这些修饰符的一个完整的列表。下面列出了其中一些修饰符:

compound=x 使用非原子复合 SQL 插入数据。x 是每次将尝试的语句数量。 indexschema=schema 使用索引创建期间指定的用于索引的模式。 striptblanks 将数据装载到可变长度字段时,截去结尾空白。 lobsinfile 表明将导入 LOB 数据。导入实用程序将检查 LOBS FROM 子句,以获得输入 LOB 文件的路径。

下面是使用这些文件类型修饰符的一个例子:

[codesyntax lang=”sql”]

IMPORT FOR inputfile.asc OF ASC
   LOBS FROM /u/db2load/lob1, /u/db2load/lob2
   MODIFIED BY compount=5 lobinsfile
   INSERT INTO newtable
   

[/codesyntax]

使用 Control Center 执行导入

Control Center 提供了易于使用的图形界面来执行导入操作。这个界面中还提供了前一屏中讨论的所有导入选项和文件修饰符。

Git rebase 详解

1.出现情况的背景:

当你提交的代码后,管理员发现,您的代码不能提交到服务器上,主要原因在于,你的commit 中和服务器中的有些commit不再同一时间轴上,即:你的有些commit要插入到服务器中的某些commit之间,这样就会造成代码的冲突。所以这个时候就要使用git rebase。

假如,你平时使用的分支叫new ,然后在这个分支上你刚提交过几个commit。

做法:

1.新建一个分支,并且代码和服务器中代码同步

[codesyntax lang=”text”]


git checkout origin/v2.0 -b temp

[/codesyntax]

2.为了保证新建的temp分支代码是最新的,可以多执行下面一步

[codesyntax lang=”text”]


git pull

[/codesyntax]

3.当你新建分支后,系统会自动checkout到temp分支上,此时

[codesyntax lang=”text”]


git checkout new

[/codesyntax]

4.合并代码,并整理

[codesyntax lang=”text”]


git rebase temp //会将temp分支的代码合并过来,并按照提交的顺序排序

[/codesyntax]

5. 因为顺序是重新整理的,所以肯定会出现冲突

6.解决冲突,最后git add * ,但不许要git commit

7.解决后,执行

[codesyntax lang=”text”]


git rebase --continue

[/codesyntax]

8.重新提交代码

[codesyntax lang=”text”]


git push for-*

[/codesyntax]

注意:如果要对某些代码的commit重新整理

1. 可以记住某个commit号

2. git rebase -i commit号

3. 会显示一个整理提交的界面,有很多参数,e。p。等等

4.将前面的参数改为e。则wq保存后,系统会自动让你重新修改commit内容

5.修改完成后,再git push for-*

Git 乱码处理方法

乱码情景1

在cygwin中,使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如274\232\350\256\256\346\200\273\347\273\223.png的乱码。

解决方案:

在bash提示符下输入:

[codesyntax lang=”text”]

git config --global core.quotepath false

[/codesyntax]
core.quotepath设为false的话,就不会对0×80以上的字符进行quote。中文显示正常。

乱码情景2

在MsysGit中,使用git log显示提交的中文log乱码。

解决方案:

设置git gui的界面编码

[codesyntax lang=”text”]

git config --global gui.encoding utf-8

[/codesyntax]
设置 commit log 提交时使用 utf-8 编码,可避免服务器上乱码,同时与linux上的提交保持一致!

[codesyntax lang=”text”]

git config --global i18n.commitencoding utf-8

[/codesyntax]
使得在 $ git log 时将 utf-8 编码转换成 gbk 编码,解决Msys bash中git log 乱码。

[codesyntax lang=”text”]

git config --global i18n.logoutputencoding gbk

[/codesyntax]
使得 git log 可以正常显示中文(配合i18n.logoutputencoding = gbk),在 /etc/profile 中添加:

[codesyntax lang=”text”]

export LESSCHARSET=utf-8

[/codesyntax]

乱码情景3

在MsysGit自带的bash中,使用ls命令查看中文文件名乱码。cygwin没有这个问题。

解决方案:

使用?lls --show-control-chars?命令来强制使用控制台字符编码显示文件名,即可查看中文文件名。

为了方便使用,可以编辑?/etc/git-completion.bash?,新增一行?alias ls="ls --show-control-chars"