如何移动 Git 中的多个目录?
How can I move multiple directories in a Git?
有一个像这样的 Git 存储库。
repo/
A1/
B1/
C1/
A2/
B2/
C2/
我想要一个这样的。
repo/
C1/
C2/
我不再需要 A1、B1、A2、B2 目录了。
$ git filter-branch --tree-filter 'mv A1/B1/C1 .' HEAD
Rewrite xxxx(1/206)mv: cannot stat 'A1/B1/C1': No such file or directory
tree filter failed: mv A1/B1/C1 .
有什么想法吗?
只需在终端或文件管理器中移动它们并提交更改。
$ git filter-branch --tree-filter 'mv A1/B1/C1 .' HEAD
此代码以类似
的错误结束
"mv: cannot stat 'A1/B1/C1': No such file or directory".
但是下面这段代码工作正常。
$ git filter-branch --tree-filter "ls A1/B1 | xargs -i -t mv A1/B1/{} A1 | sh" HEAD
我不知道为什么第一个代码不起作用,但似乎还可以。
谢谢。
filter-branch
命令遍历您的存储库的整个历史记录。如果该文件夹从一开始就不存在,您可能会收到 No such file or directory
错误,并且由于 mv
returns 具有非零退出代码,整个迭代将停止。
最简单的解决方案是将 || true
附加到过滤器命令:
git filter-branch --tree-filter 'mv A1/B1/C1 . || true' HEAD
当文件夹不存在时,您仍会收到有关步骤的 No such file or directory
消息,但至少该过程不会立即停止。
有一个像这样的 Git 存储库。
repo/
A1/
B1/
C1/
A2/
B2/
C2/
我想要一个这样的。
repo/
C1/
C2/
我不再需要 A1、B1、A2、B2 目录了。
$ git filter-branch --tree-filter 'mv A1/B1/C1 .' HEAD
Rewrite xxxx(1/206)mv: cannot stat 'A1/B1/C1': No such file or directory
tree filter failed: mv A1/B1/C1 .
有什么想法吗?
只需在终端或文件管理器中移动它们并提交更改。
$ git filter-branch --tree-filter 'mv A1/B1/C1 .' HEAD
此代码以类似
的错误结束"mv: cannot stat 'A1/B1/C1': No such file or directory".
但是下面这段代码工作正常。
$ git filter-branch --tree-filter "ls A1/B1 | xargs -i -t mv A1/B1/{} A1 | sh" HEAD
我不知道为什么第一个代码不起作用,但似乎还可以。 谢谢。
filter-branch
命令遍历您的存储库的整个历史记录。如果该文件夹从一开始就不存在,您可能会收到 No such file or directory
错误,并且由于 mv
returns 具有非零退出代码,整个迭代将停止。
最简单的解决方案是将 || true
附加到过滤器命令:
git filter-branch --tree-filter 'mv A1/B1/C1 . || true' HEAD
当文件夹不存在时,您仍会收到有关步骤的 No such file or directory
消息,但至少该过程不会立即停止。