大文字と小文字のみが異なるgitのファイルの名前を変更するにはどうすればよいですか?


14

git(Xcode)プロジェクトで、大文字と小文字が正しくないファイル名をコミットしました。今、私は名前を変更しようとしましたが、コミットすると次のようになります:

致命的:ファイルエイリアス 'MyProject / MyFile.h'を追加しません( 'MyProject / MyFilE.h'は既にインデックスに存在します)

これは、gitが、HFS +のような大文字と小文字を区別しない大文字と小文字を区別しないファイルシステムで実行されるために使用されていないためだと確信しています。しかし、どうすればそれを回避できますか?

両方のファイルの名前を別の名前に変更し、それをコミットしてから、必要な名前に戻しましたが、それでも失敗します(同じエラーメッセージが表示されます)。

回答:


21

stackoverflowで尋ねられ、答えられたように、ディスクイメージファイルに新しいファイルシステムを作成することを伴わないこれを行う簡単な方法があります。

既存のファイルを脇に移動し、その移動をコミットしてから、維持およびコミットしたいケースを使用して元に戻します。できた

例:

mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"

リンクの腐敗を避けるために、通常、リンクの背後にある回答の関連部分を回答の本文にコピーするようお願いします。
イアンC.

ありがとう@ ian-c。私は、このルールがstackexchangeファミリー内のリンクに適用されないことを望んでいました。
mspasov

1
ええ、私はあなたが言っていることを得るが、一貫性はいいです。
イアンC.

奇妙な。私はこれを試しましたが、今日はうまくいきました。ありがとう。
ケン

2

大文字と小文字を区別しないファイルシステムでこれを直接修正する方法をまだ見つけていません。大文字と小文字を区別するファイルシステムが必要です。

幸いなことに、Mac OS Xは仮想ディスクのマウントをサポートしているため、コンピューターで(一時的な)大文字と小文字を区別するファイルシステムをすばやく簡単に取得(作成)できます。

ディスクユーティリティを開き、新しいイメージを作成して、「フォーマット」フィールドを「Mac OS拡張」の大文字と小文字を区別するバージョンのいずれかに設定します。また、リポジトリに十分な大きさにするようにしてください。

新しいディスクをマウントし、その上にgitリポジトリをチェックアウトし、正しい名前のファイルに正しい内容が含まれていることを確認し、他のファイルを削除します。変更をコミットしてプッシュすると、ディスクイメージをアンマウントして削除できます。

クローン元のリモートサーバーがない場合(つまり、ハードドライブでローカルにgitリポジトリを実行している場合)、ハードドライブ上の他のgitリポジトリから直接クローンできることを忘れないでください。


1
それは非常に労働集約的です。これは、ディスクイメージファイル内の新しいファイルシステムを起動することなく実行できます。
イアンC.

1

ステップ1:ファイルの名前を(文字の場合だけではなく)もっと異なる名前に変更します。現在の名前と付けたい名前とは異なるランダムな名前を選択します。

ステップ2:GUI(Xcode)またはCLI(ターミナル)でこのファイルをコミットします

ステップ3:そもそも名前を変更したいので、ファイル名を変更します。したがって、今は、以前の名前の場合よりも多くの違いもあります。

ステップ4:名前を変更したファイルを再度コミットします。

手品は必要ありません。また、GUIまたはCLIによるコミットを選択できます。


0

sourcetreeを使用します。CLIを使用しない場合、これを行う簡単な手順があります。ファイルの名前を別の名前に変更して(たとえば、Index.phpをIndex_old.phpに)、コミットしてプッシュします。もう一度名前を目的の名前(index.php)に変更し、コミットして送信します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.