git从入门到熟练

一、Git基础概念

1、什么是Git?

Git是一个分布式版本控制系统,用于跟踪文件的变化,协调多人协作开发,并能够恢复到之前的版本。

2、为什么使用版本控制?

• 追踪历史变更,了解谁在何时做了什么修改

• 可以恢复到之前的版本,轻松撤销错误

• 多人协作时避免文件冲突

• 实验性功能可以在独立分支开发,不影响主代码

3、Git核心概念

区域 / 对象 作用
工作区(Workspace) 本地写代码的文件夹,即实际操作的文件目录。
暂存区(Index/Stage) 临时存放待提交的修改,是工作区和版本库的 "中转站"。
版本库(Repository) Git 管理的核心目录(.git 文件夹),存储所有版本记录、分支等。
提交(Commit) 把暂存区的修改保存到版本库,生成唯一的版本 ID(哈希值),是版本管理的最小单位。
分支(Branch) 独立的开发线,默认主分支为 main(旧版为 master),可创建分支开发,再合并。
远程仓库(Remote) 托管在网络上的 Git 仓库(如 GitHub、Gitee、GitLab),用于多人协作和代码备份。

4、Git工作流程

a.在工作区修改文件

b.将修改添加到暂存区 git add <file>

c.将暂存区内容提交到本地仓库 git commit -m "描述信息"

d.推送至远程代码仓库

5、基本术语

  • 提交(Commit): 保存当前暂存区的变更到仓库
  • 分支(Branch): 独立的开发线路,可以从主分支分离出来进行功能开发
  • 合并(Merge): 将一个分支的更改整合到另一个分支
  • 远程仓库(Remote): 托管在网络上的共享仓库,如GitHub、GitLab等

二、git安装

1、安装

Linux系统:

bash 复制代码
ubuntu系统
apt install git -y 


centos系统
yum install git -y

windows系统:

请参考此文档进行安装

https://blog.csdn.net/deltadev/article/details/148623341?fromshare=blogdetail&sharetype=blogdetail&sharerId=148623341&sharerefer=PC&sharesource=Z2831631429&sharefrom=from_link

2、验证安装

Linux系统使用git --version进行验证

windows系统使用git --version验证

3、基础必做

Git 需配置用户名和邮箱(关联代码提交记录),用户名邮箱出现在你的所有提交记录中:,执行以下命令(替换为自己的信息):

bash 复制代码
# 配置全局用户名
git config --global user.name "Your Name"
# 配置全局邮箱(建议用GitHub/Gitee/Gitlab注册邮箱)
git config --global user.email "your_email@example.com"

使用git config --list查看配置,确认用户名和邮箱正确。

三、本地仓库基础操作(核心)

1. 初始化本地仓库

在需要管理的文件夹下,执行:

bash 复制代码
打开git bash

# 进入目标文件夹(替换为自己的路径)
cd /Users/xxx
# 初始化Git仓库(生成.git隐藏文件夹)
git init

2. 文件状态查看

Git 中文件有 3 种状态:未跟踪(Untracked)已暂存(Staged)已提交(Committed),通过以下命令查看:

复制代码
git status  # 详细查看文件状态
git status -s  # 简化输出(推荐,更清晰)

3. 暂存文件(工作区 → 暂存区)

复制代码
# 暂存指定文件
git add filename.txt
# 暂存所有修改/新增文件
git add .
# 暂存指定目录
git add src/

4. 提交修改(暂存区 → 版本库)

复制代码
# 基础提交(需输入提交信息)
git commit
# 直接输入提交信息(推荐)
git commit -m "feat: 新增登录功能"
# 跳过暂存区,直接提交已跟踪文件的修改(慎用)
git commit -am "fix: 修复登录按钮样式问题"
# 修正最后一次提交(信息写错/漏加文件)
git commit --amend  # 会进入编辑器修改信息
git commit --amend -m "新的提交信息"  # 直接修改信息

提交信息规范(推荐 Angular 规范):

  • feat: 新功能
  • fix: 修复 bug
  • docs: 文档修改
  • style: 代码格式(不影响逻辑)
  • refactor: 重构(既不是新功能也不是修 bug)
  • test: 测试相关
  • chore: 构建 / 工具配置等杂项

5. 版本回溯与查看

(1)查看提交历史
复制代码
git log  # 完整日志
git log --oneline  # 简化日志(一行显示,带简短哈希)
git log --graph  # 图形化显示分支关系
git log -n 5  # 只看最近5次提交
git log --author="Your Name"  # 查看指定作者的提交
(2)回溯到指定版本
复制代码
# 查看所有提交的哈希值
git log --oneline
# 回溯到指定版本(保留修改,可恢复)
git reset --soft 哈希值  # 暂存区保留修改
git reset --mixed 哈希值  # 工作区保留修改,暂存区清空(默认)
git reset --hard 哈希值  # 彻底回滚,工作区/暂存区都清空(慎用)

⚠️ 注意:git reset --hard 会丢失未提交的修改,若误操作可通过 git reflog 恢复:

复制代码
git reflog  # 查看所有操作记录(包括reset)
git reset --hard 操作记录中的哈希值  # 恢复到reset前的版本

四、分支操作(多人协作核心)了解即可

1. 分支基础命令

复制代码
# 查看所有分支(* 表示当前分支)
git branch
# 创建分支
git branch dev  # 创建dev分支(基于当前分支)
# 切换分支
git checkout dev
# 创建并切换分支(推荐)
git checkout -b feature/login  # 创建feature/login分支并切换
# 重命名分支
git branch -m old-name new-name
# 删除分支(需先切换到其他分支)
git branch -d dev  # 删除已合并的分支
git branch -D dev  # 强制删除未合并的分支(慎用)

2. 分支合并

(1)合并到主分支(如 dev 合并到 main)
复制代码
# 1. 切换到主分支
git checkout main
# 2. 拉取最新的主分支代码(多人协作时必做)
git pull origin main
# 3. 合并dev分支到当前分支
git merge dev
(2)解决合并冲突

当两个分支修改了同一文件的同一部分,合并时会出现冲突,Git 会标记冲突区域:

plaintext

复制代码
<<<<<<< HEAD  # 当前分支的内容
main分支的代码
=======
dev分支的代码
>>>>>>> dev  # 待合并分支的内容

解决步骤:

  1. 打开冲突文件,手动修改冲突内容(删除标记,保留正确代码);
  2. 暂存修改后的文件:git add 冲突文件
  3. 完成合并:git commit -m "merge: 合并dev分支,解决登录逻辑冲突"

3. 变基(Rebase):更整洁的合并方式

变基可以让提交记录更线性,替代 merge(适合个人开发分支合并到主分支前):

复制代码
# 切换到开发分支
git checkout feature/login
# 基于main分支变基(将当前分支的提交重新应用到main最新版本)
git rebase main
# 若出现冲突,解决后执行:
git add .
git rebase --continue  # 继续变基
# 放弃变基
git rebase --abort

⚠️ 注意:不要对已推送到远程的公共分支执行变基(会打乱他人的提交记录)。

五、远程仓库操作(多人协作)

1. 关联远程仓库

(1)方式 1:本地仓库推送到远程(先有本地,后有远程)
  1. 在 GitHub/Gitee/GitLab 创建新仓库(不要勾选 "Initialize this repository with a README");

  2. 本地关联远程仓库:

    关联远程仓库(origin是远程仓库的别名,可自定义)

    git remote add origin https://github.com/你的用户名/仓库名.git

    查看已关联的远程仓库

    git remote -v

(2)方式 2:克隆远程仓库到本地(先有远程,后有本地)
复制代码
git clone https://github.com/你的用户名/仓库名.git  # HTTPS方式
git clone git@github.com:你的用户名/仓库名.git  # SSH方式(推荐,免密码)

2. SSH 配置(免密码推送)

HTTPS 方式每次推送都要输密码,推荐配置 SSH:

1、生成 SSH 密钥:

复制代码
ssh-keygen -t rsa -C "your_email@example.com"  # 一路回车即可

2、查看公钥

  1. Windows:cat ~/.ssh/id_rsa.pub
  2. Mac/Linux:cat ~/.ssh/id_rsa.pub

3、复制公钥,粘贴到 GitHub/Gitee /Gitlab的「设置 → SSH 密钥」中。

3. 推送代码到远程

复制代码
# 第一次推送(需指定分支)
git push -u origin main  # -u 关联本地main和远程main,后续可直接git push
# 后续推送
git push
# 推送指定分支
git push origin dev

4. 拉取远程代码

复制代码
# 拉取远程最新代码并合并(等同于 git fetch + git merge)
git pull origin main
# 只拉取不合并(先查看差异,再手动合并)
git fetch origin main
git merge origin/main
# 拉取并变基(保持提交记录整洁)
git pull --rebase origin main

5. 远程分支操作

复制代码
# 删除远程分支
git push origin --delete dev
# 更新远程分支列表(同步远程已删除的分支)
git remote prune origin

Git命令速查表

基础操作

命令 说明 示例
git init 初始化Git仓库 git init
git add <file> 将文件添加到暂存区 git add index.html
git add . 添加所有修改文件到暂存区 git add .
git commit -m "<message>" 提交暂存区文件到仓库 git commit -m "添加首页"
git status 查看工作区状态 git status
git log 查看提交历史 git log --oneline

分支操作

命令 说明 示例
git branch 列出所有本地分支 git branch
git branch <name> 创建新分支 git branch feature/login
git checkout <branch> 切换分支 git checkout feature/login
git switch <branch> 切换分支(Git 2.23+) git switch feature/login
git checkout -b <name> 创建并切换分支 git checkout -b feature/payment
git switch -c <name> 创建并切换分支(Git 2.23+) git switch -c feature/payment
git merge <branch> 合并指定分支到当前分支 git merge feature/login
git branch -d <branch> 删除本地分支 git branch -d feature/login

远程仓库

命令 说明 示例
git remote -v 查看远程仓库信息 git remote -v
git remote add <name> <url> 添加远程仓库 git remote add origin https://github.com/user/repo.git
git push <remote> <branch> 推送分支到远程 git push origin main
git push -u <remote> <branch> 设置上游分支并推送 git push -u origin main
git pull <remote> <branch> 拉取并合并远程分支 git pull origin main
git clone <url> 克隆远程仓库 git clone https://github.com/user/repo.git

撤销操作

命令 说明 示例
git checkout -- <file> 撤销工作区修改 git checkout -- index.html
git reset HEAD <file> 撤销暂存区修改 git reset HEAD index.html
git commit --amend 修改最近一次提交 git commit --amend -m "修正提交信息"
git reset --hard <commit> 回退到指定提交 git reset --hard a1b2c3d

常用配置

命令 说明 示例
git config --global user.name "<name>" 设置全局用户名 git config --global user.name "John Doe"
git config --global user.email "<email>" 设置全局邮箱 git config --global user.email "john@example.com"
git config --global core.editor "<editor>" 设置默认编辑器 git config --global core.editor "code --wait"
git config --list 查看所有配置 git config --list
相关推荐
夜流冰4 小时前
Git - GitForWindows
git
一个很帅的帅哥5 小时前
部署chat-vue
大数据·git·elasticsearch
芒鸽5 小时前
鸿蒙PC使用ffmpeg+electron实现视频中音频的提取
git
SunkingYang6 小时前
使用TortoiseGit工具推送(push)时,忘了先拉取(Pull),提示冲突,后续怎么处理冲突?
git·tortoisegit·pull·push·推送·冲突·拉取
BestOrNothing_20157 小时前
Git 团队开发冲突合并全流程:本地是否改动 + 远端是否更新,如何正确同步并合并(同分支/不同分支下的几种场景)
git·分支管理·git pull·git merge·分支冲突·git协作·git fetch
zzlyyds7 小时前
工作的时候遇到的git版本冲突与合并问题
git
BestOrNothing_20157 小时前
Git fetch 详解:git fetch 和 git fetch origin 到底有什么区别?(origin/xxx、远端跟踪分支一次讲透)
git·分支管理·开发规范·新手教程·fetch / origin·本地/远程 分支·detached head
gsls2008087 小时前
服务器状态监控Uptime Kuma
运维·服务器·git
XiaoHu02077 小时前
Linux进程间通信
linux·运维·服务器·c++·git·vscode