Git mv 没有按预期工作(文件位置错误)
Git mv doesn't work as expected (wrong files location)
作为我的任务的一部分,我需要将组件从三个地方合并到一个地方。换句话说,将文件夹(包括许多子文件夹和文件)移动到一个现有文件夹。
我正在使用 git mv
进行此操作,但问题是,一旦我尝试将(使用 git merge
)非合并分支合并到合并分支,我会遇到很多冲突,其中大部分与 Git 刚刚移动到错误位置的文件有关。
知道为什么 Git 不知道如何正确处理它吗? (Git 版本是最新的。)
示例:
合并前:
│ └── dir1
│ │ └── python1
│ │ │ └── test1.py
│ └── dir2
│ │ └── python2
│ │ │ └── test2.py
│ └── dir3
│ │ └── python3
│ │ │ └── test3.py
合并后:
│ └── dir1
│ └── dir2
│ │ └── python1
│ │ │ └── test1.py
│ │ └── python2
│ │ │ └── test2.py
│ │ └── python3
│ │ │ └── test3.py
│ └── dir3
合并前(目标树):
│ └── dir1
│ │ └── python1
│ │ │ └── test1.py
│ │ │ └── test4.py
合并后:
│ └── dir1
│ └── dir2
│ │ └── python1
│ │ │ └── test1.py
│ │ └── python2
│ │ │ └── test2.py
│ │ │ └── test4.py
│ │ └── python3
│ │ │ └── test3.py
│ └── dir3
更新
我再添加一个案例,答案似乎不支持:
合并后的源代码树:
│ └── dir1
│ └── dir2
│ │ └── python1
│ │ │ └── test1.py
│ │ └── python2
│ │ │ └── test2.py
│ │ └── python3
│ │ │ └── test3.py
│ └── dir3
合并前(目标树):
│ └── dir1
│ │ └── python1
│ │ │ └── test1.py
│ │ │ └── test4.py
| | | └── new_test
│ │ │ └── test5.py
合并后(使用答案中的 ORT
命令):
│ └── dir1
│ │ └── python1
| | | └── new_test
│ │ │ └── test5.py
│ └── dir2
│ │ └── python1
│ │ │ └── test1.py
│ │ │ └── test4.py
│ │ └── python2
│ │ │ └── test2.py
│ │ └── python3
│ │ │ └── test3.py
│ └── dir3
如您所见,它检测到新文件及其新位置 (test4.py),但未检测到新文件夹(test5.py)。我希望它也会将它移动到 python2 下的新位置,因为文件 (test4.py) 和文件夹 (`new_test) 具有相同的父级 (python1) .
我会与 GIT 支持团队核实并更新
答案和本帖一样(我写的时候没注意):
作为我的任务的一部分,我需要将组件从三个地方合并到一个地方。换句话说,将文件夹(包括许多子文件夹和文件)移动到一个现有文件夹。
我正在使用 git mv
进行此操作,但问题是,一旦我尝试将(使用 git merge
)非合并分支合并到合并分支,我会遇到很多冲突,其中大部分与 Git 刚刚移动到错误位置的文件有关。
知道为什么 Git 不知道如何正确处理它吗? (Git 版本是最新的。)
示例:
合并前:
│ └── dir1
│ │ └── python1
│ │ │ └── test1.py
│ └── dir2
│ │ └── python2
│ │ │ └── test2.py
│ └── dir3
│ │ └── python3
│ │ │ └── test3.py
合并后:
│ └── dir1
│ └── dir2
│ │ └── python1
│ │ │ └── test1.py
│ │ └── python2
│ │ │ └── test2.py
│ │ └── python3
│ │ │ └── test3.py
│ └── dir3
合并前(目标树):
│ └── dir1
│ │ └── python1
│ │ │ └── test1.py
│ │ │ └── test4.py
合并后:
│ └── dir1
│ └── dir2
│ │ └── python1
│ │ │ └── test1.py
│ │ └── python2
│ │ │ └── test2.py
│ │ │ └── test4.py
│ │ └── python3
│ │ │ └── test3.py
│ └── dir3
更新
我再添加一个案例,答案似乎不支持:
合并后的源代码树:
│ └── dir1
│ └── dir2
│ │ └── python1
│ │ │ └── test1.py
│ │ └── python2
│ │ │ └── test2.py
│ │ └── python3
│ │ │ └── test3.py
│ └── dir3
合并前(目标树):
│ └── dir1
│ │ └── python1
│ │ │ └── test1.py
│ │ │ └── test4.py
| | | └── new_test
│ │ │ └── test5.py
合并后(使用答案中的 ORT
命令):
│ └── dir1
│ │ └── python1
| | | └── new_test
│ │ │ └── test5.py
│ └── dir2
│ │ └── python1
│ │ │ └── test1.py
│ │ │ └── test4.py
│ │ └── python2
│ │ │ └── test2.py
│ │ └── python3
│ │ │ └── test3.py
│ └── dir3
如您所见,它检测到新文件及其新位置 (test4.py),但未检测到新文件夹(test5.py)。我希望它也会将它移动到 python2 下的新位置,因为文件 (test4.py) 和文件夹 (`new_test) 具有相同的父级 (python1) . 我会与 GIT 支持团队核实并更新
答案和本帖一样(我写的时候没注意):