Git是什么?
- Git是目前世界上最先进的分布式版本控制系统。
SVN与Git的最主要的区别?
-
SVN为集中式版本控制系统,版本库是集中存放在中央服务器的
单独搭建SVN服务器,不能离线工作
操作简单,代码保密性较强
-
GIT为分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库
1 适合分布式开发,强调个体
2 公共服务器压力和数据量都不会太大
3 速度快灵活
4 可以离线工作
5 操作复杂,代码保密性差
github的使用
GitHub,免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没有问题的。GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人的开源项目。
SVN的存储需要依赖一个服务器,而git所有的东西是放在线上的。节约成本,省时省力。
下载安装git
https://www.git-scm.com/download/ (建议默认安装,不要改动安装路径)
git配置
命令:
1. git add:将本地工作空间中的文件,添加到本地git暂存区
2. git commit:将暂存区中的文件提交到本地版本库(分支,默认分支为主分支master分支)
3. git push:将本地版本库的文件推送到远程仓库(远程分支)
4. git pull:将远程仓库的内容 拉取到本地仓库。
配置用户名和邮箱
桌面右击选择Git Bash Here 打开git命令行工具
1. 用户名配置命令:
git config --global user.name "user"
2. 邮箱配置命令
git config --global user.email "111111@qq.com"
运行以上两个命令后会在C盘-用户-xxxx(系统账户文件夹)这个目录下生成.gitconfig文件,用编辑工具可以打开该文件查看配置好的用户和邮箱
如:
[user]
email = 111111@qq.com
name = user
github 远程仓库搭建 (统一的项目官方托管网站)
- github注册及登录
- 配置免密钥登录
配置免密钥登录本地是为了将本地仓库与远程github仓库关联
1. 本地仓库需要配置生成ssh key密钥
配置命令:
ssh-keygen -t rsa -C 111111@qq.com
一直回车后生成如下内容,密钥生成成功
+---[RSA 2048]----+
| ....o.. ooo.. |
| o.. .. . o... |
| + o . ..= + . |
| o o = + B o |
| . . o S E o |
| o o * . * |
| + + + . |
| . = ..o o |
| + ....o.. |
+----[SHA256]-----+
密钥生成后会在C盘的系统用户目录下生成.ssh密钥文件夹,文件夹中有两个密钥文件,一个是私密密钥,一个是public类型密钥,两个文件的功能就是为了让本地与远程通信,私密为本地使用,pub为远程github使用,两者匹配后,本地仓库与远程仓库就产生了关联
2.登录github远程仓库–选择settings选项–选择SSH and GPG keys–选择new SSH key–Title输入密钥标题(任意取名)–Key中添加public类型密钥文件中的内容(注:内容复件粘贴就好,不要有额外的回车或空格,避免出错)–点击Add SSH key
3.测试是否关联上了github
测试命令:
ssh -T git@github.com
回车,输入yes再回车,测试成功关联后.ssh密钥文件夹会自动生成一个known_hosts文件,
注:因网络问题有可能会失败,多测试几次就好
- 本地仓库项目与github仓库项目关联
本地仓库与github仓库联后,我们就可以开始对项目版本开始管理了,在本地的项目目录下打开Git Bash命令行工具,执行如下命令
git remote add origin github上新创建的项目https标识(路径)
项目版本管理
- 第一次发布项目版本(从本地仓库分支到远程github仓库分支)
- git add .
- git commit -m"提交日志说明"
- git push -u origin master
- 第一次下载项目版本(从远程github仓库分支到本地仓库分支)
git clone github上新创建的项目https标识(路径) - 后续提交版本(从本地仓库分支到远程github仓库分支)
- git add .
- git commit -m"提交日志说明"
- git push origin master (与第一次发布的操作相比只是少了一个-u)
- 后续更新 版本 (从远程github仓库分支到本地仓库分支)
git pull
常用命令
1.初始化项目仓库:
git init //通过命令 git init 把这个目录变成git可以管理的仓库
2.查看某些文件或文件夹是否被git管理
$ git status
On branch master //表示在master主分支上查看文件状态
No commits yet//尚未提交,如果有被管理,但并未来commit的文件会在以下区域显示
Untracked files://尚未跟踪的文件,被修改过或新增加的文件会在以下区域显示
(use "git add <file>..." to include in what will be committed)//提示可以使用git add添加到缓存
readme.txt//新添加或修改过的文件
nothing added to commit but untracked files present (use "git add" to track)//没有添加到提交,但存在未跟踪的文件(使用“git add”跟踪)
3.将某个改动过的或新添加的文件文件添加到本地的git上 被git管理 : 使用命令 git add xxx.txt添加到暂存区里面去
git add 文件名
4.批量添加某些文件被git管理
git add . 或 git add --all
5.如果有些文件并不需要被git管理,我们就需要忽略掉这些文件不被管理
创建一个 .gitignore 文件
创建命令:touch .gitignore
.gitignore 文件 的作用:将要忽略的文件全称写入到该文件中,文件中的写入内容如下示例 :
.gitignore //.gitignore必须忽略
notice.txt
src/description.txt
写入完成后就可以执行git add . 命令了。凡是被写入的文件都会被忽略。
6.提交被管理的文件到git服务器上 : 用命令 git commit告诉Git,把文件提交到仓库
git commit -m"日志";//日志为必写内容,如:实现了XX功能
7.如果是第一次使用git的commit,会提示需要设置用户的默认标识,
- 因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。执行以下命令即可,用户名和邮箱可随意填写,没有严格规定
git config --global user.name "xxxx"
git config --global user.email "xxxx@163.com"
8.git stauts时查看工作区状态显示如下
$ git status
On branch master // 在主分支上
nothing to commit, working tree clean //工作区没有需要提交的,工作树很清洁
9.修改文件,文件被修改后,先add添加缓存被管理再commit提交
10.从缓存区撤销被管理的文件
git reset 文件名
11.撤销工作区文件内容的更改 :即原来在文件中更改好的内容会删除
git checkout -- 文件名
12.查看git版本日志信息:
git log
13.回退某个版本
git reset --hard 695ebb(前六位哈希值)
##分支操作 主分支:master
1.查看分支
git branch
2.创建分支
git branch 分支名
3.切换分支:
git checkout 分支名
4.创建并切换到某个分支:
git checkout -b 分支名
5.创建并切换到某个分支:
在master上合并分支:(如果不在主分支上,需要切换到主分支上再作此操作)
git merge 分支名
6.删除master下的分支:
git branch -d 分支名
git团队协作
github上 当前项目下 选择settings选项=>选择Collaboators(增加成员)
Add collaborator中输入成员github用户名,点击增加
选择Copy invite link邀请链接项 将链接路径发送给成员
成员登录github账户,使用邀请链接访问邀请页面,点击Accept invitation接受邀请