我想与 etckeeper 进行干净的提交。发生的情况如下:
1)检查存储库的状态:
git status
On branch master
nothing to commit, working directory clean
2)修改配置文件:
vi myfile.conf
3)将其添加到索引中
git add myfile.conf
4)进行提交
git commit -m"Add this ... to myfile.conf"
5)观察提交:
git log -p -1
[...]
maybe chmod 0644 'magic.mime'
-maybe chmod 0644 'mail.rc'
maybe chmod 0644 'mailcap'
maybe chmod 0644 'mailcap.order'
maybe chmod 0644 'mailname'
+maybe chmod 0644 'mail.rc'
maybe chmod 0644 'manpath.config'
maybe chmod 0644 'matplotlibrc'
maybe chmod 0755 'maven'
[...]
(My modification to myfile.conf)
[...]
我知道 etckeeper 需要跟踪 git 存储库中的文件权限,即使我不明白这种重新排序的目的。我想在不同的提交中分离与./etckeeper
目录相关的所有修改和与配置文件内容相关的修改。
怎么做?
答案1
Etckeeper 设置一个 git hook,以便在元数据发生更改时提交包含元数据信息的文件。这通常是正确的事情。如果你确实想绕过提交钩子,你可以运行git commit --no-verify
.
元数据文件按文件名排序。排序顺序取决于环境区域设置。在你的例子中,文件似乎是按照纯字节字典顺序排序的(在 ASCII 中是mail.rc
before ),但是你现在在一个区域设置中运行 git ,其中排序是以一种有点人性化的方式完成的,带有标点符号除非作为最后手段(可能是 UTF-8 语言环境),否则将被忽略(带有afterbecause is before )。运行以纯字典顺序进行排序。添加to 来强制排序顺序一致是有意义的。mailcap
.
c
mail.rc
mailname
n
r
LC_ALL=C git commit
export LC_COLLATE=C
/etc/etckeeper/etckeeper.conf