デフォルトでは、2つのツリーの変更をマージして、ブランチ2の変更をブランチ1に適用する必要があります。私は次の木を持っています:
media
├── cd
│ ├── 0
│ │ ├── file1
│ │ ├── file2
│ │ └── file3
│ ├── 1
│ │ ├── file1
│ │ ├── file2
│ │ └── file3
│ └── 2
│ ├── file1
│ ├── file2
│ └── file3
├── dvd
│ ├── 0
│ │ ├── file1
│ │ ├── file2
│ │ └── file3
│ ├── 1
│ │ ├── file1
│ │ ├── file2
│ │ └── file3
│ └── 2
│ ├── file1
│ ├── file2
│ └── file3
└── stuff
├── 0
│ ├── file1
│ ├── file2
│ └── file3
├── 1
│ ├── file1
│ ├── file2
│ └── file3
└── 2
├── file1
├── file2
└── file3
ブランチ 2 でファイルを変更したので、ブランチ 1 に適用する必要があります。ブランチ 1 に移動しようとすると、次のエラーが発生します。
mv: cannot move `/branch2/media/cd' to `/branch1/media/cd': Directory not empty.
使用する必要がある別のコマンドがありますか?mv -f
これは完了していないようです。
答え1
代替を使用しないのはなぜですかrsync
?
rsync -a /branch2/media/ /branch1/media/
mv
動けない理由は、すでにその中に一つがあるから /branch2/media/cd/
です。空でないディレクトリを破壊することを拒否します。/branch1/media
/branch1/media
cd/
mv
答え2
rsync
通常、他のバージョン管理ツールを使用することをお勧めします。
それでもクラックするには、まず/branch1/media/にある既存のファイルを削除します。find
find /branch1/media -type d -exec rm -rf {} \+
その後、行動を続けます。
for i in $(find /branch2/media -type d); do
mv /branch2/media/$dir /branch1/media
done
環境に応じてこれらのコマンドを少し調整する必要がありますが、機能しない理由はありません。
PS:電話するときは注意してくださいfind -exec rm -rf
。私は通常ls
使用する前にまずfindコマンドをチェックします。rm