我正在为一个PHP项目使用git,我认为它真的很方便。如果我能让它工作,有一件事会很棒。
我已经创建了一个分支,用于部署。它有一些不同之处,比如不同的配置文件和文档。
我不能忽略它们,因为这样它们就会留在两个分支中,而我想让它们在两个分支中保持不同。
问题是,当我合并分支时,那些本应不同的文件也会被合并。
有没有什么方便的方法来完成这样的事情?这通常是如何完成的?
发布于 2009-01-28 14:23:05
2021年2月更新: Git本身仍然不是一个很好的选择,但GitHub Action environment could help。
2009年:我不确定Git是否就是这样使用的。
首先是一个快速的Linus advice,总是“多姿多彩”和信息量大;)
Git从根本上跟踪项目状态,而不是文件状态。这意味着你不能尝试“合并一个文件”。这在git中是一个没有意义的操作,事实上,任何允许它的SCM都注定是一小块sh*t (*)。
(*)我并不是因为git不能做到这一点就这么说。它远比这更基础。一旦你开始做每个文件的分支和合并,你基本上就搞砸了自己,你再也不能把这个项目作为一个“整个项目”来工作了--你不再有一个明确定义的历史,实际上就是整个项目的历史。
那里。
也就是说,你可以:
使用单独的GIT子项目来管理这些配置/文档文件(注意:use of submodules has been discussed here)
此线程中的其他解决方案涉及在部署服务器上处理“特定于服务器”的分支
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)发布于 2009-01-29 21:32:55
我做了一些愚蠢的把戏,比如:
让应用程序向repository
config
config.development和config.production,但不是config。您的部署脚本不仅可以克隆存储库,还可以克隆cp config.production config这有什么意义吗?
它对我来说没问题。
发布于 2009-07-31 23:00:01
这对我来说很有效,而且我只做了很小的配置更改就可以部署(配置文件中有3行)。
git checkout -b deployment origin/master.git pull --rebase.
这是一个简单的解决方案,它对我来说肯定是有效的,我不知道它是不是像其他人建议的那样是"shi*t“,但它对我们的目的肯定是非常有用的。
https://stackoverflow.com/questions/487753
复制相似问题