Git复习

系统的整理一下Git

git的诞生

  • Linux之父linus 想开源使用代码仓库,又觉得当时的其他的不好用,种种原因下 自己花费15天 用C语言写了Git
  • 推荐读书《just for fun》linus的自传 ,很有意思

GIT诞生之前有个SVN

SVN:

  • SVN 是一种集中式的版本控制工具。
  • 所有的客户端将自己的代码上传到中央服务器,中央服务器的版本数据库会保存上传的各个版本的代码,并进行统一管理。
  • 这里注意,客户端本身是不存在版本数据库的,所以,如果中央服务器离线或宕机,则集中式版本控制则无法使用。SVN 是一个增量式的版本控制,它不会将整的保存下来,而只会记录下版本之间的差异,然后按照顺序更新或者恢复特定版本的数据。. 这使得服务端的存储量会非常低。

git:

  • GIT是一个分布式的版本控制工具
  • 每个人的PC都可以有一个版本库;有很好的容灾性;

先安装一个Windows版

按照官网安装即可

配置

用户名+邮箱(最好跟gitee上一样)

git config –global user.name “自己的用户名”

git config –global user.email “自己的邮箱”

最终在C:\Users\ZXH082600\.gitconfig生成一个配置文件

本地基操

初始化(创建版本库)

git init

在当前文件夹下创建一个git仓库

image-20211027202830969

在创建一个文件 a.txt

ls -l 显示total 0 此时只是新建了一个文件,和git并没有关系

image-20211027204330960

提交文件

  1. git status 查看文件状态

  2. git add 将文件添加到 暂存区(生成index索引文件)

    • 如果报错image-20211027210523876
    • 解决办法git config –global core.autocrlf false
  3. git commit -m “注释” a.txt (每次commit都必须写清楚注释)image-20211027205215099

查看文件提交记录

git log a.txt

git log –pretty=oneline a.txt

image-20211027211605054

版本回退

git reset –hard HEAD^

git reset –hard HEAD^ ^^^ (^代表退几步)

版本穿梭

git reflog a.txt 查看历史记录的版本号(很详细)

image-20211028100945522

git reset –hard ee58290 (指针指向版本号)

git reset –hard HEAD~4(回退四步)

撤销修改内容(已修改未add的)

git checkout – a.txt

删除某个git文件

  1. git rm c.txt
  2. git commit -m “del c.txt”

谈谈git的三个库(工 暂 本)

image-20211028104132867

Gits实操之分支

  • 创建分支
    • git branch查看分支
    • git branch 分支名
  • 切换分支
    • git checkout 分支名
    • git checkout -b 分支名(创建并切换,如果已存在会报错)
  • 合并分支
    • 先切换到主分支 git checkout master
    • git merge 目标分支名
  • 删除分支
    • 先切换到主分支 git checkout master
    • git branch -d 分支名

冲突

  • 冲突一般是指同一个文件同一位置的代码,在两个版本合并时版本管理软件无法判断该保留哪一个版本,因此会提示该文件发生冲突;

分支覆盖冲突

  • 合并时冲突

    • image-20211028110717436
    • image-20211028112659780
  • 解决

    ​ 不可以将其他开发人员的代码 覆盖或者删除;(同步,全部保留;)

    • git diff //可以找到发生冲突的文件和内容
    • 然后修改冲突文件的内容,再次git add 文件 和git commit (无文件名)提交后,后缀merging消失,说明冲突解决

远程服务器冲突

  • 版本不一致 先pull一个最新版本的,diff 冲突文件中的冲突需要手动处理,再重新add/commit/push

idea拉取提交冲突

Gitee云上实操

  • 创建ssh key
    • ssh-keygen -t rsa -C 你自己用户邮箱
    • 成功的话会生成.ssh文件夹
  • 打开pub文件。复制全部,复制到gitee公钥
  • 连通性测试
  1. 先在本地初始化创建一个git库 git init
  2. 在gitee中创建一个同名空仓库
  3. 本地操作提示,git remote与远程建立连接image-20211028153432245
  4. 从服务器拉最新的
    • git pull origin master
  5. 新员工入职从远程拉项目
    • git clone origin https:xxxxxx.git
    • 然后切换到工作目录,开始操作

新员工入职,如何配合工作+取得代码

git一般工作流程

image-20211028161839922

重点:git fetch origin master查看是否版本冲突
  1. up to date 版本一致,证明没人改过
  2. ahead of 你的比服务端新,可以提交
  3. behind 服务器有更改,不能直接push 必须先pull 最新的,然后把自己的代码加上再重新fetch
  4. pull之后自己手动处理冲突然后再提交

邀请成员协同开发(被动等待邀请)

要点击确认

跨团队协作fork(主动fork)

请求外部专家帮助解决bug

  1. 找到那个项目,点fork
  2. git clone /add/push等
  3. 新建pull requests
  4. 主项目端会收到审查和测试
  5. 点文件查看diff
  6. 合并分支

仓库删除

点击管理–>删除项目—>验证信息

IDEA整合

Git配置忽略文件

  1. 自己的用户目录下创建 git.ignoreimage-20211029111113274
  2. image-20211029111543371
  3. 规则https://github.com/github/gitignoreimage-20211029112355363
  4. 设置找到git 配置
  5. 安装gitee插件
  6. 版本控制中有个giteeimage-20211029113034406
  7. 创建一个普通maven项目
  8. image-20211029113647439
  9. add /commit
  10. 同步到云端,右击git,点shareimage-20211029115150251
  11. image-20211029115909354

Others:

-------------本文结束感谢您的阅读-------------