版本控制工具
处理Git,还有SVN也可以做版本控制。两者各有特点
SVN
集中式管理,有非常明确的权限管理机制
优点:
- 管理方便,逻辑明确,符合一般人的思维习惯
- 易于管理,通过中心服务器实现权限管理
- 代码的一致性非常高
缺点:
- 服务器压力大,数据库容量暴增
- 集中式管理,有中心服务器,中心服务器故障就无法工作
- 不适合开源开发
Git
分布式管理,易于协作
优点:
- 分布式开发,强调个体
- 服务器和数据量的压力小
- 速度快,灵活
- 可以离线工作
缺点:
- 学习成本高
- 不符合常规思维
- 代码保密性差,开发者可以把整个库克隆下来,完全公开所有代码和版本信息
GitHub和其他平台
GIt是一个版本控制工具,好比是一本书
GitHub是一个实现了Git的项目托管平台,好比是书店
各种项目托管平台:
- GitHub:私有库要收费。更多是为了展示和分享
- GitLab:有私密库,DevOps,适合工作和企业使用
- Gitee:国内的平台,完全免费
Git安装
官网:https://git-scm.com/
官方文档(中文):https://git-scm.com/book/zh/v2
先下载,然后安装,一路下一步。
验证,进入 Git Bash ,会绑定在鼠标右键或者开始菜单。执行命令获取版本信息:
$ git --version
git version 2.18.0.windows.1
调整字体
如果觉得 Git Bash 里的字太小,可以按下面的方法操作,右键==>Options...==>Text==>Select... 进入之后可以调整字体
Git基本概念
Git的操作有下面基本区域:
- 工作区
- 索引
- 仓库(本地)
- 远程(仓库):比如GitHub
Git的基本操作
对应图片里的 add commit checkou 命令
初始化库
新建一个文件夹(比如:helloGit)。进入文件夹,鼠标右键==> Git Bash Hear ,然后输入命令:
$ git init
Initialized empty Git repository in J:/helloGit/.git/
这里会生成一个 .git 的隐藏文件夹
配置用户信息
用下面的2条命令,把你的用户名和邮箱加上:
$ git config --global user.name "John Doe"
$ git config --global user.email [email protected]
查看命令:
$ git config --list
$ git config user.name
查看Git状态
如果你不知道要做什么,就运行一下 gei status
:
$ git status
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
上面的提示是,要先创建一个文件,然后执行 git add
命令。
加入索引
创建一个随便什么文件后,执行命令:
$ git add .
这里成功没有任何提示信息,可以指定add的文件名,也可以直接一个点,表示提交所有。
提交到本地仓库
提交的时候,要用-m参数写一点信息:
$ git commit -m '第二次提交'
[master c17871e] 第二次提交
1 file changed, 2 insertions(+), 1 deletion(-)
之后如果再有内容修改,就需要再做一次add和commit。
查看提交信息和回滚
用下面的命令,可以查看每次提交的信息:
$ git log
每一次提交都是一个版本,有一个commit的字符串(版本号),提交的人和时间。
确保你已经至少有2个或以上的版本了,否则就再add然后commit一次。
把commit的字符串复制下来,使用下面的命令可以回滚到任何一次提交时候的版本:
$ git checkout a909f69117bc55dc301f5792f81aba0ace98116e
Previous HEAD position was c17871e 第二次提交
HEAD is now at a909f69 首次提交
Git的进阶操作
进阶主要是分支的操作。
创建分支
创建一个分支:
$ git checkout -b alpha
Switched to a new branch 'alpha'
查看分支
$ git branch
* alpha
master
这里有个master,是默认创建的主分支。现在我们处在alpha分支下(有个星号)。
切换分支
先在新分支下,创建文件,把之前的文件也改改,然后add和commit。切换分支也是 checkout 后面加上分支的名字:
$ git checkout master
Switched to branch 'master'
切换后,在去看看在新的分支里做的变动就看不到了
合并分支
合并分支,先切换回到主分支,然后执行下面的命令:
$ git merge alpha
Auto-merging a1.txt
CONFLICT (content): Merge conflict in a1.txt
Automatic merge failed; fix conflicts and then commit the result.
其他
上面都是本地仓库的操作。还有2部分的内容没有写
- 连接远程仓库
- 通过工具使用Git,比如Pycharm
在本地创建一个远程仓库
这里要用到git remote命令。这个命令可以看到本地仓库的远程仓库的名字,如果使用参数-v/--verbose显示详细信息,那么会在名字后面列出其远程url:
Steed@Steed-PC MINGW64 /i/Python自动化开发学习/PycharmProjects/LowCRM (master)
$ git remote
LowCRM
Steed@Steed-PC MINGW64 /i/Python自动化开发学习/PycharmProjects/LowCRM (master)
$ git remote -v
LowCRM https://gitee.com/steeed/LowCRM.git (fetch)
LowCRM https://gitee.com/steeed/LowCRM.git (push)
添加远程仓库的命令是:git remote add [shortname] [url]
用上面的命令在本地添加一个远程仓库,但是ssh后面的地址是我们本地仓库的地址:
$ git remote add origin ssh://[email protected]/~/NCM/.git
$ git push origin master
建立完成之后,可能要讲本地仓库的分支推送到远程仓库,不知道不推的话分支里是不是没有内容的。
以上应该就建立好远程仓库了,测试的话可以去别的机器上尝试远程clone
git clone ssh://[email protected]/~/NCM/.git
这小节就记这么多,不过都是没有实践过的。以后可能会用上。