1、SVN与GIT区别
1.1、SVN集中式管理
1.2、GIT分布式管理
2、Git入门命令
2.1、基础命令
•配置用户名和邮箱
git config --global user.name fangmf
git config --global user.email [email protected]
1、查看git工作区状态
git status
2、添加文件到暂存区
git add . #添加所有文件(工程文件等都会提交)
git add
3、删除文件
git rm
4、提交文件到本地仓库
git commit -m “commit message”
5、同步远程代码到本地
git pull
6、推送本地修改到远程仓库
git push
2.2、提交历史
•图形化工具:
gitk #查看所有log
gitk --
•命令:
git log
常用参数有:
-
-p: 显示每次提交修改了哪些代码
--stat: 修改了哪些文件,每个文件各修改多少行代码
--author: 按作者搜索
--grep: 按日志内容搜索(change log)
例如:
git log -10 -- src/main/java/aa.java
git log --stat --author zhangyuming
git log -p --grep bug-xxx
2.3、查看diff
•查看还未暂存的修改
git diff
此命令比较的是工作目录中当前文件和暂存区域快照之间的差异(已跟踪的文件)
•查看已暂存的修改
git diff --cached/staged
已经暂存的文件和上次提交时的快照之间的差异
•查看版本差异
git diff commit1 commit2
两个commit 之间不同之处逐个做diff
•查看某个文件不同版本差异
git diff commit1 commit2 – src/main/com/…./index.jsp
查看index.jsp在commit2和commit1 之间的差异
2.4、撤销操作
•取消已暂存的修改
git reset HEAD
•取消对文件的修改
git checkout --
2.5、分支
•git branch命令常用参数:
不带参数: 显示所有本地分支
-r: 显示所有远程分支
-a: 显示所有分支,包括本地和远程分支
以当前分支新建一个分支
git branch
检出分支:
git checkout
以当前分支新建分支并切换到新分支
git checkout -b
从远程分支新建分支,并建立跟踪
git checkout -b
2.6、冲突
冲突产生的原因:多个人员修改同一文件相同行或者相邻行,这种情况下尝试去merge的时候就会出现冲突,需要手动解决。
解决冲突:
1、运行 git status 查看 Unmerged pachs显示未merge的文件
2、编辑未merge的文件
a) <
b) ==== 和 >>> 之间的代码是被merge的分支的代码。
如果B的代码是合理的,那么就保留B的代码,即HEAD和===之间的代码。
3、添加修改后的文件到暂存区:git add test.xml (不要写 git add .)
4、重复步骤123直到所有冲突文件处理完成
5、提交 git commit 在弹出的界面填写提交日志(禁止用 git commit –m “commidlog”)
撤销merge
当执行pull/merge的过程中如果行回退merge可以使用 git merge –abort 撤销merge
推荐GIT学习地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
3、GIT版本管理之快速迭代版本方案-上线后
3.1、远端GIT仓库操作
步骤解释:
1:功能分支1开发完成,需要合并到SIT分支测试
2:SIT测试通过,将功能分支1合并到UAT分支测试
3:UAT分支测试通过,将功能分支1合并到Release分支测试(此版本需与生产代码同步,即上了 release的分支必须上生产,否则需要撤代码)
4:将功能分支1合并到生产环发布生产
注:分支管理配合需求管理效果更显著,可以跟踪一个功能到每个环境的生命周期
3.2、开发人员使用本地GIT操作
步骤解释:
1:从GIT远端仓库更新Master代码到本地
2:从本地Master创建新new分支
3:local/new分支开发完成推送分支到远端origin/new分支