第十四git

Git是什么?

  • Git是目前世界上最先进的分布式版本控制系统。

SVN与Git的最主要的区别?

  • SVN为集中式版本控制系统,版本库是集中存放在中央服务器的
    单独搭建SVN服务器,不能离线工作
    操作简单,代码保密性较强


    1.png
  • GIT为分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库
    1 适合分布式开发,强调个体
    2 公共服务器压力和数据量都不会太大
    3 速度快灵活
    4 可以离线工作
    5 操作复杂,代码保密性差

2.png

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 "[email protected]"
运行以上两个命令后会在C盘-用户-xxxx(系统账户文件夹)这个目录下生成.gitconfig文件,用编辑工具可以打开该文件查看配置好的用户和邮箱
如:

   [user]
        email = [email protected]
        name = user

github 远程仓库搭建 (统一的项目官方托管网站)

  • github注册及登录
  • 配置免密钥登录
    配置免密钥登录本地是为了将本地仓库与远程github仓库关联
    1. 本地仓库需要配置生成ssh key密钥
    配置命令:
    ssh-keygen -t rsa -C [email protected]
    一直回车后生成如下内容,密钥生成成功
+---[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 [email protected]

回车,输入yes再回车,测试成功关联后.ssh密钥文件夹会自动生成一个known_hosts文件,
注:因网络问题有可能会失败,多测试几次就好

  • 本地仓库项目与github仓库项目关联
    本地仓库与github仓库联后,我们就可以开始对项目版本开始管理了,在本地的项目目录下打开Git Bash命令行工具,执行如下命令
git remote add origin github上新创建的项目https标识(路径)

项目版本管理

  • 第一次发布项目版本(从本地仓库分支到远程github仓库分支)
  1. git add .
  2. git commit -m"提交日志说明"
  3. git push -u origin master
  • 第一次下载项目版本(从远程github仓库分支到本地仓库分支)
    git clone github上新创建的项目https标识(路径)
  • 后续提交版本(从本地仓库分支到远程github仓库分支)
  1. git add .
  2. git commit -m"提交日志说明"
  3. 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 ..." 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 "[email protected]"

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接受邀请

你可能感兴趣的:(第十四git)