Subject: Re: how to revert changes in working tree?

From: Liu Yubao <[email-masked]>
Date: Wed, 06 Dec 2006 17:57:43 +0800

Alex Riesen wrote:
> On 12/6/06, Liu Yubao <[email-masked]> wrote:
>> I'm confused how to revert changes in working tree:
>>
>> $ git fetch
>> $ git merge "sync with origin" HEAD origin
>> ....conflict....
> 
> You may want to consider git pull. It'd do exactly the same

It's said somewhere "git pull" has strange behaviour and fetch+pull
is recommended.

>> $ git branch
>> * master
>>   origin
>> $ git status
>> # .....: needs update
>> # .....: needs update

sorry, I made a mistake, that should come from "git merge",
here is the message from "git status":
# Changed but not updated:
#   (use git-update-index to mark for commit)
#
#       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_ipv4/ipt_CONNMARK.h
#       modified:   include/linux/netfilter_ipv4/ipt_DSCP.h
#       modified:   include/linux/netfilter_ipv4/ipt_ECN.h
#       modified:   include/linux/netfilter_ipv4/ipt_MARK.h
#       modified:   include/linux/netfilter_ipv4/ipt_TCPMSS.h
#       modified:   include/linux/netfilter_ipv4/ipt_TOS.h
#       modified:   include/linux/netfilter_ipv4/ipt_TTL.h
#       modified:   include/linux/netfilter_ipv6/ip6t_HL.h
#       modified:   include/linux/netfilter_ipv6/ip6t_MARK.h
#       modified:   net/ipv4/netfilter/ipt_ECN.c
#       modified:   net/ipv4/netfilter/ipt_TOS.c
#       modified:   net/ipv4/netfilter/ipt_TTL.c
#       modified:   net/ipv6/netfilter/ip6t_HL.c
#       modified:   net/netfilter/xt_CONNMARK.c
#       modified:   net/netfilter/xt_DSCP.c
#       modified:   net/netfilter/xt_MARK.c
#
nothing to commit

>> (In fact I never modified anything in this tree, and "git diff"
>> showed many difference indeed, very strange).
> 
> That's windows and cygwin for you. They work together
> and may someday even figure how to commit the changes.

Yes, I am using cygwin :-(

> 
> They problem is the exec-bit which windows does not
> have and cygwin failed to correctly workaround the
> limitation.
> 
> Do a "git repo-config core.filemode false" to almost
> disable the checks for exec bit.
> 

It has been set. I guess the cause is a interrupted merge
operation that leads to textual difference.

>> I tried "git update-index --refresh", "git reset --hard",
>> "git reset --hard master", "git checkout master",
>> "git checkout -f master", but "git status" still said same
>> as above.
> 
> After git update-index --refresh you shouldn't have had
> the diffs (unless you actually had textual changes).
> 
>> At last, I deleted all files that were reported to be updated
>> with "rm -rf", ran "git checkout master" and "git status", then
>> git reported:
>> #       deleted:    ....
>> #       deleted:    ....
> 
> Now do a git reset --hard and you should be set,
> unless you're unlucky enough to work on FAT,
> where probably nothing will save you.
> 

After run "git reset --hard", all deleted files come back, but I reach
the old state:
$ git status
# Changed but not updated:
#   (use git-update-index to mark for commit)
#
#       modified:   include/linux/netfilter/xt_CONNMARK.h
#       modified:   include/linux/netfilter/xt_DSCP.h
...
#       modified:   net/netfilter/xt_MARK.c
#
nothing to commit

> And avoid using any "special" characters (8bit, utf/unicode)
> in filenames, while you're on windows: you'll never be able
> to share the repository (unless others agree to use your
> rules for language and filesystem encoding).
> 
In fact, I'm operating the linux-2.6 tree, so no special characters.

HEAD: commit 088406bcf66d6c7fd8a5c04c00aa410ae9077403
master: commit 088406bcf66d6c7fd8a5c04c00aa410ae9077403
origin: commit ff51a98799931256b555446b2f5675db08de6229
"git diff --cached" shows nothing;
"git diff" shows many diffs:

diff --git a/include/linux/netfilter/xt_CONNMARK.h b/include/linux/netfilter/xt_CONNMARK.h
index 9f74468..c592f6a 100644
--- a/include/linux/netfilter/xt_CONNMARK.h
+++ b/include/linux/netfilter/xt_CONNMARK.h
@@ -1,5 +1,5 @@
-#ifndef _XT_CONNMARK_H_target
-#define _XT_CONNMARK_H_target
+#ifndef _XT_CONNMARK_H
+#define _XT_CONNMARK_H

 /* Copyright (C) 2002,2004 MARA Systems AB <http://www.marasystems.com>
  * by Henrik Nordstrom <[email-masked]>
@@ -10,16 +10,9 @@
  * (at your option) any later version.
  */

-enum {
-       XT_CONNMARK_SET = 0,
-       XT_CONNMARK_SAVE,
-       XT_CONNMARK_RESTORE
+struct xt_connmark_info {
+       unsigned long mark, mask;
+       u_int8_t invert;
 };
.....