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

を使用しgit mvた後、最後の SHA1 を --amend で書き換えたので。

「修正されたコミットをリモート 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 に答える