Git入门

目录

一、Git的核心概念

二、Git本地仓库操作

2.1、安装Git

2.2、配置用户信息

2.3、初始化本地仓库

[2.4、工作区 -> 暂存区](#2.4、工作区 -> 暂存区)

[2.5、暂存区 -> 本地仓库](#2.5、暂存区 -> 本地仓库)

2.6、常用本地仓库辅助命令

三、Git远程仓库操作

3.1、本地仓库关联远程仓库

3.2、把本地代码推送到远程仓库

3.3、从远程仓库拉取/克隆代码

四、Git分支操作

4.1、分支常用命令

4.2、解决合并冲突


一、Git的核心概念

Git是一个分布式版本控制工具,核心是记录文件的修改历史,随时退回版本、用于多人协作开发。

| 概念 | 通俗解释 | 作用 |
| 工作区(Workspace) | 你电脑里能直接看到、修改的文件文件夹 | 就是你写代码的地方 |
| 暂存区(Stage/Index) | Git 里的一个 "临时存文件的地方" | 把你修改好的文件,先放到这里,准备提交 |
| 本地仓库(Local Repository) | Git 帮你存的 "版本快照" 数据库 | 提交后的文件会在这里永久保存,能随时回退 |

远程仓库(Remote Repository) 存到 GitHub/Gitee/GitLab 上的仓库 用来备份代码、和团队成员协作

文件修改的完整流程:

工作区修改文件 ->git add 暂存到暂存区 -> git commit 提交到本地仓库 -> git push推送到远程仓库

二、Git本地仓库操作

2.1、安装Git

安装网址:https://git-scm.com/

安装时一路默认下一步即可,安装完成后,右键桌面显示更多选项能看到 Git Bash Here,打开它就是命令行终端。(在文件夹的空白处这样操作可以进入当前文件目录)

2.2、配置用户信息

Git 提交记录会带上你的名字和邮箱,只需要配置一次:

bash 复制代码
# 配置用户名(写你自己的名字/昵称)
git config --global user.name "你的名字"

# 配置邮箱(和你 GitHub/Gitee 注册邮箱一致最好)
git config --global user.email "你的邮箱@xxx.com"

# 查看配置是否成功
git config --list

2.3、初始化本地仓库

先创建一个项目文件夹(比如 my-first-git),进入文件夹,右键打开 Git Bash Here

bash 复制代码
# 初始化 Git 仓库(会生成一个隐藏的 .git 文件夹,就是本地仓库)
git init

此时你的项目就被 Git 管理起来了,ls -a 命令可以看到**.git 文件夹**。

2.4、工作区 -> 暂存区

修改文件后,在用这个命令把文件放在暂存区:

bash 复制代码
# 1. 新建一个文件(比如 README.md,写点内容),也可以使用vim创建文件
echo "# 我的第一个 Git 项目" > README.md

# 2. 查看文件状态(红色表示工作区未暂存)
git status

# 3. 暂存单个文件
git add README.md

# 暂存所有修改的文件(常用,项目里多个文件修改时用)
git add .

git add 后再用 git status看,文件变成绿色,说明已经到暂存区了

2.5、暂存区 -> 本地仓库

把暂存区的文件提交到本地仓库,生成一个版本快照:

bash 复制代码
# 提交,-m 后面写这次修改的说明(必须写,方便后续回退时知道每个版本改了啥)
git commit -m "第一次提交:创建 README.md 文件"

# 提交后working tree clean
git status

# 查看提交记录(能看到所有提交的版本、作者、时间)
git log

此时本地仓库就永久保存了这个版本,后续修改都可以基于它来回退。

2.6、常用本地仓库辅助命令

bash 复制代码
# 查看当前仓库状态(最常用的命令)
git status

# 查看提交历史(简洁版,一行显示)
git log --oneline

# 撤销工作区的修改(比如改了文件想恢复到上一次提交的状态)
git checkout -- 文件名

# 撤销暂存区的文件(把 add 了的文件撤回到工作区,不影响文件内容)
git reset HEAD 文件名

# 回退到指定版本(比如想回到上一个提交)
# 先 git log 找到要回退的 commit id(前 7 位就行)
# 使用git reflog也能查看commit id
git reset --hard <commit-id>

三、Git远程仓库操作

我们以 Gitee 为例(国内访问更快),先注册账号,然后创建一个新的远程仓库:

  1. 登录Gitee -> 新建仓库
  2. 仓库名写my-first-git,和本地文件夹同名最好
  3. 不要勾选初始化README,直接创建

Gitee网址: https://gitee.com/

下面是登录后的具体操作

3.1、本地仓库关联远程仓库

复制 Gitee 上仓库的地址(HTTPS 格式),回到本地 Git Bash:

bash 复制代码
# 关联远程仓库,给它起个别名叫 origin(默认名)
git remote add origin 仓库的地址

# 查看关联的远程仓库
git remote -v

3.2、把本地代码推送到远程仓库

bash 复制代码
# 第一次推送,需要指定分支(默认主分支是 main/master,看你 Git 版本)
git push -u origin master

# 后续修改提交后,直接用这个命令推送到远程
git push

此时刷新 Gitee 仓库页面,就能看到你的代码了!

3.3、从远程仓库拉取/克隆代码

场景1:本地没有仓库,直接克隆远程仓库到本地

bash 复制代码
# 克隆远程仓库到当前文件夹
git clone 仓库地址https

场景 2:本地已经有仓库,拉取远程仓库的最新代码(团队协作时常用)

bash 复制代码
git pull origin master

四、Git分支操作

分支是 Git 最强大的功能,简单说:主分支(master/main)存稳定代码,开发新功能 / 修复 bug 时,新建分支在上面改,不影响主分支,改好再合并回去。

4.1、分支常用命令

bash 复制代码
# 1. 查看当前所有分支(* 表示当前所在分支)
git branch

# 2. 创建新分支(比如创建一个开发分支 dev)
git branch dev

# 3. 切换到新分支 dev
git checkout dev

# (快捷方式:创建并切换分支,一步到位)
git checkout -b dev

# 4. 在 dev 分支修改代码、提交后,合并到主分支
# 先切回主分支
git checkout master
# 合并 dev 分支的代码到 master
git merge dev

# 5. 删除已经合并完的分支(可选)
git branch -d dev

4.2、解决合并冲突

**冲突本质:**假设现在甲乙两个人对同一个文件进行修改,他们的代码版本都和仓库一样是1.0,现在甲修改代码后提交到仓库,仓库和甲的版本都加1,也就是2.0,现在乙在修改代码进行提交就会报错,原因是乙的代码版本是1.0,而仓库的代码版本是2.0,版本不匹配,直接保存不让提交。

当两个人修改了同一个文件的同一行,Git 不知道该用哪个版本,就会出现冲突,需要手动解决:

  1. 合并时终端会提示:Automatic merge failed; fix conflicts and then commit the result.

  2. 打开冲突的文件,会看到类似这样的标记:

    <<<<<<< HEAD(当前分支的代码)
    这里是主分支的代码

    这里是你要合并的分支的代码

    dev(要合并的分支名)

  3. 手动修改文件,删掉这些标记,保留你想要的代码

  4. 然后 git add 文件名 → git commit,冲突就解决了

相关推荐
修己xj9 小时前
Gogs: 打造属于你自己的轻量级 Git 服务
git
Mediary10 小时前
Git本地忽略文件夹,只拉取目标文件夹
git
MY_TEUCK15 小时前
【git工具篇】Git 常用实战手册:从基础命令到分支冲突解决(开发实战版)
大数据·git
幸运的大号暖贴16 小时前
解决Vibe Coding时Idea经常不自动git add问题
java·人工智能·git·intellij-idea·claudecode·opencode
摇滚侠17 小时前
如何打开 GitHub,GitHub 是基于 Git 版本控制系统的在线代码托管平台
git·github
MY_TEUCK18 小时前
【Git 实习生小白专用】:最安全、永不翻车、公司最爱 的标准版本控制工作流程
git·安全·github
donecoding19 小时前
第一次用 git worktree,连踩了三个坑(附无痛清理姿势)
git
spmcor19 小时前
解决 Git 中已跟踪目录无法被 .gitignore 忽略的问题
git
qcx2321 小时前
【AI Engineering · Harness 系列】02 确定性外壳 × 非确定性内核——git push 红线的故事
人工智能·git·prompt·agent·engineering·harness