I'm confused how to revert changes in working tree: $ git fetch $ git merge "sync with origin" HEAD origin ....conflict.... $ git branch * master origin $ git status # .....: needs update # .....: needs update (In fact I never modified anything in this tree, and "git diff" showed many difference indeed, very strange). 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. 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: .... I use git-1.4.3.4.gbd45 under cygwin. -
That's windows and cygwin for you. They work together and may someday even figure how to commit the changes. 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 After git update-index --refresh you shouldn't have had 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. 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). -
It's said somewhere "git pull" has strange behaviour and fetch+pull 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 # It has been set. I guess the cause is a interrupted merge 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 # 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...
so, you just have an unresolved merge. It was discussed on this mailing list very recently (and actually is being discussed), so just look at yes, though what I can't understand is why don't you have unmerged entries... Maybe it comes from playing with When? Immediately after git reset --hard? Then you very likely have no permission to write (or lost it somehow) into the working directory, otherwise I don't see could this be and this is not. You do have changes, which could not be reset. I fail to see why. Are you sure you haven't accidentally repeated the merge after doing git reset --hard? And what was _exactly_ git merge told you, when it failed? -
Yes, immediately after git reset --hard. I'm sure I have write permission because all deleted files come back and no "permission denied" like message appears. I didn't run "git merge" after "git reset --hard" indeed. To get the message from "git merge", now I run it like this: $ git merge "sync from origin" HEAD origin Updating 088406b..ff51a98 include/linux/netfilter/xt_CONNMARK.h: needs update include/linux/netfilter/xt_DSCP.h: needs update include/linux/netfilter/xt_MARK.h: needs update include/linux/netfilter_ipv4/ipt_CONNMARK.h: needs update include/linux/netfilter_ipv4/ipt_DSCP.h: needs update include/linux/netfilter_ipv4/ipt_ECN.h: needs update include/linux/netfilter_ipv4/ipt_MARK.h: needs update include/linux/netfilter_ipv4/ipt_TCPMSS.h: needs update include/linux/netfilter_ipv4/ipt_TOS.h: needs update include/linux/netfilter_ipv4/ipt_TTL.h: needs update include/linux/netfilter_ipv6/ip6t_HL.h: needs update include/linux/netfilter_ipv6/ip6t_MARK.h: needs update net/ipv4/netfilter/ipt_ECN.c: needs update net/ipv4/netfilter/ipt_TOS.c: needs update net/ipv4/netfilter/ipt_TTL.c: needs update net/ipv6/netfilter/ip6t_HL.c: needs update net/netfilter/xt_CONNMARK.c: needs update net/netfilter/xt_DSCP.c: needs update net/netfilter/xt_MARK.c: needs update fatal: Entry 'net/ipv4/netfilter/ipt_ECN.c' not uptodate. Cannot merge. I really have never modified these files manually. -
You are just *very unlucky*. :-) The Linux kernel has case sensitive file names. In other words there are two files in the kernel: net/netfilter/xt_MARK.c net/netfilter/xt_mark.c and they have different content! On NTFS or FAT, where filenames are not case sensitive, these become the same file. So Git now starts to think that the file was modified, because one of those files overwrote the other when they were checked out. Moral of the story: You cannot work with the linux.git repository on a case insensitive filesystem, like NTFS, FAT (Windows), or HFS+ (Mac OS X). -- Shawn. -
Yes, you are very right.
$ git ls-files |tr A-Z a-z | sort | uniq -c |grep -v "1 "
2 include/linux/netfilter/xt_connmark.h
2 include/linux/netfilter/xt_dscp.h
2 include/linux/netfilter/xt_mark.h
2 include/linux/netfilter_ipv4/ipt_connmark.h
2 include/linux/netfilter_ipv4/ipt_dscp.h
2 include/linux/netfilter_ipv4/ipt_ecn.h
2 include/linux/netfilter_ipv4/ipt_mark.h
2 include/linux/netfilter_ipv4/ipt_tcpmss.h
2 include/linux/netfilter_ipv4/ipt_tos.h
2 include/linux/netfilter_ipv4/ipt_ttl.h
2 include/linux/netfilter_ipv6/ip6t_hl.h
2 include/linux/netfilter_ipv6/ip6t_mark.h
2 net/ipv4/netfilter/ipt_ecn.c
2 net/ipv4/netfilter/ipt_tos.c
2 net/ipv4/netfilter/ipt_ttl.c
2 net/ipv6/netfilter/ip6t_hl.c
2 net/netfilter/xt_connmark.c
2 net/netfilter/xt_dscp.c
2 net/netfilter/xt_mark.c
poor Windows... :-(
-Liu Yubao writes: > Yes, you are very right. > > $ git ls-files |tr A-Z a-z | sort | uniq -c |grep -v "1 " > 2 include/linux/netfilter/xt_connmark.h > 2 include/linux/netfilter/xt_dscp.h > 2 include/linux/netfilter/xt_mark.h > 2 include/linux/netfilter_ipv4/ipt_connmark.h > 2 include/linux/netfilter_ipv4/ipt_dscp.h > 2 include/linux/netfilter_ipv4/ipt_ecn.h > 2 include/linux/netfilter_ipv4/ipt_mark.h > 2 include/linux/netfilter_ipv4/ipt_tcpmss.h > 2 include/linux/netfilter_ipv4/ipt_tos.h > 2 include/linux/netfilter_ipv4/ipt_ttl.h > 2 include/linux/netfilter_ipv6/ip6t_hl.h > 2 include/linux/netfilter_ipv6/ip6t_mark.h > 2 net/ipv4/netfilter/ipt_ecn.c > 2 net/ipv4/netfilter/ipt_tos.c > 2 net/ipv4/netfilter/ipt_ttl.c > 2 net/ipv6/netfilter/ip6t_hl.c > 2 net/netfilter/xt_connmark.c > 2 net/netfilter/xt_dscp.c > 2 net/netfilter/xt_mark.c > > poor Windows... :-( Incidentally I have this in my tree for a while, but it is not good enough for general use, because you really need the original (not lowercased) file names to resolve the problem. But my shell scripting magic is not up to that task. diff --git a/templates/hooks--pre-commit b/templates/hooks--pre-commit index 723a9ef..0ceb01b 100644 --- a/templates/hooks--pre-commit +++ b/templates/hooks--pre-commit @@ -7,6 +7,17 @@ # # To enable this hook, make this file executable. +# Detect case challenges + +case_challenge=`git ls-files | tr A-Z a-z | sort | uniq -d` +if [ -n "$case_challenge" ] +then + echo >&2 "index contains file names differing only in case." + echo >&2 "lowercase names follow:" + echo >&2 "$case_challenge" + exit 1 +fi + # This is slightly modified from Andrew Morton's Perfect Patch. # Lines you introduce should not have trailing whitespace. ...
Maybe you have the files open in some editor? Otherwise something is broken. Could you try current git don't think It'd be as simple as step-by-step in debugger. Try to instrument builtin-read-tree.c or unpack-trees.c and just for fun, what does following print: git read-tree --reset -u HEAD && git update-index --refresh ? -
| Mattia Dongili | Re: Linux 2.6.21-rc6 |
| Greg Kroah-Hartman | [PATCH 024/196] mtd: Convert from class_device to device for MTD/mtdchar |
| Renato S. Yamane | Error -71 on device descriptor read/all |
| Chuck Ebbert | Why do so many machines need "noapic"? |
git: | |
| Mirko Stocker | Working with Git and CVS in a team. |
| Steffen Prohaska | Git-1.6.0.2-preview20080921 on Windows |
| Miles Bader | way to automatically add untracked files? |
| Tilman Sauerbeck | [BUG?] git log picks up bad commit |
| Brian A. Seklecki | sshd_config(5) PermitRootLogin yes |
| Jacob Yocom-Piatt | Re: Real men don't attack straw men |
| Parvinder Bhasin | BIND and CNAME-ing |
| Jerome Santos | sshd.config and AllowUsers |
| Patrick McHardy | pkt_sched: add DRR scheduler |
| ackman | RTL8169 driver no longer functioning with 8111b |
| Evgeniy Polyakov | [resend take 2 4/4] DST Makefile/Kconfig files. |
| Sami Farin | Linux 2.6.27.5 / SFQ/HTB scheduling problems |
| Kernel Panic when schedule is called | 1 hour ago | Linux kernel |
| VPN's on NetBSD | 14 hours ago | NetBSD |
| Why does uClinux 2.6.18 bootup block SuperIO UART IRQs that BIOS configured | 15 hours ago | Linux kernel |
| USB statistics | 17 hours ago | Linux kernel |
| Block Sub System query | 21 hours ago | Linux kernel |
| kernel module to intercept socket creation | 22 hours ago | Linux kernel |
| Image size changing during each build | 23 hours ago | Linux kernel |
| Soft lock bug | 1 day ago | Linux kernel |
| sysctl - dynamic registration problem | 1 day ago | Linux kernel |
| Question on swap as ramdisk partition | 1 day ago | Linux kernel |
