web-dev-qa-db-ja.com

Gitリポジトリで、ディレクトリの名前を正しく変更する方法

名前を変更するディレクトリを新しいディレクトリに任意の名前でコピーし、 古いディレクトリを削除する 、そしてgit addgit commit、およびPushをすべて削除するとうまくいくと思います。しかし、これは最善の方法ですか?

483
qazwsx

基本的な名前の変更(または移動):

git mv <old name> <new name>

大文字と小文字を区別する名前の変更 - 例: casesensitiveからCaseSensitiveへ - 2つのステップを使用しなければなりません:

git mv casesensitive tmp
git mv tmp CaseSensitive

Gitの大文字と小文字の区別についての詳細…

…続いてcommitとPushがgitリポジトリでディレクトリ名を変更する最も簡単な方法です。

863
CB Bailey

このエラーが表示された場合:致命的: 'フォルダ名'の名前変更に失敗しました:無効な引数

これを試して:

git mv foldername tempname && git mv tempname folderName

81

1.フォルダの名前をoldfolderからnewfolderに変更します

git mv oldfolder newfolder

2. newfolderがすでにあなたのリポジトリに入っていて、それを上書きして使いたい場合は: - force

git mv -f oldfolder newfolder

Git mvで名前を変更した後は、indexに変更を追加してコミットすることを忘れないでください。

3.大文字と小文字を区別しないファイルシステムでfoldernameをfolderNameに変更 /

通常のmvコマンド(git mvではない)を使用した単純な名前変更は、gitからのファイル変更として認識されません。次のように「git mv」コマンドで試してみると

git mv foldername folderName

大文字と小文字を区別しないファイルシステムを使用している場合Macを使用していて、大文字と小文字を区別するように設定していないと、次のようなエラーメッセージが表示されます。

致命的:「foldername」の名前変更に失敗しました:無効な引数

そしてここにあなたがそれを機能させるためにあなたができることがあります: -

git mv foldername tempname && git mv tempname folderName

これは、最初にフォルダーの名前を完全に異なるフォルダー名に変更することによって、名前変更プロセスを分割します。別のフォルダ名に名前を変更した後、フォルダは最終的に新しいfolderNameに名前を変更できます。これらの「git mv」の後にも、変更を追加してコミットすることを忘れないでください。これはおそらく美しいテクニックではありませんが、完璧に機能します。ファイルシステムはまだ大文字と小文字の区別の変更を認識しませんが、gitはそれを新しいフォルダ名に名前変更することで認識しています。

46
akshay_rahar

ファイルシステムを使用してディレクトリの名前を変更できます。その後、git rm <old directory>git add <new directory>を実行できます( ヘルプページ )。その後、コミットしてプッシュすることができます。

Gitは、内容が同じで、それが名前変更操作であることを検出し、それが履歴の名前変更エントリとして表示されます。 git statusを使用して、コミット前にこれが当てはまることを確認できます。

9
Oleksi

Webアプリケーションからはできないと思いますが、Git Clientのすべてのフォルダの名前を変更できます。コミットしてリモートリポジトリにプッシュするよりも、新しい名前のフォルダにファイルが移動します。

非常によく似た問題がありました。 Abc - > abcのように別のフォルダを大文字から小文字に変更しなければなりませんでした。リモートリポジトリ。その後、すべてのフォルダを小文字の元の名前(abcなど)に変更しました。

3
Syncro

私はそれを2段階で解決しました。 mvコマンドを使用してフォルダの名前を変更するには、そのための権限が必要です。正しい権限がない場合は、次の手順に従います。 casesensitiveからCasesensitiveに名前を変更したいとします。

ステップ1:エクスプローラからフォルダ(大文字と小文字を区別)を別の名前に変更します。例:folder1に対して大文字と小文字を区別する名前を変更して、この変更をコミットします。

手順2:この新しく名前を付けたフォルダ(folder1)の名前を、大文字と小文字が区別される名前(Casesensitive)に変更します。 folder1を大文字と小文字を区別するに変更します。この変更を確定してください。

0
Nilesh