有没有办法只合并两个分支之间的公用文件?

时间:2019-06-17 13:28:30

标签: git merge git-branch git-merge git-merge-conflict

我已经在该论坛中检查了其他类似的问题,但基于以下假设,似乎没有一个回答我的问题:
1)我有两个分支:主,部署。

2)在“主”中,我具有所有项目文件,例如 a.py b.py Makefile

3)在“部署”中,我只有 a.py 文件。

4)我必须在deploy分支中只有此文件,因为该回购与将指定分支的内容上载到VM的平台相关联,因此,我不想将无用的文件上载到VM 。

在确认此条件后,假设我在“ master”分支的 a.py 文件中进行编辑和提交。
现在,我想将此更改合并到“ deploy”分支。
如何只合并 a.py 文件?从master忽略所有其他文件。

重要的细节:解决方案必须能够自动化,因此“无提交合并并删除无用的文件”之类的答案对于此目的没有用。

谢谢。

2 个答案:

答案 0 :(得分:2)

我认为最好改进过程以显式地仅上传您关心的文件,因为拥有一个不代表“完整”存储库的分支并不是真正的“ git方法”。

但是,我认为您的要求仍然可行-有点烦人。


a.py中编辑并提交对master的更改后,您可以使用以下来自源代码管理根目录的命令来更新deploy分支:

  1. git checkout deploy-切换到deploy分支
  2. git reset --hard master-设置deploy以匹配母版
  3. rm -rf *-删除存储库中的每个文件
  4. git checkout a.py-恢复要保留的文件的删除。对每个文件重复此步骤。注意:即使文件有多个目录,也可以使用此方法-即folder/child/a.py
  5. git commit -m "Deleting files from deploy"-删除文件
  6. git push -f-更新远程分支

上面的步骤似乎有点过头,并且存在删除未跟踪文件的风险,但这对于确保deploy分支中仅存在允许的文件是必要的。

答案 1 :(得分:0)

您可以(虽然对问题的评论是完全正确和正确的)可以在cherry-pick或标准基础上查看,也可以使用此trick with git checkout