Commit ed536acc authored by 王进波's avatar 王进波

新增工具和正式环境代码签出合并,推送的教程

parent 31398d86
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
project.fragment.lock.json
artifacts/
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
#*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignoreable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# SVN files
.svn/
.svn/**/
.svn/**/.svn-base
\ No newline at end of file
# 签出正式开发代码,同步修改,提交
## 检查新增分组和代码
打开Gitlab网页:http://civpub.vicp.net:8880,如果外网域名还没有修复,可以编辑电脑 C:\WINDOWS\System32\drivers\etc 路径下的hosts文件,如下,增加域名到内网服务器IP地址的映射。
需要用管理员权限启动编辑器,或者将hosts文件拷贝到其他目录下编辑好后覆盖原目录文件。
![1533603098844](imgs/1533603098844.png)
成功打开Gitlab网页后,应该能看到自己的项目理解中多了一个CivDevelop分组,和分组下的3个项目,
> - CivWebService 这个项目大家不要下载
> CityWebService 这个是后端服务项目,后端代码在此项目上开发
> - Web4 前端项目,前端代码在这上面写
没看到新增内容的同事请联系我。
## 签出CityWebService和Web4
用git命令或者gui工具签出代码
开发人员只需要迁出develop分支,我们今后所有开发任务都以develop分支为主线,master作为稳定归档分支,不允许开发人员提交更新和合并请求。
检出CityWebService后端代码
```shell
git clone -b develop https://civpub.vicp.net:8443/CivDevelope/CityWebService.git #检出develop分支
cd CityWebService
git branch #查看本地当前分支,是develop
git branch -a #查看本地和远程的全部分支
```
检出Web4前端代码
```shell
git clone -b develop https://civpub.vicp.net:8443/CivDevelope/Web4.git
cd Web4
git branch
git branch -a
```
## 创建自己的开发分支
```shell
cd CityWebService #cd到自己的working copy
git branch #查看当前本地分支
git checkout -b dev-yourname #创建自己名字命名的本地开发分支,命名格式为dev—名字全拼
git branch #现在可以看到我们已经在自己的开发分支上了
```
```SHELL
cd Web4 #cd到Web4的workingcopy
git branch #查看working copy当前所在分支
git checkout -b dev-yourname #创建自己名字命名的本地开发分支,命名格式为dev-名称全拼
git branch #检查当前所在分支
```
## 同步修改
用BeyondCompare工具对比自己本地代码和从Gitlab clone下来的代码,将本机的改动手动更新到本地Git working copy
> 在这步操作过程中,我们优先同步自己修改的代码部分,对于代码内容存在差异的,如果是我们自己改的,能够判断哪边最新,就可以手动同步,如果不是我们修改的,不能判断的情况下,保留原样,不错修改,以Git目录为准就可以了
> 还有一处需要注意的是,如果存在一个项目或者一个文件夹,你本地开发环境里有,Git环境里没有的话,需要看这部分项目和文件夹是否是之前项目上的代码,因为我们在整理Git代码的时候已经将一部分项目上的代码删掉了,注意不要在这个地方再次还原回去了
>
> 例如 ”Code/业务系统“ 下的的几个项目,在Git中已经被删除了
>
> - CityServer.Maintenance.ChengDu
> - CityServer.Maintenance.HZBJ
> - CityServer.Maintenance.SXBH
> - CityServer.Maintenance.Wujiang
> 在CityInterface项目中有很多文本内容相同,行尾结束符存在差异的情况,例如一边是UNIX一边是PC,或者一边是MIX一边是PC,则以PC为准
>
> PC即Windows风格的CRLF,MIX是指当前文件存在UNIX与Windows风格混用的情况。
1. 打开BeyondCompare,对比文件夹
![1533613314761](imgs/1533613314761.png)
2. 在左右两侧地址栏输入对比的代码文件夹路径,打开对比
![1533613477906](imgs\1533613477906.png)
红色为差异项,需要我们手动确认更新到Git本地working copy中
![1533613570298](imgs\1533613570298.png)
3. 将显示内容设置为显示差异项,然后在差异文件夹上右键,对比文件夹内容(对比文件二进制),然后二进制相同项就会自动隐藏,剩下的是需要我们手动打开查看内容的
![1533613963943](imgs/1533614043956.png)
4. 对于我们在本地开发环境中新增的文件或文件夹,如果不是编译产生的,则可以复制到Git目录一侧,如果是文件内容差异,我们可以将我们在文件中新增的内容复制到Git一侧
![1533614370956](imgs/1533614370956.png)
这样的编译文件目录我们就不要拷贝了
![1533614524279](imgs/1533614524279.png)
如此,最终我们就完成了将本地开发环境迁移到Git的过程了,建议大家暂时保留原有的开发环境,后续开发我们就可以在Git环境上完成了
上面示例的是CityWebService的过程,Web4的过程相同。
## 添加`.gitignore`文件
我们在用svn的时候会将不需要添加到版本控制的文件类型通过ignore列表排除掉,在git里面也有相应的机制,需要我们去手动添加和编辑`.gitignore`文件。
`.gitignore`文件一般位于我们Git工作目录的根目录中,也可以存在于子目录下,左右域也是层级嵌套的,每个`.gitignore`文件对它当前所在目录及其子目录内的文件有效,如果子目录中存在`.gitignore`文件且与外部冲突,则以内部为准。
我在Gitlab Server中已经添加了`.gitignore`文件,大家clone下来就会有。不需要额外添加了。
## 提交修改
现在我们需要将从自己本地开发环境同步到Git环境所产生的修改进行一次索引和提交,以CityWebService为例
```shell
cd CityWebService
git status #查看当前工作目录的状态,红色的行就是当前working copy中还未添加到暂存区(索引) 的修改
git add . #我们批量添加Git working copy中的全部修改
git commit -m "同步Git之前的开发环境中修改的代码"
```
## 同步远程分支
完成上一步的`commit`操作后,我们所有的代码修改和更新都还停留在本地的你自己名字命名的开发分支上,打开Gitlab的网页是看不到你的这个本地分支的,我们现在将你本地分支的提交,同步到远程服务器
```shell
git push --set-upstream origin dev-yourname
# --set-upstream参数是告诉git,用本地的dev-yourname分支追踪远程的origin/dev-yourname分支,只在第一次push时设置一次,后面只需要checkout 到 dev-yourname分支后执行 git push,就会自动将本地dev-yourname 分支推送到远程的 origin/dev-yourname 分支了。
git branch -a
#查看远程和本地全部分支,现在就可以看到origin/dev-yourname这个分支了,它代表服务器上的dev-develop分支,我们可以通过这种方式来实现代码的远程备份,每个人都可以在服务器上保留自己的开发分支
```
## 合并主分支(develop分支)
我们在dev-yourname分支上完成功能修改后,想要将代码merge到develop分支上去,这时候的操作是这样的
```shell
git checkout develop # 切换到develop分支
git merge dev-yourname # 合并本地dev-yourname分支到develop分支
git pull # 将远程develop分支的最新更新拉取到本地
git push # 将本地提交推送到远程分支
```
至此,结束
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment