这是一个Linux 2.6内核存储库。我把它克隆到我当地的主机上。
之后。我没有做任何改变。但是当我“git status”。我找到了13个修改过的文件我想丢弃它们,但我不能。
> luke@Macbook-Pro~/Documents/workspace/linuxkernel/linux-2.6$ git
> status
> # On branch 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/linux/netfilter/xt_connmark.h
> # modified: include/linux/netfilter/xt_dscp.h
> # modified: include/linux/netfilter/xt_mark.h
> # modified: include/linux/netfilter/xt_rateest.h
> # modified: include/linux/netfilter/xt_tcpmss.h
> # modified: include/linux/netfilter_ipv4/ipt_ecn.h
> # modified: include/linux/netfilter_ipv4/ipt_ttl.h
> # modified: include/linux/netfilter_ipv6/ip6t_hl.h
> # modified: net/ipv4/netfilter/ipt_ecn.c
> # modified: net/netfilter/xt_dscp.c
> # modified: net/netfilter/xt_hl.c
> # modified: net/netfilter/xt_rateest.c
> # modified: net/netfilter/xt_tcpmss.c
> #
> # Untracked files:
> # (use "git add <file>..." to include in what will be committed)
> #
> # samples/hidraw/ no changes added to commit (use "git add" and/or "git commit -a")
> luke@Macbook-Pro~/Documents/workspace/linuxkernel/linux-2.6$ git
> checkout -- include/linux/netfilter/xt_connmark. h
> luke@Macbook-Pro~/Documents/workspace/linuxkernel/linux-2.6$ git
> status
> # On branch 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/linux/netfilter/xt_CONNMARK.h
> # modified: include/linux/netfilter/xt_dscp.h
> # modified: include/linux/netfilter/xt_mark.h
> # modified: include/linux/netfilter/xt_rateest.h
> # modified: include/linux/netfilter/xt_tcpmss.h
> # modified: include/linux/netfilter_ipv4/ipt_ecn.h
> # modified: include/linux/netfilter_ipv4/ipt_ttl.h
> # modified: include/linux/netfilter_ipv6/ip6t_hl.h
> # modified: net/ipv4/netfilter/ipt_ecn.c
> # modified: net/netfilter/xt_dscp.c
> # modified: net/netfilter/xt_hl.c
> # modified: net/netfilter/xt_rateest.c
> # modified: net/netfilter/xt_tcpmss.c
> #
> # Untracked files:
> # (use "git add <file>..." to include in what will be committed)
> #
> # samples/hidraw/ no changes added to commit (use "git add" and/or "git commit -a")
> luke@Macbook-Pro~/Documents/workspace/linuxkernel/linux-2.6$ git
> checkout -- include/linux/netfilter/xt_dscp.h
> luke@Macbook-Pro~/Documents/workspace/linuxkernel/linux-2.6$ git
> status
> # On branch 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/linux/netfilter/xt_CONNMARK.h
> # modified: include/linux/netfilter/xt_DSCP.h
> # modified: include/linux/netfilter/xt_mark.h
> # modified: include/linux/netfilter/xt_rateest.h
> # modified: include/linux/netfilter/xt_tcpmss.h
> # modified: include/linux/netfilter_ipv4/ipt_ecn.h
> # modified: include/linux/netfilter_ipv4/ipt_ttl.h
> # modified: include/linux/netfilter_ipv6/ip6t_hl.h
> # modified: net/ipv4/netfilter/ipt_ecn.c
> # modified: net/netfilter/xt_dscp.c
> # modified: net/netfilter/xt_hl.c
> # modified: net/netfilter/xt_rateest.c
> # modified: net/netfilter/xt_tcpmss.c
> #
> # Untracked files:
> # (use "git add <file>..." to include in what will be committed)
> #
> # samples/hidraw/ no changes added to commit (use "git add" and/or "git commit -a")
> luke@Macbook-Pro~/Documents/workspace/linuxkernel/linux-2.6$
>
编辑:
luke@Macbook-Pro~/Documents/workspace/linuxkernel/linux-2.6$ git config -l
user.name=99999
user.email=99999
alias.co=checkout
core.editor=mate -w
core.edit=mate -w
core.excludesfile=/Users/luke/.gitignore_global
difftool.sourcetree.cmd=opendiff "$LOCAL" "$REMOTE"
difftool.sourcetree.path=
mergetool.sourcetree.cmd=/Applications/SourceTree.app/Contents/Resources/opendiff-w.sh "$LOCAL" "$REMOTE" -ancestor "$BASE" -merge "$MERGED"
mergetool.sourcetree.trustexitcode=true
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
编辑:这是我的差异文件:
diff --git a/include/linux/netfilter/xt_CONNMARK.h b/include/linux/netfilter/xt_CONNMARK.h
index 2f2e48e..efc17a8 100644
--- a/include/linux/netfilter/xt_CONNMARK.h
+++ b/include/linux/netfilter/xt_CONNMARK.h
@@ -1,6 +1,31 @@
-#ifndef _XT_CONNMARK_H_target
-#define _XT_CONNMARK_H_target
+#ifndef _XT_CONNMARK_H
+#define _XT_CONNMARK_H
-#include <linux/netfilter/xt_connmark.h>
+#include <linux/types.h>
-#endif /*_XT_CONNMARK_H_target*/
+/* Copyright (C) 2002,2004 MARA Systems AB <http://www.marasystems.com>
+ * by Henrik Nordstrom <hno@marasystems.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+enum {
+ XT_CONNMARK_SET = 0,
+ XT_CONNMARK_SAVE,
+ XT_CONNMARK_RESTORE
+};
+
+struct xt_connmark_tginfo1 {
+ __u32 ctmark, ctmask, nfmask;
+ __u8 mode;
+};
+
+struct xt_connmark_mtinfo1 {
+ __u32 mark, mask;
+ __u8 invert;
+};
+
+#endif /*_XT_CONNMARK_H*/
diff --git a/include/linux/netfilter/xt_DSCP.h b/include/linux/netfilter/xt_DSCP.h
index 648e0b3..15f8932 100644
--- a/include/linux/netfilter/xt_DSCP.h
+++ b/include/linux/netfilter/xt_DSCP.h
@@ -1,26 +1,31 @@
-/* x_tables module for setting the IPv4/IPv6 DSCP field
+/* x_tables module for matching the IPv4/IPv6 DSCP field
*
* (C) 2002 Harald Welte <laforge@gnumonks.org>
- * based on ipt_FTOS.c (C) 2000 by Matthew G. Marsh <mgm@paktronix.com>
* This software is distributed under GNU GPL v2, 1991
*
* See RFC2474 for a description of the DSCP field within the IP Header.
*
- * xt_DSCP.h,v 1.7 2002/03/14 12:03:13 laforge Exp
+ * xt_dscp.h,v 1.3 2002/08/05 19:00:21 laforge Exp
*/
-#ifndef _XT_DSCP_TARGET_H
-#define _XT_DSCP_TARGET_H
-#include <linux/netfilter/xt_dscp.h>
+#ifndef _XT_DSCP_H
+#define _XT_DSCP_H
+
#include <linux/types.h>
-/* target info */
-struct xt_DSCP_info {
+#define XT_DSCP_MASK 0xfc /* 11111100 */
+#define XT_DSCP_SHIFT 2
+#define XT_DSCP_MAX 0x3f /* 00111111 */
+
+/* match info */
+struct xt_dscp_info {
__u8 dscp;
+ __u8 invert;
};
-struct xt_tos_target_info {
- __u8 tos_value;
+struct xt_tos_match_info {
__u8 tos_mask;
+ __u8 tos_value;
+ __u8 invert;
};
-#endif /* _XT_DSCP_TARGET_H */
+#endif /* _XT_DSCP_H */
diff --git a/include/linux/netfilter/xt_mark.h b/include/linux/netfilter/xt_mark.h
index ecadc40..41c456d 100644
--- a/include/linux/netfilter/xt_mark.h
+++ b/include/linux/netfilter/xt_mark.h
@@ -1,15 +1,6 @@
-#ifndef _XT_MARK_H
-#define _XT_MARK_H
+#ifndef _XT_MARK_H_target
+#define _XT_MARK_H_target
-#include <linux/types.h>
+#include <linux/netfilter/xt_mark.h>
-struct xt_mark_tginfo2 {
- __u32 mark, mask;
-};
-
-struct xt_mark_mtinfo1 {
- __u32 mark, mask;
- __u8 invert;
-};
-
-#endif /*_XT_MARK_H*/
+#endif /*_XT_MARK_H_target */
diff --git a/include/linux/netfilter/xt_rateest.h b/include/linux/netfilter/xt_rateest.h
index d40a619..6605e20 100644
--- a/include/linux/netfilter/xt_rateest.h
+++ b/include/linux/netfilter/xt_rateest.h
@@ -1,37 +1,15 @@
-#ifndef _XT_RATEEST_MATCH_H
-#define _XT_RATEEST_MATCH_H
+#ifndef _XT_RATEEST_TARGET_H
+#define _XT_RATEEST_TARGET_H
由于Stack Overflow长度限制。只有部分diff文件可以在这里复制。
仍然需要帮助
答案 0 :(得分:47)
git reset --hard HEAD
可以解决问题。
答案 1 :(得分:13)
这是因为Linux内核包含具有相同名称(但不同情况)的文件:
include/linux/netfilter/xt_connmark.h
include/linux/netfilter/xt_CONNMARK.h
答案 2 :(得分:12)
您可以使用:
git checkout .
要了解git checkout
和git reset
之间的区别,请参阅以下问题:
What's the difference between "git reset" and "git checkout"?
答案 3 :(得分:6)
这个问题是由一个非区分大小写的文件系统引起的(例如在Mac OS上)。您可以创建区分大小写的磁盘映像并安装它并在那里执行git工作,或使用其他操作系统进行开发。
答案 4 :(得分:4)
连续输入这些命令。
git stash
git stash drop
git stash
将已修改的文件存储在堆栈中以供以后检索。
git stash drop
丢弃它们。
答案 5 :(得分:3)
您可以删除未删除的文件,也可以删除
git clean -f
答案 6 :(得分:3)
还有另一种可能性与文件模式相关的问题。在这种情况下,您可以尝试git config core.filemode false
更多信息:How do I make Git ignore file mode (chmod) changes?
编辑:
另一种可能性是行结尾,尝试设置git config core.autocrlf true|false|input
并查看它是否有任何区别。
答案 7 :(得分:2)
问题类似于Strange behaviour of Git: mysterious changes cannot be undone
您需要一个不区分大小写的文件系统。如果您的PC是像我这样的Apple MAC,您可以创建区分大小写的磁盘。
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 25g ~/android.dmg
hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
# mount the android file image
function mountAndroid { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; }
# unmount the android file image
function umountAndroid() { hdiutil detach /Volumes/android; }
答案 8 :(得分:1)
modified: specific_filename
git checkout specific_filename
比使用git checkout .
一次将其全部删除更安全。
答案 9 :(得分:0)
使用git reset HEAD <file>...
取消登台
答案 10 :(得分:0)
如果您要删除与 origin 分支不同的所有文件和修改,但希望保留所有被忽略的文件(例如node_modules,.vscode,.idea等)。最好的选择是结合这两个命令:
git reset --hard && git clean -f
这将重置所有已修改的文件,并清除所有未暂存的文件。