3

我已经更改了 git 存储库中某些目录的大小写。然后我推送它们并注意到未更新的情况。

然后我发现了这个问题: git mv and only change case of directory

我已按照以下建议使用:

git add -A
git commit --amend -m 'updated cases'
git push origin

但 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.

我现在可以做些什么来更新案例而不破坏我的 git 存储库?

问候,

博多

PS:为避免以后出现此问题,您可以使用:

git config core.ignorecase false
4

1 回答 1

6

你需要:

git push --force

因为您已经用 --amend 重写了最后一个 SHA1,所以在使用git mv.

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


在 OsX 上,这个答案确实建议(以避免这个问题):

git config --unset-all core.ignorecase
git config --system core.ignorecase false 

OP kyogron 报告找到了一个可行的解决方案:

  • 创建一个新分支并签出这个新分支。
  • 然后删除.DS_Store损坏目录的目录中的文件并将其重命名为新名称。
  • 然后删除存储库中的错误目录(您可以使用 来查看它们git ls-files)并提交此更改。
  • 再次删除.DS_Store并现在将目录重命名为您想要的小写名称git mv
于 2012-12-09T15:12:51.953 回答