Git是目前最流行的分布式版本控制系统,能高效管理代码的版本迭代、多人大规模协作,是程序员必备工具。本文将从「安装配置→核心操作→分支管理→协同协作」四大核心模块,讲解Git的基础用法,覆盖Windows和Linux(Ubuntu)系统,新手可直接跟着步骤操作。

前置说明:本文默认读者无版本控制基础,所有操作均提供命令行指令+详细说明;同时涵盖GitHub/GitLab等远程仓库的基础交互,帮助快速衔接实际开发场景。

一、Git安装与初始化配置(跨系统)

1.1 不同系统的Git安装

Windows系统安装

  1. 下载安装包:访问 Git官方下载页,选择对应系统版本(32/64位),默认下载最新稳定版。

  2. 安装步骤:

    1. 双击安装包,默认下一步即可;

    2. 关键步骤:「Choosing the default editor used by Git」建议选择「Notepad++」(需提前安装)或默认的Vim(新手可后续更换);

    3. 「Adjusting your PATH environment」选择「Git from the command line and also from 3rd-party software」(全局可用Git命令);

    4. 其他选项默认,点击「Install」完成安装。

  3. 验证安装:按Win+R输入「cmd」打开命令行,输入 git --version,若显示版本号(如git version 2.45.1.windows.1)则安装成功。

Linux系统安装(以Ubuntu 24.04为例)

  1. 打开终端(Ctrl+Alt+T),执行以下命令安装:

    sudo apt update # 更新软件包索引 
    sudo apt install git -y # 安装Git

  2. 验证安装:输入

    git --version

    ,显示版本号即成功。

1.2 初始化配置(必做)

安装完成后,需配置用户信息(用于标识提交记录的作者),全局仅需配置一次。

  1. 配置用户名和邮箱(替换为自己的信息):

    git config --global user.name "你的用户名" # 如 "ZhangSan" 
    git config --global user.email "你的邮箱" # 如 "zhangsan@example.com"

    说明:--global表示全局配置,所有Git仓库都会使用该信息;若需为单个仓库配置不同信息,进入仓库后去掉--global重新执行。

  2. 查看配置信息:

    git config --list # 查看所有配置 
    git config user.name # 单独查看用户名

  3. (可选)配置默认编辑器:若安装时未选择合适编辑器,可后续修改(以Notepad++为例,Windows系统):

     git config --global core.editor "notepad++.exe -multiInst -notabbar -nosession -noPlugin"

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

本地仓库是Git管理代码的基础,核心流程:「初始化仓库→添加文件→提交版本」,以下步骤按实际开发流程讲解。

2.1 初始化本地仓库

两种场景:① 新建项目创建仓库;② 已有项目纳入Git管理。

  1. 新建项目+初始化仓库:

    mkdir my_first_git_project # 新建项目文件夹(Windows/Linux通用) 
    cd my_first_git_project # 进入文件夹 
    git init # 初始化Git仓库

    执行后,文件夹内会生成隐藏的「.git」目录(存储仓库配置、版本记录等信息,勿删除)。

  2. 已有项目纳入Git管理:

    cd 已有项目的文件夹路径 # 进入已有项目目录 
    git init # 初始化

    仓库即可

2.2 核心操作:add→commit(提交版本)

Git提交版本需经过「工作区→暂存区→版本库」三个阶段,对应命令:git add(工作区→暂存区)、git commit(暂存区→版本库)。

  1. 创建测试文件:在仓库目录下创建文件(如test.txt),写入内容(如「First Git commit」)。

  2. 查看文件状态: git status # 查看当前仓库文件状态输出说明:红色文件表示「未跟踪」(未加入暂存区);绿色文件表示「已暂存」(待提交到版本库)。

  3. 添加文件到暂存区: git add test.txt # 添加单个文件到暂存区 # 常用拓展命令: git add . # 添加当前目录下所有未跟踪/修改的文件(推荐,除了.gitignore排除的文件) git add *.txt # 添加所有.txt后缀的文件

  4. 提交暂存区文件到版本库: git commit -m "first commit: add test.txt" # -m后接提交说明(必须写,清晰描述本次修改内容)提交成功后,版本库会记录本次修改的版本,后续可随时回滚到该版本。

  5. (可选)修改文件后重新提交:# 1. 修改test.txt内容(如添加「Second modify」) # 2. 查看修改内容(可选,确认修改无误) git diff test.txt # 对比工作区与暂存区的差异 # 3. 重新添加+提交 git add test.txt git commit -m "second commit: modify test.txt"

2.3 版本查看与回滚

开发中常需查看历史版本记录,或回滚到之前的稳定版本。

  1. 查看历史版本记录:git log # 查看详细历史记录(包含版本号、作者、时间、提交说明) # 常用简化命令: git log --oneline # 一行显示一条记录(版本号缩写+提交说明,推荐) git log -n 3 # 查看最近3条记录输出说明:每一行的一串字母数字组合是「版本号」(如a1b2c3d),用于定位具体版本。

  2. 回滚到之前的版本: # 方式1:回滚到指定版本(版本号取前6-8位即可) git reset --hard a1b2c3d # 替换为实际要回滚的版本号 # 方式2:回滚到上一个版本(常用) git reset --hard HEAD~1 # HEAD~1表示上一个版本,HEAD~2表示上上个版本...注意:--hard参数会直接覆盖当前工作区和暂存区的内容,回滚前确保当前修改已提交或备份,避免数据丢失。

  3. (可选)回滚后恢复到最新版本:若回滚错误,需恢复到之前的最新版本,先查看所有操作记录: git reflog # 查看所有操作记录(包含回滚前的版本号) git reset --hard 最新版本号 # 恢复到最新版本

2.4 .gitignore文件配置(重要)

开发中部分文件无需纳入版本管理(如编译产物、日志、IDE配置文件等),可通过「.gitignore」文件指定排除规则。

  1. 创建.gitignore文件:在仓库根目录下创建文件,命名为「.gitignore」(无文件名,后缀为ignore)。

  2. 添加排除规则(示例,根据项目类型调整): # 排除所有.log文件 *.log # 排除编译产物目录 dist/ build/ # 排除IDE配置文件(以PyCharm为例) .idea/ # 排除Python虚拟环境 venv/ # 排除单个文件 test_temp.txt

  3. 规则说明:

    1. 「*.xxx」:排除所有后缀为xxx的文件;

    2. 「目录名/」:排除整个目录;

    3. 「#」:注释,不生效;

    4. 「!文件名」:例外规则,不排除该文件(如!important.log,即使有*.log规则,也会跟踪important.log)。

三、分支管理(多人协作核心)

分支是Git的核心功能,可理解为「代码的平行宇宙」:主线(master/main)保持稳定,开发新功能/修复bug时创建分支,完成后合并回主线,避免直接修改主线代码。

3.1 分支基础操作

  1. 查看分支: git branch # 查看本地所有分支(当前分支前有「*」标记) git branch -r # 查看远程分支(后续讲解远程仓库时使用)

  2. 创建分支: git branch feature-login # 创建名为「feature-login」的分支(功能分支,命名建议:feature-功能名/bugfix-问题描述)

  3. 切换分支: git checkout feature-login # 切换到feature-login分支 # 简化命令(创建并切换分支,常用) git checkout -b feature-login # 等价于「git branch feature-login」+「git checkout feature-login」

  4. 在分支上开发并提交:切换到feature-login分支后,修改文件(如创建login.py),执行add+commit: touch login.py # 创建文件(Linux)/ 手动创建(Windows) git add login.py git commit -m "feature-login: add login.py"

  5. 合并分支(功能完成后合并回主线): # 1. 先切换回主线(main/master,根据仓库主线名称调整) git checkout main # 2. 合并feature-login分支到主线 git merge feature-login # 若无冲突,直接合并成功

  6. 删除分支(合并后删除,避免分支冗余): git branch -d feature-login # 删除已合并的分支 # 若分支未合并,强制删除(谨慎使用) git branch -D feature-login

3.2 分支合并冲突解决(常见场景)

当两个分支修改了同一文件的同一行内容时,合并会产生冲突,需手动解决。

  1. 冲突场景复现:

    1. main分支:修改test.txt第1行为「main branch content」,提交;

    2. feature-login分支:修改test.txt第1行为「feature branch content」,提交;

    3. 切换到main分支合并feature-login,触发冲突。

  2. 冲突提示:合并时终端会显示「Automatic merge failed; fix conflicts and then commit the result.」。

  3. 解决冲突步骤: # 1. 查看冲突文件(终端会提示冲突文件路径) git status # 会显示「both modified: test.txt」 # 2. 打开冲突文件(如test.txt),修改冲突内容 # 冲突文件内会有标记: # <<<<<<< HEAD(当前分支,即main分支的内容) # main branch content # ======= # feature branch content # >>>>>>> feature-login(待合并分支的内容) # 3. 手动修改为最终需要的内容(删除冲突标记),如: # final content after resolve conflict # 4. 重新提交解决后的文件 git add test.txt git commit -m "resolve conflict: test.txt main & feature-login"

四、远程仓库协作(GitHub/GitLab)

远程仓库是代码的云端存储中心,用于多人协作共享代码(如GitHub、GitLab、Gitee),以下以GitHub为例讲解基础交互。

4.1 前置准备:远程仓库创建与SSH密钥配置

  1. 创建远程仓库:

    1. 登录GitHub,点击右上角「+」→「New repository」;

    2. 填写仓库名称(如my-first-git-repo),选择「Public」(公开)/「Private」(私有),点击「Create repository」;

    3. 创建成功后,复制仓库SSH地址(如git@github.com:your-username/my-first-git-repo.git)。

  2. 配置SSH密钥(免密码连接远程仓库,推荐): # 1. 生成SSH密钥(Windows/Linux通用,执行后按3次回车即可) ssh-keygen -t ed25519 -C "你的邮箱" # 若系统不支持ed25519,用:ssh-keygen -t rsa -b 4096 -C "你的邮箱" # 2. 查看并复制公钥(Windows): cat ~/.ssh/id_ed25519.pub # 终端输出公钥,全选复制 # Linux查看公钥命令相同;Windows也可手动打开文件:C:\Users\你的用户名\.ssh\id_ed25519.pub # 3. 添加公钥到GitHub: # 登录GitHub→点击头像→Settings→SSH and GPG keys→New SSH key→粘贴公钥,填写名称(如「My Windows PC」),点击Add SSH key。

4.2 本地仓库与远程仓库关联(两种场景)

场景1:本地已有仓库,关联远程仓库


# 1. 关联远程仓库(origin是远程仓库的默认别名,可自定义) git remote add origin git@github.com:your-username/my-first-git-repo.git # 替换为你的仓库SSH地址 # 2. 查看远程关联(验证) git remote -v # 输出origin对应的拉取(fetch)和推送(push)地址即成功 # 3. 推送本地分支到远程仓库(首次推送需加-u,绑定本地与远程分支) git push -u origin main # 推送main分支到远程 git push -u origin feature-login # 推送feature-login分支到远程

场景2:克隆远程仓库到本地(从零开始协作)

若远程仓库已存在(如参与他人项目),直接克隆到本地即可:


git clone git@github.com:your-username/my-first-git-repo.git # 替换为远程仓库SSH地址 # 克隆后自动关联远程仓库,进入仓库目录即可开发 cd my-first-git-repo

4.3 协同协作核心操作:拉取与推送

  1. 拉取远程最新代码(协作前必做,避免冲突): git pull origin main # 拉取远程main分支的最新代码到本地main分支

  2. 推送本地代码到远程(开发完成后): # 首次推送分支(已绑定则无需-u) git push -u origin feature-login # 非首次推送(已绑定分支) git push origin feature-login

  3. (可选)拉取远程分支到本地(如他人创建的分支): git checkout -b feature-register origin/feature-register # 拉取远程feature-register分支到本地并切换

五、常见问题及解决方案

5.1 提交错误:git commit 忘记加 -m 说明

现象:执行git commit后进入编辑器,无法退出。

解决方案

  • 若使用Vim编辑器:按「i」进入编辑模式,输入提交说明,按「Esc」,输入「:wq」(保存并退出);

  • 若想放弃本次提交:按「Esc」,输入「:q!」(强制退出不保存),重新执行git commit -m "说明"。

5.2 远程推送失败:fatal: Could not read from remote repository

现象:git push时提示权限错误,无法连接远程仓库。

解决方案

  • 检查SSH密钥是否配置正确:重新执行「cat ~/.ssh/id_ed25519.pub」,确认公钥已添加到GitHub;

  • 测试SSH连接:执行「ssh -T git@github.com」,若显示「Hi 你的用户名! You've successfully authenticated...」则连接成功。

5.3 误删文件:本地文件不小心删除,如何恢复?

解决方案:通过git checkout恢复(前提是该文件已被Git跟踪过):


git checkout -- 被删除的文件名 # 如 git checkout -- test.txt

5.4 分支切换失败:error: Your local changes would be overwritten by merge

现象:切换分支时,提示本地修改会被覆盖。

解决方案

  • 方案1:保存本地修改(提交到当前分支):git add . + git commit -m "临时保存",再切换分支;

  • 方案2:暂存本地修改(不提交,后续恢复): git stash # 暂存本地修改 git checkout 目标分支 # 切换分支 # 后续恢复暂存的修改(回到原分支后) git stash pop

六、总结

1. Git核心流程:「工作区→暂存区→版本库」,记住三个核心命令:git add、git commit、git push;

2. 分支管理核心:主线稳定,功能/修复在分支开发,完成后合并,避免直接修改主线;

3. 协同协作关键:先拉取(git pull)再开发,开发完成推送(git push),冲突及时沟通解决;

4. 新手建议:多实操「提交版本→回滚→分支合并→远程推送」流程,熟悉后再学习进阶功能(如git rebase、git tag)。

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐