10

を実行していますが、あるコミットでは という名前のフォルダーがあり、別のコミットではgit rebaseという名前のフォルダーがあるため、行き詰まっています。それは正直な間違いであり、両方の場合にあるべきでした. ここで理解できる最善の方法は、両方のコミットからフォルダーを削除してから、リベースを再試行することですが、もっと良い方法が必要です。ProtoprotoProto

過去に、ファイルで大文字化の問題に遭遇したとき、私は git mv を使用しましたが、フォルダーでは git mv を実行できません。その理由はわかりません。

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

4

4 に答える 4

18

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

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

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

Git Unite - Fix Case Sensitive File Paths on Windowsで、ツール、使用法、およびその背後にある歴史を詳述したブログ投稿を書きました

于 2013-01-14T21:02:37.573 に答える
1

フォルダーは追跡されず、フォルダー内のファイルのみが追跡されるため、フォルダーの名前変更を Git 履歴に密輸することは困難です。oldFolderに名前を変更したいと仮定するoldfolderと、次のことを試すことができます。

  1. で最初にファイルを作成した時点からインタラクティブにリベースしますoldFolder。このフォルダーにファイルを追加するすべてのコミットを編集します。対話型リベースが停止したら、 を作成newFolderして実行しgit mv oldFolder/* newFolder/ます。インタラクティブなリベースを停止するたびに後者を実行します。

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

于 2012-12-11T20:40:17.123 に答える
0

git config --global core.ignorecase trueWindowsでの問題を解決するはずです。

于 2012-12-11T20:38:34.390 に答える
0

[編集済み] フォルダー内の各ファイルを「ProtoX」などの一時名に「git mv」してから、一時的な名前のファイルを「Proto」に「git mv」する必要があると思われます。Git はフォルダー自体を追跡しないためです。 - フォルダ内のファイルのみ。

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

于 2012-12-11T20:40:23.237 に答える