我已经在该论坛中检查了其他类似的问题,但基于以下假设,似乎没有一个回答我的问题:
1)我有两个分支:主,部署。
2)在“主”中,我具有所有项目文件,例如 a.py , b.py 和 Makefile 。
3)在“部署”中,我只有 a.py 文件。
4)我必须在deploy分支中只有此文件,因为该回购与将指定分支的内容上载到VM的平台相关联,因此,我不想将无用的文件上载到VM 。
在确认此条件后,假设我在“ master”分支的 a.py 文件中进行编辑和提交。
现在,我想将此更改合并到“ deploy”分支。
如何只合并 a.py 文件?从master忽略所有其他文件。
重要的细节:解决方案必须能够自动化,因此“无提交合并并删除无用的文件”之类的答案对于此目的没有用。
谢谢。
答案 0 :(得分:2)
我认为最好改进过程以显式地仅上传您关心的文件,因为拥有一个不代表“完整”存储库的分支并不是真正的“ git方法”。
但是,我认为您的要求仍然可行-有点烦人。
在a.py
中编辑并提交对master
的更改后,您可以使用以下来自源代码管理根目录的命令来更新deploy
分支:
git checkout deploy
-切换到deploy
分支git reset --hard master
-设置deploy
以匹配母版rm -rf *
-删除存储库中的每个文件git checkout a.py
-恢复要保留的文件的删除。对每个文件重复此步骤。注意:即使文件有多个目录,也可以使用此方法-即folder/child/a.py
git commit -m "Deleting files from deploy"
-删除文件git push -f
-更新远程分支上面的步骤似乎有点过头,并且存在删除未跟踪文件的风险,但这对于确保deploy
分支中仅存在允许的文件是必要的。
答案 1 :(得分:0)
您可以(虽然对问题的评论是完全正确和正确的)可以在cherry-pick或标准基础上查看,也可以使用此trick with git checkout