我正在使用git进行PHP项目,我认为它非常方便.如果我让它发挥作用,有一件事情会很棒.
我创建了一个分支,用于部署.它有一些差异,如不同的配置文件和文档.
我不能只是忽略它们,因为它们将留在两个分支中,而我希望它们在两个分支中保持不同.
问题是,当我合并分支时,那些意图不同的文件也会被合并.
有没有方便的方法来完成这样的事情?这通常是怎么做的?
我不确定Git是否会以这种方式使用.
首先是一个快速的Linus建议,总是"丰富多彩"和信息丰富;)
Git的非常根本跟踪项目的状态,而不是文件的状态.这意味着你非常不能尝试"合并文件".在git中这是一个毫无意义的操作,事实上,任何允许它的SCM都注定要成为sh t()的一部分.
(*)我不是说那只是因为git没有这样做.它比那更基础.一旦你开始进行每个文件的分支和合并,你基本上搞砸了自己,你将永远无法再将这个项目作为一个"整个项目" - 你不再拥有一个定义明确的历史记录是整个项目的历史.
那里.
那说,你可以:
管理那些配置/ doc文件一个单独的git子项目(注意:这里讨论了子模块的使用)
或记录部分合并(对我们不想合并的文件使用"我们的"策略),然后 - 命名它.
此线程中的其他解决方案涉及在部署服务器上处理"特定于服务器"的分支
Development Deployment #origin/master: x--x $ git clone # master x--x $ git checkout -b deployment origin/master x--x \ -- #deployment $ .... #makes changes for config files #or other specific deployment files x--x \ --d1--d2 # no need to push that branch ever. #new developments x--x--x--x $ git pull --rebase #pull origin/master and #replay current branch on top of it x--x--x--x \ --d1'--d2' #SHA1 rewritten in deployment branch #not important since this branch #is not pushed (published)
这对我有用,我只进行了一些小配置更改(配置文件中有3行).
从GitHub或您保存的任何地方克隆您的存储库.到您希望部署的位置.
跑git checkout -b deployment origin/master
.
进行更改(如果您愿意,可以推送它们).
每当您的主服务器(或您从中进行部署的任何分支)都要进行部署时,只需简单地进行部署即可git pull --rebase
.
这是一个简单的解决方案,它肯定对我有用,我不能说话,或者不是这就像其他人所说的那样"shi*t",但它对我们的目的当然非常有用.