我们工作在混合大小写敏感/不敏感的环境(cywgin/linux),今天有人通过重命名文件,将S更改为s,在我们的工作流程中造成了一次小破坏。这导致各分支机构出现各种有趣的合并问题,而且相当诚实,没有人完全确定发生了什么。如何更改cygwin下git中的文件大小写?
在git中为cygwin更改文件框的最合适的方法是什么?我必须强调,我们是大小写敏感的,通常这样做的权利 - 如果它不是为S.
我们工作在混合大小写敏感/不敏感的环境(cywgin/linux),今天有人通过重命名文件,将S更改为s,在我们的工作流程中造成了一次小破坏。这导致各分支机构出现各种有趣的合并问题,而且相当诚实,没有人完全确定发生了什么。如何更改cygwin下git中的文件大小写?
在git中为cygwin更改文件框的最合适的方法是什么?我必须强调,我们是大小写敏感的,通常这样做的权利 - 如果它不是为S.
已经想了几分钟,它似乎很可能会git-mv
你需要什么。我确信它会尝试重命名(这可能是不区分大小写的操作系统上的禁用操作),然后将重命名添加到索引。这应该基于参数,而不是实际的文件 - 我在内建mv.c中看到rename_cache_entry_at(pos, dst);
。
我不知道这是否是你问或不是的一部分,但相对于你的分支混乱,这里就是你可能要采取的一般方法:
对于其他谁发现这一点,您将需要使用“git mv -f”来强制重命名,因为Cygwin会抱怨源和目标是相同的。 – 2010-06-07 15:31:52
我想指出,作为一个后备你可以操纵在索引条目(临时区域),从你就可以用“git的承诺”承诺在哪里(而不是“git的承诺-a “)与git update-index管道(低级别)命令。
我刚刚遇到类似这样的问题,我只是想将目录'脚本'重命名为'脚本'。我目前在Cygwin工作,所以它不是那么容易。如果我尝试像在GNU/Linux中那样做,我会得到一个错误。
$ git mv foo Foo
fatal: renaming foo failed: Invalid argument
不过,我意识到我可以绕过我以为是什么Windows的缺点,通过移动了两次,第一次是不冲突的名称,然后到实际所需的名称。
$ git mv foo Foo2 && git mv Foo2 Foo
我藏了我的工作树离开了这个变化,虽然这样我就可以单独的提交,并通过明显,因为现在我搬到无法从藏匿合并目录下的文件没有想到事情我树。 : - /在我的情况下,这是一个小问题,虽然(为了安全起见,我在尝试这个之前先对树进行了标记,但我总是可以用强有力的非版本化的方式来做它:P)。
你的cygwin能正确识别用户的组名吗?我可以不被认可的团体问题。你可能想要检查这个chmod cannot change group permission on cygwin
我从来没有在cygwin下使用git - git mv没有正确检查重命名吗? – Cascabel 2009-10-20 19:07:26