《记一忘三二》Git学习笔记

78 阅读4分钟

版本管理工具

集中式版本管理

集中式版本管理

分布式版本管理

分布式版本管理

命令

用户信息

设置全局用户信息

# 设置全局用户名
git config --global user.name "yezi"

# 设置全局用户邮箱
git config --global user.email "yezi@qq.com"

用户名邮箱 只是用于标识提交代码时用户信息,并不需要和 GithabGitee 等代码托管的用户信息平台相关联

查看全局用户信息

git config --global --list

初始化仓库

git init

需要进入文件夹目录,会自动添加 .git隐藏文件夹`

工作区

查看文件状态

git status

添加文件至暂存区

# 添加 a.txt文件 到暂存区
git add a.txt

# 添加 ./目录 下所以文件到暂存区
git add ./

恢复暂存区文件至工作区

# 从暂存区中恢复 a.txt文件 ,不影响工作目录
git restore --staged a.txt


# 从暂存区中恢复 ./目录 ,不影响工作目录
git restore --worktree --staged ./ 

暂存区

提交暂存区文件至本地仓库

git commit -m "第一次提交"

查看 commit 日志

简单日志
git reflog

在使用版本的命令中,使用 简短版本号 就能满足

详细日志
git log

查看 commit 版本的具体内容

# git cat-file -p 版本号
git cat-file -p 74da90d

移至某个 commit 版本

# 移动至指定版本号,这个版本内容会回退到工作区
git reset 版本号

# 移动至指定版本号,注意:这会删除这个版本之后的所以的 commit
git reset --hard 版本号

  • 每次 commit 都会产生一个新的版本号
  • git 是通过指针指定版本号和分支确定 当前位置

分支

查看分支信息

git branch  -v

强制更改当前分支名称

git branch -M main

如果 本地仓库 中已经存在一个名为 main的分支 ,会直接覆盖当前 main分支

如果 远端仓库 中已经存在一个名为 main的分支 ,会导致冲突

创建分支

# 以当前为基础,创建 bug分支 
git branch  bug

切换分支

# 切换至 bug分支
git  checkout bug

合并分支

# 将 bug分支 与当前分支进行合并
git merge bug 

image-20250702125557899

合并冲突

master分支 上合并 bug分支 ,如果 master分支 和 bug分支 在同一行有修改,就会发生冲突,也就是 git 并不知道如何去取舍代码

// bug分支 A文件 的内容

这是A文件的内容
12
23

// master分支 A文件 的内容

这是A文件的内容
3
3
<<<<<<< HEAD
// master分支 A文件 的内容

这是A文件的内容
3
3
=======
// bug分支 A文件 的内容

这是A文件的内容
12
23
>>>>>>> bug

合并分支的前提是,两个分支都要 commit

<<<<<<< HEAD ======= 之间的内容是当前 master分支 的代码,=======>>>>>>> 之间是 bug分支 的代码

// master分支 A文件 的内容

这是A文件的内容
3
3

多个分支只能进行一次合并

团队协作

团队内协作

跨团队协作

远程仓库操作

克隆远程仓库

# git clone  远程仓库地址
git clone https://gitee.com/hccwh_admin/template-js.git
  1. 创建一个远程仓库同等名称的文件夹目录
  2. 创建 .git 本地仓库初始化目录
  3. 创建远程仓库别名,默认创建 origin 远程仓库别名
  4. 克隆远程仓库内容至本地

创建远程仓库别名

#  git remote add 别名 远程仓库地址
git remote add template-js https://gitee.com/hccwh_admin/template-js.git

查看远程仓库别名

 git remote -v

两个 别名 的原因是一个拉取和一个推送

推送本地仓库到远程仓库

# git push 远程仓库别名 分支
git push template-js master

# 强制推送  git push 远程仓库别名 分支 --force
git push template-js master --force

image-20250702204725955

这是因为 远程仓库 内容和 本地仓库 内容发生了冲突,也就是 远程仓库本地仓库 没有的文件,可以采用 --force 强制推送

拉取远程仓库

# git pull 远程仓库别名 分支
git pull template-js master
  • 必须存在 .git 目录
  • 在当前目录拉取远程仓库文件,自动合并远程仓库的内容

登录验证

Windows凭据验证

拉取代码

需要使用 https 的地址

push更改

push 代码时,会跳出凭据添加页面

git push https://gitee.com/hccwh_admin/template-js.git master

输入凭据

输入对应 代码托管平台(Gitee、Githab等) 的用户和密码

SHH 免密验证

生成秘钥

# ssh-keygen -t key类型 -C 注释
ssh-keygen -t ed25519 -C "Gitee SSH Key"

连续按回城确定

查看秘钥

image-20250703202809531

在 代码托管 平台使用秘钥

复制 id_ed25519.pub 公钥的内容

克隆代码至本地仓库

git clone git@gitee.com:hccwh_admin/template-js.git

git原理

分支原理

image.png

commit 原理

image.png