【发布时间】:2016-11-09 22:24:29
【问题描述】:
当我在 OS X 上克隆 Linux 源代码时,它们会立即被更改,而 git reset --hard 不会将内容带回。这是一个完整的会议:
$ git clone git://github.com/torvalds/linux.git
$ cd linux
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: include/uapi/linux/netfilter/xt_CONNMARK.h
modified: include/uapi/linux/netfilter/xt_DSCP.h
modified: include/uapi/linux/netfilter/xt_MARK.h
modified: include/uapi/linux/netfilter/xt_RATEEST.h
modified: include/uapi/linux/netfilter/xt_TCPMSS.h
modified: include/uapi/linux/netfilter_ipv4/ipt_ECN.h
modified: include/uapi/linux/netfilter_ipv4/ipt_TTL.h
modified: include/uapi/linux/netfilter_ipv6/ip6t_HL.h
modified: net/netfilter/xt_DSCP.c
modified: net/netfilter/xt_HL.c
modified: net/netfilter/xt_RATEEST.c
modified: net/netfilter/xt_TCPMSS.c
no changes added to commit (use "git add" and/or "git commit -a")
正如我们所见,文件在克隆后立即发生了变化。甚至不是他们的元数据,而是内容:
git diff include/uapi/linux/netfilter_ipv6/ip6t_HL.h
index ebd8ead..6e76dbc 100644
--- a/include/uapi/linux/netfilter_ipv6/ip6t_HL.h
+++ b/include/uapi/linux/netfilter_ipv6/ip6t_HL.h
@@ -1,6 +1,6 @@
-/* Hop Limit modification module for ip6tables
+/* ip6tables module for matching the Hop Limit value
* Maciej Soltysiak <solt@dns.toxicfilms.tv>
- * Based on HW's TTL module */
+ * Based on HW's ttl module */
#ifndef _IP6T_HL_H
#define _IP6T_HL_H
@@ -8,14 +8,14 @@
#include <linux/types.h>
enum {
- IP6T_HL_SET = 0,
- IP6T_HL_INC,
- IP6T_HL_DEC
+ IP6T_HL_EQ = 0, /* equals */
+ IP6T_HL_NE, /* not equals */
+ IP6T_HL_LT, /* less than */
+ IP6T_HL_GT, /* greater than */
};
-#define IP6T_HL_MAXMODE IP6T_HL_DEC
-struct ip6t_HL_info {
+struct ip6t_hl_info {
__u8 mode;
__u8 hop_limit;
};
系统信息:
- 文件系统: 日志式 HFS+
- 操作系统: OS X 10.11.5 (15F34)
- git 版本: 2.9.0
-
~/.gitconfig只有[user]条目。
发生了什么事?为什么克隆后文件立即被修改?
【问题讨论】:
-
可能是因为有多个名称相似的文件,它们在 ext3 上运行良好,但由于 HFS 不区分大小写而被覆盖。 IE。 “a.txt”和“A.txt”是同一个文件。尝试创建一个区分大小写的 HFS 文件系统(在磁盘映像或外部 USB 磁盘上)并在那里进行克隆。
-
@ThorbjørnRavnAndersen:这是正确的答案,你应该把它作为一个发布。
-
确实,这些文件有两个版本,在不同的情况下,所以git会混淆......
-
@torek 将评论扩展为答案。