Git 基础入门完整版

本文参考林耿亮的 Git 课程进行学习归纳

1. Git 安装

1.1 Linux 系统

终端输入

# 更新安装包列表
sudo apt update
# 安装 Git
sudo apt install git
# 检查版本
git --version
1.2 Windows 系统

参考这篇: Windows 下 Git 安装与配置-CSDN博客

2. Git 初始化

cd 到需要 Git 初始化的文件夹

# 初始化仓库
git init
# 检查当前仓库状态
git status

发现多出 .git 隐藏文件夹

3. Git 基本指令

3.1 添加文件

在文件夹中,创建新的文件需要添加到暂存区

# 添加指定文件
git add <指定文件名>
# 添加所有文件
git add .
3.2 提交文件

文件添加到暂存区后,需要提交到本地仓库,git 会给每次提交生成独立的版本记录

版本记录是采用摘要算法计算出40位字符,本地可以采用前6位,可通过版本号找到曾经的历史版本

历史版本是易对象数的结构存在仓库下 .git/objects 目录里

git commit -m "描述本次提交内容"

# 其他用法
# 参数 -a, 表示直接从工作区提交到版本库,省略 git add 步骤
git commit -a
# 提交暂存区的指令文件到仓库区
git commit <指定文件名>
# 使用一次新的 commit,替代上一次提交,会修改 commit 的id
git commit --amend -m "描述本次修改的内容"
3.3 提交历史

终端输入

# 显示所有提交历史信息
git log

# 其他用法
# 查看日志(最近20条),不带参数 -n 则显示所有日志
git log -n20
# 参数 --oneline 可以让日志为一行输出
git log -n20 --oneline
# 参数 --graph 可以可视化显示分支关系
git log -n20 --graph
# 显示特定文件的版本历史
git log --follow [特定文件名]
3.4 查看文件变更
# 显示工作目录和暂存区之间的差异
git diff
3.5 查看当前仓库状态
git status

Changes to be committed 表示已经添加到暂存区的文件

Changes not staged for commit 表示已经修改但没有添加到暂存区的文件

Untracked files 表示未跟踪的文件

4. 传输协议

在 Gitee 上注册账号,绑定邮箱,创建自己的仓库

4.1 HTTPS

HTTPS 是基于 HTTP 的加密协议,每次推送内容到远程仓库或拉取远程仓库时都需要验证账号和密码,HTTPS 的优点是简单易用,兼容性较好;缺点是每次操作都需要输入账户和密码

4.2 SSH

SSH 是一种安全的远程登录协议,Git 通过 SSH 密钥来验证用户身份,使用 SSH 时私钥存储在本地,公钥存储在远程仓库中,SSH 的优点是安全性高,不需要频繁输入账号和密码;缺点是需要复杂的配置

4.2.1 生成公钥

以 Gitee 为例,终端里输入

ssh-keygen -t ed25519 -C "Gitee SSH Key"

一直按下 Enter 键直至输出密钥

Linux 用户会在 /home/用户名/.ssh 生成密钥文件(Windows 用户在 C:\User\用户名.ssh 目录下)

其中 id_ed25519 代表私钥,用于身份验证;id_ed25519.pub,表示公钥

复制 id_ed25519.pub 的内容,进入 Gitee 账户里的设置,粘贴进公钥设置里,并设置标题,点击提交

4.2.2 验证 SSH 连接

进入项目文件夹,在终端中输入

ssh -T git@gitee.com
# 提示输出 输入 yes
# 终端输出以下内容,代表连接成功
Hi ajianbest6(@ajianbest6)! You've successfully authenticated, but GITEE.COM does not provide shell access.

5. 关联远程仓库

关联远程仓库有两种方法:

5.1 将远程仓库克隆到本地

选择 gitee 上创建好的仓库,点击克隆/下载,选择任一协议,复制下载指令(git clone 开头的)

打开需要克隆到的文件夹地址,终端输入复制的下载指令,就能创建出一个和仓库同名的文件夹,里面还有 .git 文件,说明已经生成一个 git 仓库了

5.2 将已有的本地仓库和远端仓库进行关联

点击克隆/下载,选择任一协议,复制仓库地址连接

# 关联远程仓库
git remote add origin 复制的仓库地址链接
# 验证关联成功
git remote -v

看到有两行仓库地址输出,则为关联成功

# 推送本地仓库到远程仓库
git push -u origin "master"

刷新远程仓库,就能看到推送上去的本地文件

5.3 git pull

拉取远端的最新更新

git pull <远程仓库名> <远程仓库分支>

通常的都是用 git pull,默认拉取当前关联分支的最新更新

5.4 git push

推送本地的最新修改(先将本地修改文件进行3.2中的提交,再进行 git push 操作)

git push <远程仓库名> <本地分支名>:<远程分支名>

通常的都是用 git push,默认推送到当前关联分支

6. 分支

在 Git 中,分支(Branch) 是一个非常核心且强大的概念。它不仅简化了多人协作开发流程,还支持并行开发、版本控制、功能隔离等

6.1 创建分支

终端输入

# 创建新分支
git branch <新分支名>
# 查看所有分支
git branch
# 切换分支
git checkout <新分支名> # 或者 git switch <新分支名>
6.2 合并分支

首先切换到分支上,提交所有修改的内容,即将合并到主分支上,终端输入

# 切换到主分支
git checkout master
# 合并分支
git merge <新分支名>

理想情况下,合并没有冲突,成功合并

当有冲突的情况下,git 提示要解决冲突,终端输入

# 查看当前冲突状态
git status

找到冲突文件,用编辑器打开(vscode或者其他),文件会出现以下标记

<<<<<<< HEAD
这是当前分支的内容
=======
这是要合并进来的分支的内容
>>>>>>> dev

手动解决冲突,然后删除标记符号<<<<<<< HEAD ======= >>>>>>> dev,再次重新提交

6.3 删除分支

合并到主分支后,该分支就可以删除,终端输入

git branch -d <新分支名>
# 查看分支状态
git branch

分支删除成功

注意,在删除分支前要确保已经合并到主分支,否则 git 会提示报错

如果需要强制删除分支,终端输入

git branch -D <新分支名>

7. 标签

标签用于记录某次重要更新

7.1 打上标签
# 轻量标签
git tag <标签名>  # 在最新的 commit 上打上标签
# 创建带附注的标签
git tag -a <标签名> -m "标签说明"
# 给某一次提交打上标签
git tag -a <标签名> <commit的哈希值> -m "标签说明"
# 查看标签
git tag
# 查看详细标签信息
git show <标签名>
7.2 推送标签
# 推送单个标签
git push origin <标签名>
# 推送所有标签
git push origin --tags
7.3 删除标签
# 删除本地标签
git tag -d <标签名>
# 删除远程标签
git push origin --delete <标签名>

8. 恢复文件

当文件提交到暂存区,但是想恢复到之前的状态

git checkout -- <文件名>

# 撤销存放在暂存区
git reset <文件名>
# 撤销提交到前一次提交
git reset --soft Head~1

# 生成一次新的提交,且之前的提交还保留
git revert <要撤销的 commit 哈希值>

可以在 vscode 中下载 GitLens 插件

就可以在 vscode 左侧的插件中看到多少文件修改,以及多少文件存放在暂存区和提交指令

git revert 对比 reset 更加安全,不会影响到团队其他人的提交

参考博客:git reset和 git revert_git reset 和 git reverse区别-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值