osc*_*enk 250 git macos version-control case-sensitive
当我尝试将目录从FOO重命名为foo时,git mv FOO foo我得到了
fatal: renaming 'FOO' failed: Invalid argument
Run Code Online (Sandbox Code Playgroud)
好.所以我试试git mv FOO foo2 && git mv foo2 foo
但当我尝试通过git commit .我得到
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# foo
nothing added to commit but untracked files present (use "git add" to track)
Run Code Online (Sandbox Code Playgroud)
当我通过git add foo无变化添加目录并git commit .再次给我相同的消息.
我究竟做错了什么?我以为我使用区分大小写的系统(OSX)为什么我不能简单地重命名目录?
Ada*_*ruk 390
您处于不区分大小写的环境中.此外,添加-A不会照顾,mv因为Git理解它的删除方面.警告!确保在执行此操作时没有其他更改或未跟踪的文件,或者它们将作为此更改的一部分提交! git stash -u首先,做到这一点然后再做git stash pop.继续:要解决此问题,请执行以下操作:
mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"
Run Code Online (Sandbox Code Playgroud)
这是改变工作目录,提交然后折叠2次提交的方法.你可以只在索引中移动文件,但对于git新手的人来说,它可能不够明确到底发生了什么.较短的版本是
git mv foo foo2
git mv foo2 FOO
git commit -m "changed case of dir"
Run Code Online (Sandbox Code Playgroud)
正如其中一条评论中所建议的那样,你也可以做一个交互式的rebase(git rebase -i HEAD~5如果在5次提交之前引入了错误的情况)来修复那里的情况并且没有错误的情况出现在历史的任何地方.如果你这样做,你必须要小心,因为从那时起提交哈希将是不同的,而其他人将不得不将他们的工作重新组合或重新合并到最近的分支.
这与更正文件名有关:git是否区分大小写?
mip*_*adi 139
您希望将该选项设置core.ignorecase为false,这将使Git关注本机不支持它的文件系统上的大小写.要在您的回购中启用:
$ git config core.ignorecase false
Run Code Online (Sandbox Code Playgroud)
然后你可以重命名该文件,git mv它将按预期工作.
mga*_*dda 63
我能够通过使用临时文件名使用git 1.7.7来解决这个问题:
$ git mv improper_Case improve_case2
$ git mv improve_case2 improve_case
$ git commit -m "<your message>"
Run Code Online (Sandbox Code Playgroud)
wiz*_*ons 13
(git mv- 免费变种.)
我在Mac OS X 10.9上的Git中遇到了这个问题.我解决了如下:
git rm -r --cached /path/to/directory
这将在Git中删除目录,但实际上并没有删除任何物理文件(--cached).这也使得现在具有正确情况的目录显示在未跟踪的文件中.
所以你可以这样做:
mv /path/to/directory /path/to/DIRECTORY
git add -A /path/to/DIRECTORY
Run Code Online (Sandbox Code Playgroud)
然后Git会识别出你已经重命名了文件,当你这样做时,你会git status看到很多renamed:行.检查它们并确保它们看起来正确,如果是这样,您可以正常提交更改.
git mv -f path/to/foo/* path/to/FOO/
Run Code Online (Sandbox Code Playgroud)
/*).不要重命名单个文件.这导致了一个错误,在这个答案中描述.
如果您首先想要查看结果,请使用-n:
git mv -f -n path/to/foo/* path/to/FOO/
Run Code Online (Sandbox Code Playgroud)
你做了一个mv:
现在Git应该在其内部文件和文件系统中重命名文件夹BOTH.
我有一个相关的问题。
一个名为“Pro”的文件夹(首先创建)和另一个名为“pro”的文件夹(错误创建)。在 Mac 中,这是同样的事情,但根据 git 有所不同。
$ git config core.ignorecase false
Run Code Online (Sandbox Code Playgroud)
git config 将文件重命名到正确的文件夹(谢谢),并且还在“pro”中创建了 Ghost 文件(不!!)。我无法将幽灵文件更改添加到轨道中,并且无法签出其他分支,除非随身携带这些文件,而且我也无法以某种方式重置它。
相反,我做了
$ git rm -r --cached pro
$ git status // => pro files removed, new Pro files untracked
$ git add Pro
Run Code Online (Sandbox Code Playgroud)
为了使其更加安全,我在一个单独的修复分支中进行了操作,然后合并回主分支
对于由创建的幽灵文件问题,任何大师都可以解释如何以及为什么吗?提前致谢。
| 归档时间: |
|
| 查看次数: |
74051 次 |
| 最近记录: |