一. Git与SVN
1.1 SVN
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。
集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。不顾缺点很明显,如果中央服务器发生故障,那么所有人都要等服务器能正常使用时才能提交代码,一定程度上会对项目进度产生影响。
1.2 Git
1.3 Git工作流程
注意:
开发过程中要提交新功能时,一定要遵循先拉取(pull),再提交(push)
1)提交新功能(先提交,提交后拉取,可能就会出现冲突) >: git add . >: git commit -m '提交新功能的信息说明' 2)拉取远程仓库(不管本地是否已经和远程同步,每一次提交前都必须拉取) >: git pull 源名 分支名 => git pull origin master 3)提交到远程仓库(现在是主分支) >:git push 源名 分支名 => git push origin master二. Git的安装及使用
2.1 Git的安装及使用前准备
这里未介绍可视化界面(如TortoiseGit)的安装 ,只介绍git的安装及使用,以及在pycharm中如何使用git。
1. 首先去官网下载对应版本的git:
1.下载对应版本:https://git-scm.com/download2.安装git:在选取安装路径的下一步选取 Use a TrueType font in all console windows 选项3. 安装成功后桌面右键可以看到git菜单
2. 搭建本地git仓库的两种方式
# 将已有的文件夹作为git仓库>: cd 目标文件夹内部>: git init# 在指定目录下创建git仓库>: cd 目标目录>: git init 仓库名
3. 配置操作git的用户信息
# 局部配置>: git config user.name '用户名'>: git config user.email '用户邮箱' 注:在当前仓库下的config新建用户信息,只能在当前仓库下使用# 全局配置>: git config --global user.name '用户名'>: git config --global user.email '用户邮箱'注:在全局文件 C:\Users\用户文件夹\.gitconfig新建用户信息,在所有仓库下都可以使用
2.2 Git常用指令
1. 查看仓库状态命令
# 当仓库中有文件增加、删除、修改,都可以在仓库状态中查看>: git status -- 查看仓库状态>: git status -s -- 查看仓库状态的简约显示
2. 工作区操作
通过任何方式完成的文件删与改可以撤销回滚。注意空文件夹时不会被git记录。""">: git add . -- 添加项目中所有文件>: git add 文件名 -- 添加指定文件"""
""">: git reset HEAD . -- 撤销所有暂存区的提交>: git reset 文件名 -- 撤销某一文件的暂存区提交"""
""">: git checkout . -- 撤销所有暂存区的提交>: git checkout 文件名 -- 撤销某一文件的暂存区提交"""
提交暂存区内容至版本库(本地仓库):
git commit -m "版本描述信息"
"""回滚暂存区已经提交到版本库的操作: 查看历史版本: >: git log >: git reflog 查看时间点之前|之后的日志: >: git log --after 2018-6-1 >: git log --before 2018-6-1 >: git reflog --after 2018-6-1 >: git reflog --before 2018-6-1 查看指定开发者日志 >: git log --author author_name >: git reflog --author author_name 回滚到指定版本: 回滚到上一个版本: >: git reset --hard HEAD^ >: git reset --hard HEAD~1 回滚到上三个版本: >: git reset --hard HEAD^^^ >: git reset --hard HEAD~3 回滚到指定版本号的版本: >: git reset --hard 版本号 >: eg: git reset --hard 35cb292"""
3. 过滤文件
windows中过滤文件时,可以新建.gitignore文件,往里面添加文件的名字或相对路径的方式来实现。不过注意新建.gitignore时要在后面多加一个.。
.gitignore.
# .gitignore 文件# 1)在仓库根目录下创建该文件# 2)文件与文件夹均可以被过滤# 3)文件过滤语法""" 过滤文件内容文件或文件夹名:代表所有目录下的文件或文件夹都被过滤/文件或文件夹名:代表仓库根目录下的文件或文件夹被过滤目录/文件或文件夹名:代表特定目录下的文件或文件夹被过滤"""
4. 生成密钥
使用ssh的方式配置远程源时,需要配置密钥:
# git bash中生成密钥的命令 ssh-keygen -t rsa
生成之后windows中公钥私钥默认保存在C:\Users\用户名\.ssh下:
然后将公钥中的内容复制出来,在远程仓库中配置即可。比如在GitHub中配置如下:
点击New SSH key把自己的公钥复制进去即可,公钥是一台电脑配一次即可。
5. 配置远程源
远程源目前主要由三种,分别是Github、码云以及Gitlab,他们之间的使用都大同小异。可采用 https协议 或 ssh协议 与远程git仓库通信提交提交代码(一般都是项目负责人完成)
https协议方式:
>: git remote add origin https://gitee.com/doctor_owen/luffy.git # 配置远程源>: git push -u origin master # 提交本地仓库到远程源
ssh协议
>: git remote add origin git@gitee.com:doctor_owen/luffy.git # 配置远程源>: git push -u origin master # 提交本地仓库到远程源
查看源及源链接信息:
>: git remote>: git remote -v# 删除源链接>: git remote remove 源名字
注意:origin远程源的源名,可以自定义;master是分支名,是默认的主分支。
新建一个远程仓库的时候(比如GitHub),如果新建了README文件,那么本地仓库使用push时,会报错,而且会建议你push前使用pull,可是这时使用git pull origin master后push还是会报错。此时可以使用以下命令将README先同步到本地,然后再正常使用push即可。
git pull --rebase origin master
6. 多分支操作
-查看分支 -git branch #查看本地分支 -git branch -r #查看远程分支-新建分支 git branch 分支名字 #新建本地分支 -同步到远程 -提交,push:git push origin lqztest-切换分支 git checkout lqztest-合并代码 -切到主分支:git checkout master -git merge lqznew-删除分支 #删除本地 git branch -d 分支名 #删除远程 git push origin --delete 分支名 -分支合并时冲突的解决 -跟正常冲突解决一样
7. 冲突解决
冲突的存在实际上因为多人修改了同一行代码,当出现冲突时,使用pull下拉代码时会保存你的代码和远程的代码(前提是你工作区中写的代码用add和commit提交至了本地仓库,不然出现冲突时自己写的代码直接会没掉):
这个时候出现冲突时与同事协商处理即可,最后将冲突解决之后的代码push至远程仓库。
可以参考以下链接
2.3 在pycharm中使用git
2.4 Git团队开发流程
"""管理员1.管理员配置与线上账号密码系统的本地全局账号密码>: git config --global user.name "doctor_owen">: git config --global user.email "doctor_owen@163.com"2.本地初始化git仓库(可以建立一个项目架构) 1)创建项目 2)进入项目目录初始化仓库: >: git init 3)提交代码到本地版本库3.创建一个远程空仓库(码云)4.将本地版本库同步到远程仓库 1)在本地仓库内添加远程仓库源,源名默认就采用origin,就采用https协议即可 >: git remote add origin https://gitee.com/doctor_owen/luffy.git 2)将本地版本库提交到远程版本库,需要远程仓库账号密码 >: git push -u origin master开发者5.要参与开发的成员配置本地全局账号密码>: git config --global user.name "owen">: git config --global user.email "owen@163.com"6.生成本机的SSH公钥提供给管理员>: ssh-keygen -t rsa -C "owen@163.com"管理员7.添加开发者提供的公钥到 个人公钥 并非是 公钥,并给开发者提供远程仓库SSH地址 仓库 => 管理 => 添加公钥 => 添加个人公钥 SSH地址:git@gitee.com:doctor_owen/luffy.git开发者8.在本机任意合适位置clone远程仓库到本地>: git clone git@gitee.com:doctor_owen/luffy.git9.进入本地项目仓库进行开发,可以查看远程源>: cd luffy>: git remote -v注:origin git@gitee.com:doctor_owen/luffy.git (fetch) & (push)10.开发过程中要提交新功能时,一定要遵循先拉取(pull),在提交(push) 1)提交新功能(先提交,提交后拉取,可能就会出现冲突) >: git add . >: git commit -m '提交新功能的信息说明' 2)拉取远程仓库(不管本地是否已经和远程同步,每一次提交前都必须拉取) >: git pull 源名 分支名 => git pull origin master 3)提交到远程仓库(现在是主分支) >:git push 源名 分支名 => git push origin master"""
更多知识,比如TortoiseGit可视化工具的使用等见一下链接: