git on mac osx:如何将文件名案例推送到原点?

bod*_*ser 3 git macos filenames github hfs+

我已经更改了我的git存储库中某些目录的大小写.然后我推了他们,注意到没有更新的情况.

然后我发现了这个问题: git mv并且只改变了目录的大小写

我按照建议使用:

git add -A
git commit --amend -m 'updated cases'
git push origin
Run Code Online (Sandbox Code Playgroud)

但git服务器返回成功而不是成功:

To git@github.com:kyogron/example.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:kyogron/example.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.
Run Code Online (Sandbox Code Playgroud)

我现在可以做些什么来更新案例而不会在我的git仓库中破坏更多?

问候,

博多

PS:为了避免将来出现这个问题,您可以使用:

git config core.ignorecase false
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 6

你需要:

git push --force
Run Code Online (Sandbox Code Playgroud)

因为你在使用git mv你的--amend重写了最后一个SHA1 .

它不会破坏您的回购,除非您有其他协作者已经从您之前的提交中撤出,如" 我如何将修改后的提交推送到远程git仓库? "中所述.
(在这种情况下,您需要其他选项来发布您的固定提交)


在OsX上,这个答案的确表明了(避免这个问题):

git config --unset-all core.ignorecase
git config --system core.ignorecase false 
Run Code Online (Sandbox Code Playgroud)

OP kyogron 报告已经找到了有效的解决方案:

  • 创建一个新分支并签出此新分支.
  • 然后删除.DS_Store损坏目录的目录中的文件并将其重命名为新名称.
  • 然后删除存储库中的错误目录(您可以查看它们git ls-files)并提交此更改.
  • 再次删除,.DS_Store然后将目录重命名为您想要的小写名称git mv