Day30:GIT代码托管

115 阅读7分钟

1.git简介

GIT概念

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

保密程度高一般使用集中式

作用

代码备份

版本控制

版本回退

协同工作

责任追溯

根据提交记录找人

区别

svn是集中式的,代码集中于中央服务器

git是分布式的,在本地仓库和远程仓库都能进行处理

安装和配置

安装

测试

git -v

配置

git config --global user.name "fudong"

git config --global user.email "fudong@qq.com"

查看配置

git config --list

  • 工作区: 就是你在电脑里能看到的目录。
  • 暂存区: 英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库: 工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

2.本地仓库

概念

工作目录

代码的存放位置

暂存区

代码提交到仓库之前的临时存储空间

本地历史仓库

用于存放不同版本的代码

暂存区存在的意义

用于临时保存用户的修改,以便稍后提交到仓库

可以选择性提交

可以允许对多个文件进行统一的管理和操作,确保一次性提交的文件是你希望保存的内容

命令

git init

初始化创建git仓库

git status

查看Git状态

git add 文件名

将本地文件添加到暂存区

git add .

将本地所有文件添加到暂存区

git commit -m '提交的信息'

提交,将暂存区中的所有代码提交到本地历史仓库

git log

查看日志(查看历史提交记录)

q

退出

操作

  1. 创建一个文件夹,01-git-local,通过code打开
  2. 使用git init操作,初始化本地仓库
  3. 创建了一个文件a.html
  4. 使用git status命令,查看状态,提示没有添加
  5. git add . 添加到暂存区( 绿字变A,表示已经被添加了
  6. 使用git commit -m '提交的信息' 将a.html文件提交到本地仓库
  7. 使用git log查看日志(历史提交记录)

3.版本切换

命令

git reflog

可以查看所有分支的所有操作(更加精简的展示日志)

git reset --hard

版本唯一索引值,切换版本

操作

  1. 创建一个b.html
  2. 使用git add . 添加暂存区
  3. 使用git commit -m '提交的信息' 将b.html提交到本地仓库
  4. 使用git log查看日志
  5. 使用git reflog 查看精简日志
  6. 使用git reset --hard 版本唯一索引值,切换版本

4.分支管理

概念

几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线。

使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作

一般用于周期较长的模块开发,或者是尝试性的模块开发

命令

显示所有分支

git branch

创建分支

git branch 分支名

修改分支名称

git branch -m 旧分支名 新分支名

切换分支

git switch 分支名 (新写法,推荐)

git checkout 分支名(老版本,不推荐

合并分支到当前分支

git marge 要合并的分支名

删除分支

git branch -d 分支名

操作

  1. 创建一个文件夹,02-git-branch,通过code打开
  2. 使用git init操作,初始化本地仓库
  3. 创建了一个文件a.html,并提交(第一个版本
  4. 创建了一个文件b.html,并提交(第二个版本
  5. 创建一个test分支(git branch test
  6. 切换到test分支(git switch test
  7. 创建c.html,并在test分支上进行了一次提交(版本三
  8. 使用git log命令,查看当前版本所在的分支,为test
  9. 安装gitlens插件,查看分支结构
  10. 切换到主分支(git switch master)
  11. 合并到test分支 (git merge test)(一定要先切换到主分支再合并其它分支)
  12. 删除test,c文件出现在了主分支上(git branch -d test)

5.远程仓库

概念

git远程仓库是互联网上托管的git代码仓库,它可以帮助团队成员之间协作开发同一个项目

可以保证代码的安全性和可靠性

本地推送到远程

创建远程仓库

  1. 设置git账号(自己注册)
  2. 生成SSH公钥 公钥设置
    1. cd ~/.ssh (查看是否生成过ssh公钥(可以忽略
    2. git config --list 查看设置的git账户和邮箱
    3. ssh-keygen -t ed25519 -C "邮箱" 然后按三次回车生成的图案,就是公钥
    4. cd.ssh (进入c:\Users\用户名.ssh 文件夹)
    5. more id_ed25519.pub (查看生成的公钥,或用记事本打开id_ed25519.pub文件) 得到公钥
    6. ssh-ed25519 XXXprbAW6Si4McKtxOsC+K/OYhgGonkIUv15x2enoOCXK 用户名@qq.com
  1. 登录码云,在账号设置的ssh公钥中复制上面的部分,设置公钥
  2. 公钥测试 ssh -T git@gitee.com 出现既成功
  3. 创建远程仓库
    1. 新建一个仓库,填写路径和仓库名
    2. 得到一个仓库
    3. 选择ssh复制仓库路径git@gitee.com:用户名/git-local-01.git

推送代码到远程仓库

  1. 为远程仓库地址起了一个别名(一般使用这个别名origin
    1. git remote add origin git@gitee.com:用户名/git-local-01.git
  1. 推送 git push -u origin master

注意,如果多次给仓库起别名,会报错error: remote origin already exists.

则使用 git remote rm origin 移除别名,再git remote add origin

远程拉取到本地

  1. 如果是第一次,需要克隆到本地,选择任意一个文件夹,作为要克隆的地方
    1. git clone 仓库地址
    2. 仓库地址—— git@gitee.com:用户名/git-local-01.git
  1. 模拟张三新增了一个功能(添加了一个文件 c.html)
    1. 先git add . 添加到暂存区
    2. 再git commit -m '信息'提交到本地仓库
    3. 最后git push -u origin master 推送到远程仓库
  1. 领导想检查代码,不需要克隆了,只需要pull
    1. git pull 远程仓库名 分支名(git pull origin master

代码冲突的解决

程序员1(张三)修改了c.html 文件,第一行是111

    1. 先git add . 添加到暂存区
    2. 再git commit -m '信息'提交到本地仓库
    3. 最后git push -u origin master 推送到远程仓库

程序员2(BOSS)修改了c.html 文件,第一行是2222

    1. 先git add . 添加到暂存区
    2. 再git commit -m '信息'提交到本地仓库
    3. 最后git push -u origin master 推送到远程仓库

报错

出现原因,代码冲突,拒绝提交

正确的解决方式

只要推送到远程之前,先做拉取操作,解决完代码冲突之后,再推送

    1. git pull 远程仓库名 分支名 拉取到本地
    2. 解决冲突后,再添加git add . 提交 git commit -m '信息' 推送到远程 git push -u

推送案例

将学生管理系统代码推送到远程仓库

  1. node-modules不需要提交到远程仓库
    1. 创建一个.gitignore文件
    2. 内容为node_modules
  1. 使用git init 初始化git仓库
  2. 添加暂存区 提交本地仓库
  3. 创建远程仓库,推送到远程仓库
  4. 在另一个文件夹下从远程仓库克隆内容 git clone 仓库地址
  5. 进入目录,npm i 下载所需的依赖
  6. 再npm run server

git代码托管.png