我基本上需要合并两棵树上的更改,将更改从分支 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