是否可以用 git 中另一个目录中的冗余合并文件替换一个目录中的合并文件?

Is it possible to replace merged files in one directory with redundant merged files from another directory in git?

我对 Git 还是很陌生,但是我正在尝试更正我之前创建的一些 非常 糟糕的文件结构,但我不确定如何做。

基本上我们拥有的是这个结构:

--original_folder
    -- file1
    -- file2
    -- file3
    -- file4
    -- file5
    --corrections_to_original_files_folder
        -- file1
        -- file2
        -- file3
        -- file4
        -- file5

original_folder 表示第一个合并分支,corrections_to_original_files_folder 表示第二个合并分支(您猜对了,其中包含对这些文件的更正)。

显然,这是一种非常糟糕的方法。为了减少冗余,我想做的是创建一个新分支,基本上用 corrections_to_original_files_folder 的内容替换 original_folder 的内容,然后从那里进行额外的编辑。

但是我尝试了几种方法,因为这段代码全部合并了,我不能依赖任何 git mv 方法,或者 git checkout origin/BRANCH_TO_MOVE_FROM desired_file.py.

谁能帮我解决这个垃圾箱火灾?[=​​18=]

听起来你可以做你想做的事,而且你不会有任何问题:

What I am trying to do to reduce redundancy is create a new branch, and essentially replace the contents of original_folder with the contents of corrections_to_original_files_folder and from there making additional edits.

让我们假设您当前描述的重复文件夹结构存在于 main 上。现在让我们按照您说的去做:

  1. 从 main 创建一个新分支:git switch -c new-branch main
  2. 将文件夹 corrections_to_original_files_folder 中的文件复制到 original_folder 中。 Git 将显示所有已编辑的文件。
  3. 删除整个文件夹corrections_to_original_files_folder。 Git 将继续将其他文件夹的文件显示为已编辑,并另外将所有这些文件显示为已删除。
  4. 使用措辞良好的提交消息来提交更改,解释你做了什么以及为什么。
  5. 照常工作。

现在,如果您愿意,您可以将 new-branch 合并到 main 中,这样每个人都可以立即获得修复,或者您可以继续处理 new-branch,稍后再合并。一旦 new-branch 合并到 main 中,就会应用“修复”。

请注意,这几乎正是您所说的您想做的。我猜你只是没有意识到它会起作用,但它应该起作用。