2012-12-11 28 views
7

私はgit rebaseをやっています。あるコミットにはProtoという名前のフォルダがありますが、もう一方のコミットにはprotoという名前のフォルダがあるので、私は立ち往生しています。それは正直な間違いで、両方の場合にプロトであったはずです。私がここで理解できる最良のことは、両方のコミットからフォルダを削除してから、もう一度リベースしようとすることです。ただし、より良い方法が必要です。Windows上のGitとフォルダの大文字と小文字の衝突を解決するにはどうすればよいですか?

これまで、ファイルの大文字化の問題に遭遇したとき、私はgit mvを使用しましたが、そのフォルダではgit mvを実行できませんでした。

Windowsのgitでフォルダの大文字化問題を修正する正しい方法は何ですか?

答えて

1

フォルダがフォルダ内のファイルだけが追跡されないため、Gitの履歴にフォルダ名を変更するのは難しいです。

  1. リベース対話的にあなたが最初oldFolderでファイルを作成した時点から:あなたは次のことを試みることができるoldfolderoldFolderの名前を変更したいと仮定すると。このフォルダにファイルを追加するすべてのコミットを編集します。対話型のリベースが終了したら、newFolderを作成し、git mv oldFolder/* newFolder/を実行します。インタラクティブ・リベースの停止ごとに後者を行います。

  2. 明らかに、oldFoldernewFolderは、Windowsで同じ単語の2つの異なる大文字のバージョンにすることはできません。したがって、手順1を繰り返してnewFolderoldfolderに変更します。

+0

助けてくれてありがとう、私は戻って1つのブランチからフォルダを削除して、リベースを実行してから、ポストリベースでファイルを手作業で追加しなければならなかった。 –

0

[編集] 私はあなたのように、「プロトックス」、そして「GitのMV」などの一時名には「gitのMV」「プロト」への一時名前のファイルをフォルダ内の各ファイルを必要と疑いますGitは自分自身でフォルダを追跡するのではなく、フォルダ内のファイルのみを追跡します。

ダブル「git mv」は、Windowsの大文字と小文字を区別しないファイルシステムで動作します。 (Linuxのように、大文字と小文字を区別するファイルシステムの 'proto'から 'Proto'に直接移動できるはずです。)

8

Windows上のgitリポジトリで、多数のファイルを移動したときに同様の問題が発生しました別のディレクトリに移動します。

Linux VMにリポジトリを複製し、git mvコマンドでbashスクリプトを実行して、ファイルパスの大文字小文字の問題を修正することで、問題を手動で修正しました。これは苦しいプロセスだったので、プロセスを自動化するユーティリティを開発することに決めました。

Git Uniteは、libgit2sharpライブラリを使用して書いた.NETコンソールアプリケーションです。プログラムは、Windowsファイルシステムが報告しているものとは異なるファイルパスの大文字小文字のすべてのエントリを識別します。

私は、使用をツールを詳細にブログ投稿を書き、その総額が修正されるようにGit Unite - Fix Case Sensitive File Paths on Windows

+1

ありがとうございました!これは、私たちの手ごわいリポジトリを手作業で修正する2〜3時間を節約しました。 –

+0

ありがとうたくさんの男。これは私たちのために非常に役立ちました!効果的で使いやすい –

関連する問題