問題タブ [git-mv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - git-mv の目的は何ですか?
私が理解していることから、Git はファイルの名前変更/移動/コピー操作を実際に追跡する必要はありませgit mv
ん。マニュアルページは特に説明的ではありません...
時代遅れですか?通常のユーザーが使用するためのものではなく、内部コマンドですか?
git - Gitでファイルの名前変更を処理する
Gitでファイルの名前を変更するときは、変更をコミットし、名前の変更を実行してから、名前を変更したファイルをステージングする必要があることを読みました。Gitは、ファイルを新しい追跡されていないファイルとして表示するのではなく、コンテンツからファイルを認識し、変更履歴を保持します。
しかし、今夜これを行うと、結局はに戻りましたgit mv
。
Finderでスタイルシートの名前をからiphone.css
に変更しましたmobile.css
:
そのため、Gitは、CSSファイルを1つ削除し、新しいファイルを追加したと見なします。それは私が望むものではありません。名前の変更を元に戻し、Gitに作業を任せましょう。
私は始めたところに戻っています:
git mv
代わりに使用しましょう:
私たちは元気そうです。では、Finderを使用したときに、Gitが初めて名前の変更を認識しなかったのはなぜですか?
git - gitを使用した「gitrm」および「gitmv」の実用的なユースケース?
gitがファイルやディレクトリを削除/移動するための「gitrm」と「gitmv」を提供していることを私は知っています。しかし、これの実際の使用例はわかりません。
通常、私はファイルなどをコマンドラインでmvまたはrmするだけで、必要なすべてのアクションが完了したら、「gitadd-u」と「gitadd。」を実行できます。ここで答えます。
私は何かが足りないのですか?'gitrm'と'gitmv'だけができるケースはありますか?
git - git mv と MS-DOS の動きに違いはありますか?
質問
git mv
MS-DOSmove
や Windows エクスプローラーでファイルを移動するのではなく、コマンドで Git 追跡ファイルを移動すると違いはありますか?
Subversion の時代には、たとえば TortoiseSVNSVN Move versioned files here
コマンドを使用して履歴をそのまま保持する必要がありました。
Git でも同じように動作することを期待していましたが、テスト (以下の例を参照) では、Git 自体がファイルが移動されたことを検出し、履歴がそのまま保持されていることが示されました。
では、なぜgit mv
まったく使用するのですか?
例
使用していないにもかかわらず、履歴全体が保持されておりgit mv
、Git は名前の変更を検出したと言います。
git - Git: サブモジュールを再帰的に移動する (ネストされたサブモジュール)
私は次のgit構造を持っています
gitサブモジュールcをフォルダー2015に移動したいと思います。これを行うための「汚い方法」を知っています(.git/configを変更し、.git/modulesファイル内のいくつかのファイルでgitdirを変更する必要があります)
私は最近、 git mv がこれを実行できるはずだと読みました。
これは、ネストされたサブモジュール (私の場合は d) がないリポジトリでは問題なく機能します。ただし、ディレクトリでこのコマンドを実行すると、次のようなエラーが発生します
(注、このエラーは、上記の移動を実行した後に git ステータスで発生します)
この移動を行うクリーンな方法 (つまり、.git/modules ファイルのパスを手動で変更する必要のない方法) を知っている人はいますか?
編集: (2015 年 6 月 10 日)
git構成ファイルの変更を伴わない私の現在の最良の解決策は(最初に、dへのすべての変更がコミットされ、どこかにプッシュされていることを確認してください)
編集: (2015 年 8 月 10 日)
さらに邪魔にならない回避策
編集:(2018年9月21日)
git バージョン 2.19 以降。これは修正されgit mv
、期待どおりに動作します。
git - gitでのコミット後にファイルの名前を後で変更する
誰かがファイル名とその内容を変更して、それが同じファイルであることを git が検出できないようにしました。
彼らも を使っていなかったgit mv
ので、pull request を受け取ったとき、新しいファイルが追加され、古いファイルが削除されているのを見たので、レビューするのは現実的ではありませんでした。
ナイスガイとして、私は彼らのコードを引っ張って遅らせようとしたので git mv
、彼らのプルリクエストにコミットを追加して、Github レビューページで物事を美しく見ることができましたが、それはうまくいきませんでした.
ファイルの死後の名前を変更する方法はありますか?
git - ファイルをコミットできず、誤って mv で名前が変更されました
誤って mv を使用して、git の下にあるファイルの名前を変更してしまいました。ファイルの名前を同じままで小文字から大文字に変更しました。
mv abc.java ABC.java
その後、ファイルを変更してコミットしました。
このファイルの実際の git rename を行うにはどうすればよいですか? Git bash は、ABC.java と abc.java の違いを理解していないようです。
マスターで(他の人が)何が変更されたのかわかりませんが、ブランチに移動した後、変更をファイルにコミットできなくなりました。古いファイル インデックスがまだ存在していると表示されます。
$ git commit -m "renamed to uppercase" ABC.java fatal: ファイル エイリアス 'dir1/ABC.java' を追加しません ('dir1/abc.java' は既にインデックスに存在します)
git status を実行すると、名前が変更されたファイルが表示されますが、名前が変更されたファイルをコミットできません。abc.java を削除しようとすると (これは実際には少なくともローカルには存在しません)、再び (大文字と小文字を区別しないためだと思います) git は新しいものを削除します。
これから新しいレポを複製すると、レポは古い名前(abc.java)のファイルを引き出しますが、最近失敗したものまですべての変更がそこにあります。
git - 名前の変更に相当する git
bash ではfind . -name jndi.properties -exec rename 's/jndi/environment/' {} \;
、すべての jndi.propertie ファイルを再帰的に検索し、environment.properties に名前を変更することができます。
しかし、git status は mv を認識せず、削除と追加を別々に表示します。再帰を行うにはどうすればよいgit mv
ですか?
git - 「git mv」がファイルを移動しないのはなぜですか? それを「通常」に動作させる方法は?
ここで私の無知をお許しください... これが背景です: テストスクリプトを整理するために TestScritps ディレクトリを作成しました。3 つのスクリプトを から に移動し<root dir>
ました<root dir>/TestScripts
。一度に 1 つずつ移動し、それぞれの後にローカル コミットを実行しました。次に、すべての変更をプッシュしました。
私は別のマシンに行き、プルを実行しました:
ファイルがコピーされただけであることに注意してください。彼らは動かされませんでした。
git-mv
man ページを確認しましたが、誤った動作については議論されていないようです。
2 つの質問があります。git mv
ファイルをコピーするだけで、移動しないのはなぜですか? どうすればgit mv
「通常」に実行できますか? ここで「通常」とは、コマンド ラインを使用したほぼすべての人が期待することを意味します。つまり、ファイルを から<target location>
に移動します<destination location>
。
関連するコマンド履歴は次のとおりです。