기본적으로 두 트리의 변경 사항을 병합하여 분기 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
환경에 따라 이러한 명령을 약간 조정해야 하지만 작동하지 않을 이유는 없습니다.
추신: 전화할 때는 조심하세요 find -exec rm -rf
. 나는 보통 ls
사용하기 전에 먼저 find 명령을 확인합니다.rm