版本控制工具

处理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学习笔记_第1张图片

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

这小节就记这么多,不过都是没有实践过的。以后可能会用上。