如何在不合并的情况下将其他分支中的特定文件添加到我的分支中?

时间:2019-04-15 03:43:41

标签: git

我有两个分支:

-- rakib/test1
   - file1, file2, file3, file4, filex, filey
-- rakib/test2
   - file3, file4, file5, file6

我想将file1中的file2rakib/test1添加到rakib/test2,但是git merge rakib/test1操作具有以下不良影响:

  1. 覆盖/修改file3, file4
  2. 我不希望filex, filey中的rakib/test2

也许我缺少真正明显的东西。像mergeadd中是否有实现此目标的选项?还是我必须使用其他东西? 谢谢。

[ EDIT ]我尝试了this question中的git merge --no-commit --no-ff rakib/test1,它会自动合并:

rakib.amin@rakibamin-mac:~/AndroidAuto$ git merge --no-commit --no-ff rakib/test1
Performing inexact rename detection: 100% (4347/4347), done.
Auto-merging xxxxxxxxxx
CONFLICT (add/add): Merge conflict in xxxxxx
....
Automatic merge failed; fix conflicts and then commit the result.

[ EDIT ]重复问题要求我一次执行一个文件,我也对如何基于目录/正则表达式感兴趣,因为这是我的常规做法为旧项目制作PR(我几个月没有接触过的PR)。如果您知道在使用旧分支的代码发出“拉取请求”时创建干净分支的更好做法,请同时添加,我们将很高兴学习。

1 个答案:

答案 0 :(得分:3)

您可以尝试使用以下命令来查找从另一个分支到您的分支的特定文件。在这里,不是合并分支,而是专门从源分支到分支仅签出一个文件。请注意,在这种情况下,您的本地文件将被源分支文件完全覆盖。

git checkout rakib/test2  # checkout your target branch 
git checkout rakib/test1 -- file1 # checkout only one file from source branch
git checkout rakib/test1 -- file2 # checkout only one file from source branch

这也适用于目录。

git checkout rakib/test1 -- dirname