1. ホーム
  2. Git

Git はファイル名の大文字と小文字を無視し、修正する

2022-02-13 07:30:56
<パス

転載先 http://blog.csdn.net/xx326664162/article/details/51523358 記事引用元 雪泉のブログ

また、私の他の類似の記事もご覧ください!こちらも参考になると思います。

普段の開発では、ファイル名の大文字・小文字を変更することがありますが、変更した後、Gitでは何も反応がありません。git statusを使用しているとき、以下のような状況に遭遇したら、それはGITが以下のように大文字と小文字を区別しないことを意味します。

[rock@ROCK-PC]$ /d/WampServer/www/hexu.org/code (dev)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Nothing to commit, working directory clean

git はファイル内で大文字と小文字を区別する

Git がファイル名の大きさに無頓着なのを修正するには?

オプション1:大文字と小文字を区別するように設定する(推奨されません)。

$ git config core.ignorecase false

この方法を使用すると、問題が発生します。

<テーブル ブランチ ファイル名 B TEST.txt A test.txt

Bブランチでは $ git config core.ignorecase false コマンドを実行し、手動でファイル名をTEST.txtに変更してから、Aブランチに戻ろうとすると、以下のエラーが発生します。

he@he-PC MINGW64 /f/StudioProjects/artandroidclient (B)
$ git checkout A
error: The following untracked working tree files would be overwritten by checkout:
        artandroidclient/src/main/java/cn/hdnc/artandroidclient/test.txt

Please move or remove them before you can switch branches.
Aborting


意味:Aブランチのtest.txtは、Bブランチのファイルを書き換える

いろいろ探した結果、両者のいいとこ取りのような
http://stackoverflow.com/questions/4858047/the-following-untracked-working-tree-files-would-be-overwritten-by-checkout

オプション2:ファイル名を変更する(推奨)。

最初の方法(推奨)。

git mv A B Rename A to B

名前を直接大文字から小文字に変更しても、この時点ではgitが大文字小文字を区別しないため、変更されることはありません。以下のようになります。

he@XueXuan-PC MINGW64 /f/StudioProjects/artandroidclient (master)
$ git mv artsdk/src/main/java/cn/hdnc/ArtSDK artsdk/src/main/java/cn/hdnc/artsdk
Rename from 'artsdk/src/main/java/cn/hdnc/ArtSDK' to 'artsdk/src/main/java/cn/hdnc/artsdk/ArtSDK' failed. Should I try again? (y/n) n
fatal: renaming 'artsdk/src/main/java/cn/hdnc/ArtSDK' failed: Permission denied


まずファイル名を他のものに変更し、次に指定したファイル名に変更します。これを以下に示します。


he@XueXuan-PC MINGW64 /f/StudioProjects/artandroidclient (master)
$ git mv artsdk/src/main/java/cn/hdnc/ArtSDK artsdk/src/main/java/cn/hdnc/art

he@XueXuan-PC MINGW64 /f/StudioProjects/artandroidclient (master)
$ git mv artsdk/src/main/java/cn/hdnc/ArtSDK artsdk/src/main/java/cn/hdnc/artsdk
fatal: bad source, source=artsdk/src/main/java/cn/hdnc/ArtSDK, destination=artsdk/src/main/java/cn/hdnc/artsdk

he@XueXuan-PC MINGW64 /f/StudioProjects/artandroidclient (master)
$ git mv artsdk/src/main/java/cn/hdnc/art artsdk/src/main/java/cn/hdnc/artsdk  

2つ目の方法

git mvを実行することは、以下の3つのコマンドを実行することと同じです( 詳細 ).

$ mv README.md README
$ git rm README.md
$ git add README

ですから、自分でこれらのコマンドを実行して、git mv にアクセスすることもできます。

git rmコマンドを使うときは、まずデータのバックアップをしましょう!!!!

$ git rm ; git add ; git commit -m "rename file"

レポジトリをみんなと共有しているので、私が使ったオプション2で解決しました。

$ git rm code/library/BuildTag*.php; git status
On branch dev
Changes to be committed:
  (use "git reset HEAD ... " to unstage)

        deleted: code/library/BuildTagAfc.php
        deleted: code/library/BuildTagAfs.php

rock@ROCK-PC /d/WampServer/www/hexu.org/code (dev)
$ git add code/library/BuildTag*.php; git status
On branch dev
Changes to be committed:
  (use "git reset HEAD ... " to unstage)

        renamed: code/library/BuildTagAfc.php -&gt; code/library/BuildTagafc.php
        renamed: code/library/BuildTagAfs.php -&gt; code/library/BuildTagafs.php

参考 http://ju.outofmemory.cn/entry/95443

技術について簡単に理解し、より多くを学ぶために、私の公開ウェブサイトで私をフォローしてください。