Git基础.xmind
    git是一个免费开源的分布式版本控制系统。每个客户端都相当于一个服务器端

    托管中心种类:
    局域网环境下:可以搭建GitLab服务器作为托管中心,GitLab可以自己去搭建(团队项目)
    外网环境下:用Github或Gitee托管(跨团队合作)

    1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/1605477/1622116400805-9b20b3a5-c181-493f-beef-08900b733aba.png#align=left&display=inline&height=480&margin=%5Bobject%20Object%5D&name=image.png&originHeight=668&originWidth=1096&size=183306&status=done&style=none&width=788)<br />**团队合作**
    2. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/1605477/1622116321473-6f31c3f5-c1d3-4d73-ac43-8c19dce20a06.png#align=left&display=inline&height=480&margin=%5Bobject%20Object%5D&name=image.png&originHeight=700&originWidth=1241&size=208213&status=done&style=none&width=851)<br />**跨团队合作**

    git用户名和邮箱配置
    用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变。每次commit都会用用户名和邮箱纪录

    1. //查看git版本
    2. git --version
    3. //清屏
    4. clear
    5. //查看用户名和邮箱
    6. git config user.name
    7. git config user.email
    8. //修改用户名和邮箱
    9. git config --global user.name "username"
    10. git config --global user.email "email"

    本地库初始化

    1. git init

    image.png
    注:.git目录中存放的是本地库相关的子目录文件,不能删除和修改

    git本地结构
    image.png

    1. //提交到暂存区
    2. git add 文件
    3. eggit add demo.txt
    4. //提交到本地库
    5. git commit -m"注释" 文件 //-m 后跟注释

    注:不放在本地仓库的文件,git是不进行管理的

    1. //查看工作区和暂存区的状态 本地文件发生修改时 状态也会发生改变
    2. git status
    3. //查看提交的 显示从最近到最远的日志
    4. git log //分页展示
    5. git log --pretty=oneline //一行展示
    6. git log --oneline //简洁索引码后 一行展示
    7. git reflog //多了HEAD@{1} 表示回退到这个历史版本需要走几步
    8. //注:当历史记录过多的时候,查看日志有分页 分屏效果
    9. 下一页:空格 上一页:b 尾页显示:END 退出:q
    10. //reset命令 前进或者后退历史版本
    11. git reset --hard 索引
    12. 注:hard参数:本地库指针移动时,重置暂存区和工作区。(跟随着本地库指针)
    13. mixed参数:本地库指针移动时,重置暂存区,工作区不动
    14. soft参数:本地库指针移动时,暂存区和工作区不动
    15. //删除工作区中的文件
    16. rm 文件
    17. git add 文件 //将删除操作同步到暂存区
    18. git commit -m"注释" 文件 //将删除操作同步到本地库 不是物理删除,只是动了一下索引
    19. //找回本地库中删除的文件 实际上就是将历史版本添加到刚才添加文件的那个版本即可
    20. git reset --hard 索引 //做回滚操作
    21. //比较工作区和暂存区的文件
    22. git diff 文件
    23. //比较暂存区和本地库的文件
    24. git diff 索引 demo2.txt
    1. //错误1
    2. remove the file manually to continue.
    3. 到.git的文件夹,删除index.lock 即可

    分支
    版本控制过程中,使用多条线同时推进任务。多个分支并行开发,互不影响,提高开发效率。

    1. //查看分支
    2. git branch -v
    3. //创建分支
    4. git branch branch01
    5. //切换分支
    6. git checkout branch01
    7. //合并分支
    8. git merge 分支名 //先切换回master分支
    9. 冲突问题
    10. 如果在两个分支在同一个文件同一个地方进行修改,就会发生冲突;显示(master|merging
    11. 这时需要决定留下哪一部分,添加到暂存区和本地库就行了。(添加到本地库时 commit后不带文件名)
    12. eggit commit -m "解决了冲突问题"

    image.png

    远程库初始化
    在github上new repository就行了

    1. //查看远程库是否在本地库有别名
    2. git remote -v
    3. //在本地库为远程库起别名为orgin
    4. git remote add orgin https://github.com/wonderfh/GitRespTest.git
    5. //删除本地为远程库起的别名
    6. git remote rm origin
    7. //推送操作
    8. git push orgin master //向远程库推送分支
    9. //克隆操作
    10. git clone 远程库地址 //克隆完后要进入仓库才能查看信息(注意进入仓库右边有一个master)
    11. 注:克隆操作完成了操作
    12. 1 初始化本地仓库
    13. 2 将远程仓库内容完整的克隆到本地
    14. 3 替我们创建远程库的别名
    1. //远程库拉取操作
    2. pull相当于fetch操作和merge操作的合并
    3. git fetch orgin master //orgin:远程库别名 master:远程库分支
    4. //抓取后在远程库看看内容是否正确
    5. git checkout orgin/master
    6. //合并操作
    7. git merge gWork/master
    8. //远程库的拉取可以直接pull命令完成 代码简单时用,省事
    9. git pull orgin master
    1. //错误2
    2. OpenSSL SSL_read: Connection was reset, errno 10054
    3. //打开Git命令页面,执行git命令脚本:修改设置,解除ssl验证 再次拉取即可
    4. git config --global http.sslVerify "false"

    注:clone和pull的区别
    clone:从远程服务器克隆一个一模一样的版本库到本地,复制的是整个版本库(clone是将一个库复制到你的本地,是一个本地从无到有的过程)

    pull:从远程服务器获取到一个branch分支的更新到本地,并更新本地库(pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库)

    SSH免密登录
    1 进入主用户

    1. cd ~

    2 执行生成一个 .ssh 的目录

    1. ssh-keygen -t rsa -C 2437350661@qq.com //用自己账户的邮箱

    image.png
    3 打开 .pub 文件复制里面的内容 去github/gitee 内设置密钥
    4 此后 就可以正常进行push操作 不能每次都要登录了(要在ssh远程地址上)

    本地库的删除(慎用)

    1. ls -la //查看仓库目录下的 .git 隐藏文件夹
    2. rm -rf .git //删除文件夹

    **

    idea集成git

    1. #在本地库推送
    2. addcommit操作执行完后,就当本地仓库去把东西都推送到线上
    3. #先进行拉取操作 保证现在的代码是最新的 --allow-unrelated-histories允许不相关历史合并
    4. git pull orgin master --allow-unrelated-histories
    5. //点 i 进入编辑模式;退出 esc ; :wq 保存;
    6. #推送
    7. git push -u orgin master -f

    注意点:
    1 在本地库增加了新的操作后 要push到远程仓库前,为了防止冲突,保证现在的代码是最新的,要先进行pull操作 没有冲突后再push操作