我有2个分支
主
| _ folder1
| _ folder2
释放
| _ folder1
| _ folder2
两者都有相同的文件夹结构。
如何只将1个文件夹从master分支合并到release分支,比如folder1
答案 0 :(得分:0)
由于对两个文件夹的更改都是独立的,因此git方式是将更改保存在两个单独的分支中,而不是将它们提交到一个主分支。这将允许您只合并其中一个分支。
现在,你怎么能得到两个分支的状态?
在开发更改时,您将需要提交,即最后一次合并到发布中的提交。使用git log
查找提交ID。这应该是master分支上的提交。然后在那里创建一个标签:
git checkout <commit id>
git tag begin_of_new_development
签出主分支并创建一个新的签出分支f1
:
git checkout master
git checkout -b f1
然后在新分支上使用交互式rebase删除与folder_1
无关的提交:
git rebase -i begin_of_new_development
从列表中删除所有对folder_1
无效的提交。
现在您应该留下一个分支f1
,您可以将其合并到您的release
分支中。如果对folder_2执行相同操作,则稍后可以将该更改合并到release中。但是,请注意,永远不要在f1
和f2
中留下一个提交,因为rebasing会为它们提供新的提交ID,因此git无法知道它们包含相同的更改。此外,您无法再将master
合并到release
。
答案 1 :(得分:0)
从评论中的讨论我假设两件事:
folder1
和folder2
的变化是独立的。folder1
)。随后,以下说明将覆盖对发布分支上的folder1所做的任何更改。他们基本上将folder1
中的文件从master
复制到release
。
查看release
分支。
git checkout release
然后,从master分支中检出folder1中的所有文件。这样做,将release
留出已签出的分支。此外,所有这些文件都会添加到暂存索引中。
git checkout master -- folder1
提交更改。
git commit -m "Copy over changed files in folder1 from master branch."