gpt4 book ai didi

Git重写历史将文件夹和文件移动到父文件夹

转载 作者:行者123 更新时间:2023-12-04 04:58:33 24 4
gpt4 key购买 nike

我想重写历史记录并将某个文件夹中的所有文件和文件夹移动到所有分支的 2 个文件夹中。

我的 repo 看起来像:

  • 源文件
  • v105
  • 源文件
  • 文件
  • 文件夹
  • 工具

  • 我希望它是:
  • 源文件
  • 文件
  • 文件夹
  • 工具

  • 我知道如何重写历史记录以递归删除文件夹中的文件

    git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatched somefolder/somefolder'
    --prune-empty --tag-name-filter cat -- --all

    我也知道 git mv命令。

    使用以下命令将文件和文件夹都移动到正确的文件夹中。第一个模式匹配提供的文件夹中的所有文件和文件夹。第二个模式匹配所有以点开头的文件和文件夹。
    git mv src/v105/src/* src/v105/src/.[^.]* src
    但是,当我想将此命令与 rewrite history 命令一起使用时,它不起作用。

    git filter-branch --force --index-filter 'git mv src/v105/src/* src/v105/src/.[^.]* src --cached --ignore-unmatched'
    --prune-empty --tag-name-filter cat -- --all

    因为在我的提交历史记录中并非所有情况下都存在 src 文件夹,所以它告诉我它找不到 src 目录。任何想法如何解决这个问题?

    更新

    git filter-branch --force --index-filter 'if [-d 'src/v105/'] then git mv src/v105/src/* src/v105/src/.[^.]* src fi'
    --prune-empty --tag-name-filter cat -- --all
    导致意外的文件结束。

    最佳答案

    过滤器命令不需要是 git 命令。能这么简单吗?
    git filter-branch --force --tree-filter 'mv src/src/files src/; mv src/src/folders src/'

    关于Git重写历史将文件夹和文件移动到父文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16450423/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com