-1

ディレクトリが移動されたブランチにマージしたいのですが、ブランチのこのディレクトリにファイルを追加しました。ただし、これを実行しようとすると、ブランチの新しいファイルが新しいディレクトリに移動されませんでした。

これが関連しているかどうかはわかりませんが、このリポジトリの追加の問題は、以前は「新しい」ディレクトリも存在し、他のブランチが同時に新しいディレクトリの古いバージョンを削除し、古いディレクトリを一番上に移動したことです。それの。古いバージョンの新しいディレクトリが存在するのは、バージョン管理の目的でリポジトリ内のディレクトリが誤用されたためでした。これは実際には git で処理する必要がありましたが、当時は便利なことでした。

では、「インタラクティブ マージ」を実行している間 (つまり、マージの競合を解決したり、 を使用したりgit merge --no-commit)、新しいファイルをすべて見つけて、それらを新しいディレクトリに移動するにはどうすればよいでしょうか?

問題は、この「マージ状態」にある間:

  1. マージ中に削除されるファイルは、実際にはまだ削除されていません。それらを新しいディレクトリに移動したくありません。これらのファイルのバージョンが古い可能性があるのではないかと心配しているからです。
  2. 古いディレクトリには、無視されたファイルもいくつかあります。私もそれらを移動したくありません。
  3. git status新しいファイルは追加されたものとして表示されません。それらはそうではないためです-それらはすでに現在のブランチにコミットされています。
  4. 問題のファイルは、新しいディレクトリと古いディレクトリの両方の作業ツリーに実際に存在しますが、新しいディレクトリの git に登録されていないようです (git のバグの可能性がありますか? ここで何が起こっているのか混乱しています)。
4

1 に答える 1

0

ポイント 2 は、ほとんどの無視されたファイルでは回避する必要はありませんが、特定の方法で移動すると正しく機能しない種類のファイルがあるため、本当にそれらを削除したい場合は、git clean -i -x -d <old directory>.

ポイント 1 については、 を実行して削除を実行できますgit checkout -- <old directory>

ポイント 3 は、移動するすべてのファイル (およびそれらのファイルのみ) が古いディレクトリに存在するため、重要ではありません。

あとはそれらを移動するだけです。新しいディレクトリは空ではないため、これは少し注意が必要ですが、Linux と Mac OS X ではこの回答を使用できます。残念ながら、そのスクリプトは移動を git に登録しないため、mvコマンドをgit mv -fそのディレクトリに変更することをお勧めします。 script (-fこの場合、ポイント 4 により指定する必要があります)。

于 2015-08-05T19:07:15.390 に答える