假设您的主分支包含您的整个项目:
|--BackOffice
| \--UI
|--BackOffice.UI
| \--WebControls
|--BackOfficeTests
|--Deployment
| \--db
|--BusinessLogicLayer
| |--bin
| |--obj
| \--Properties
|--scripts
|--Website
| |--admin
| |--App_Browsers
| |--App_Code
| |--App_Data
| |--Styles
| |--web.config
现在,所有网站共有的任何更改都将提交给该分支。
为不同的站点建立单独的分支。例子:
从主分支,
git checkout -b site1
git checkout -b site2
git checkout -b site3
git checkout -b site4
现在,只要您想更改任何特定于站点的文件,即 Styles 文件夹或 web.config,请在这些分支中进行。
现在是部署部分。假设您要部署site1,在本地系统上基于master创建一个临时分支,将site1分支合并到其中并部署它。最后删除临时分支。
git checkout -b temp
git merge site1
tar 或 zip 您的代码并部署它。在那之后,
git checkout master
git branch -D temp
如果您不想公开部署的完成方式,您甚至可以制作一个小的 shell 脚本来执行此操作。让我们将此脚本称为deploy.sh例如:
#!/bin/bash
if [ ! $1 ]; then
echo "Please pass in the name of the site you want to deploy."
exit 1
fi
#Check if we are on master branch
git status | grep "On branch master"
if [ $? -ne 0 ]; then
echo "You are not on master. Please execute 'git checkout master'"
exit 1
fi
#Check if the entered site for deployment actually exists
git branch | grep $1 || { echo "No branch $1 exists for deployment."; exit 1; }
#Update from remote
git checkout -b temp
git merge $1
tar -cvf deploy-$1.tar ./deploy.sh *
[ $? -ne 0 ] && echo "Some problem archiving the files..." && exit 1
git checkout master
git branch -D temp
echo "Please use deploy-$1.tar file to deploy the site. Thanks."
exit 0
现在,当您说 ./deploy.sh site2 时,该脚本将在幕后完成所有脏活,并为您提供一个 tar 文件,您可以将其部署在生产服务器上。
我希望这是有帮助的...