繁体   English   中英

如何将许多扩展名定义的文件从一个远程存储库分支复制到另一个文件夹中的许多文件夹中?

[英]How can I copy many files, defined by extension, in many folders, from one remote repository branch to another?

看来,我不仅更改了远程分支上的后端文件,而且还更改了许多前端文件。 现在它们在我的分支中已更改,我无法将其合并到master分支。

如何将扩展名选择的文件从一个分支复制到另一个分支?

  1. 我在功能分支上。
  2. 项目和功能分支中的大量* .html文件是错误的。
  3. 功能分支上的.java和.xml中有许多有用的最新更改。
  4. 我想从当前master分支中获取所有* .html文件,并将它们放入当前项目中。 或到功能分支。

Git不允许分支的部分合并。 也就是说,合并时,您需要合并所有信息-您不能忽略某些文件而包括其他文件...(可以,但是,这是非常糟糕的做法,只是假装您进行了合并)。

也就是说,有几种方法可以进行。

您可以忽略分支位于远程的事实-在git分支中,分支是分支,无论它们在哪里。 git pull / fetch将下载您的远程更改,以便您可以进行更改。

1)简单-忽略历史记录

这涉及在功能分支中进行所有更改,仅添加具有扩展名的更改,然后对master更改进行大量提交:

  • git checkout feature
  • git reset master..feature重置为masterfeature的交集
  • git add -- *.txt添加所有.txt文件
  • git commit
  • git reset --hard很难清除不需要的文件)
  • git merge

2)复杂-保存历史

  • 使用git rebase -i交互方式将每个提交分为2个 -例如编辑.txt文件的提交和不编辑.txt文件的提交
  • 之后,使用git cherry-pick仅将想要的提交带入新分支,例如, feature-txt-files-only称为feature-txt-files-only
  • 将其与您的master分支合并。

我将举一个.py文件的例子。 尝试进行合并,然后

find -name '*.py' -print0|xargs -0 git checkout --ours --

要么

find -name '*.py' -print0|xargs -0 git checkout --theirs --

“我们的”是指本地分支,“他们的”是指远程分支(重新定级时,交换其含义时除外)。

对于要用来掩盖其他更改的文件类型,您可以根据需要多次执行此操作。

然后以正常方式完成合并。

唯一的问题是,这对于在一个分支上已删除但在另一个分支上已更改的文件可能无法可靠地工作。 因此,请注意此类情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM