Git 是目前最流行的分布式版本控制系统,广泛应用于软件开发、文档协作等领域。无论你是程序员、设计师,还是内容创作者,掌握 Git 都能极大提升你的工作效率。本文旨在总结Git基础使用方法,并涵盖常见问题的解决方案。
一、安装 Git
在使用 Git 之前,你需要先在本地计算机上安装它。不同操作系统的安装方式略有不同:
- Windows :推荐下载 Git for Windows,它包含 Git Bash(类 Unix 命令行环境)和图形化工具。
- macOS :可通过 Homebrew 安装(
brew install git),或直接从 官网 下载安装包。 - Linux(如 Ubuntu/Debian):通常可通过包管理器安装。
安装完成后,建议配置你的用户名和邮箱,这是提交记录的身份标识。当然,也可以在配置SSH的时候单独指定邮箱。
bash
# 检查是否已安装 Git
git --version
# 配置全局用户名和邮箱(只需一次)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 查看当前配置
git config --list
二、基础使用
Git 的核心工作流程包括:初始化仓库、添加文件、提交更改、查看历史。以下是最常用的几个命令。
1、初始化仓库
新建或进入项目目录,运行 git init,创建一个新的 Git 仓库。windows可以进入文件夹后右键:

bash
# 创建或进入一个项目目录
cd /some_project
# 初始化一个新的 Git 仓库
git init
2、配置gitignore
bash
# 项目里往往包含一些临时测试的代码、数据、大尺寸的模型等,这些不需要同步,就需要写到配置文件
vim .gitignore
内容格式如下:

3、克隆远程项目
针对开源项目,可以直接克隆项目到本地,相当于就是下载
bash
# 克隆远程仓库(如果已有远程项目)
git clone https://github.com/user/repo.git
4、新建远程仓库
因为某些原因,国内访问git不太稳定,如果是管理自己的项目,可以选择gitee和gitlab,协议都是一样的。

4、配置SSH
如果是我们自己开发的项目,就需要配置SSH密钥。这个密钥可以用于多个项目,相当于本地计算机和远程的某个账号进行了关联。后续项目就直接使用这个密钥即可。
(1)生成密钥
按一次回车后,可以输入一个额外的密码,后续提交时需要输入,相当于2层密码保护。也可以不输入任何内容,直接再次回车。
bash
# 不输入邮箱则使用前面配置的全局邮箱
ssh-keygen -t rsa -C "xx@qq.com"
(2)获取公钥
bash
# id_rsa.pub是公钥,id_rsa是私钥。公钥是基于私钥加密后生成,私钥在本地,公钥在平台,这样就可以进行校验了。
cat ~/.ssh/id_rsa.pub

(3)配置公钥
将刚才获取的公钥粘贴到代码托管平台

5、添加远程地址
bash
# origin只是给远程地址取的名字,也可以叫其他,后续提交会用到
git remote add origin git@gitee.com:xxx/git_test.git
# 也可以使用http的,但第一次提交会要求输入托管平台登陆的账号密码
git remote add origin https://gitee.com/xxx/git_test.git
如果要中途替换远程地址:
bash
git remote set-url origin git@git.com:xxx/git_test.git
查看已配置的远程地址:
bash
git remote -v

6、添加文件到暂存区
使用 git add 将修改的文件"暂存"起来,准备提交。
bash
# 添加单个文件或所有修改到暂存区
git add filename.txt
git add .
7、提交更改
通过 git commit 将暂存区的内容永久保存到版本历史中。
bash
# 提交暂存区内容(Initial commit 给本次提交取的名字,方便后续查看提交历史、回退)
git commit -m "Initial commit"
8、本地推送到远程
bash
# 推送到远程的master分支,-u 表示建立本地master和远程master跟踪关系,
# 后续可省略,直接git push
git push -u origin master
# 如果本地和远程分支名不同,如 本地是master远程是main
git push -u origin master:main
# 或者用HEAD指代当前分支
git push -u origin HEAD:main
9、查看状态与日志
bash
# 查看当前工作区状态
git status
# 查看提交历史
git log
git log --oneline # 简洁格式
三、进阶操作
当你熟悉基础操作后,可以尝试更强大的功能,如分支管理、远程仓库同步、合并与冲突解决等。
- 分支(Branch):允许你在不影响主干代码的情况下开发新功能或修复 bug。
- 合并(Merge)与变基(Rebase):整合不同分支的更改。
- 撤销操作:有时需要撤回错误的提交或修改,Git 提供了多种"后悔药"。
1、创建分支
bash
# 查看本地分支
git branch
# 查看远程分支
git branch -r
# 重命名分支,master改成main
git branch -m master main
# 创建并切换到新分支
git checkout -b new_branch
# 或使用新语法(Git 2.23+)
git switch -c new_branch
# 切换分支
git checkout main
git switch main
2、合并分支
当某一个功能测试完后,可能需要合并到某一分支。分支合并时,git会对内容进行检查,并执行以下策略。
如果两个分支修改了文件的不同部分 → 自动合并 ✅
如果两个分支修改了同一行代码 → 产生 冲突(conflict),需要你手动解决 ⚠️
如果只有 new_branch 修改了文件 → 采用 new_branch 的版本
如果只有 main 修改了文件 → 保留 main 的版本
合并的场景有3种情况。
(1)本地分支合并
bash
# 合并分支(假设当前在main分支,则表示把new_branch合并到main分支)
git merge new_branch
(2)远程合并到本地
bash
# 本地分支mian省略表示当前分支
git pull origin new_branch:main
# 也可以分步执行
# 拉取所有远程分支信息
git fetch origin
# 将远程 new_branch 合并到当前 main 分支
git merge origin/new_branch
(3)本地合并到远程
bash
# 先拉取,否则可能因冲突而提交失败
git pull origin main
# 远程如果没有main分支会自动创建
git push origin main
(4)一般操作
不过一般为了版本更清晰,会先基于远程分支创建本地分支,编辑修改后再推送到远程
bash
# 1. 拉取远程所有分支信息
git fetch origin
# 2. 基于远程 new_branch_1 创建本地分支(自动跟踪)
git checkout -b new_branch_1 origin/new_branch_1
# 3. 在新分支上开发
# 修改代码...
git add .
git commit -m "feat: implement new logic"
# 4. 推送回远程 new_branch_1(因为已设置跟踪,直接 push 即可)
git push
3、版本回退
bash
# 回退2个版本(每提交1次就对应1个版本)
git reset --hard HEAD^^
# 回退10个版本
git reset --hard HEAD~10
# 回退到指定版本,abc12是版本id的前几位,保证唯一就行,可通过git reflog查看
git reset --hard abc12
4、放弃修改
(1)修改了文件但还未添加到缓存
bash
git checkout -- readme.txt
(2)已提交到缓存
bash
# 撤销已暂存但未提交的更改
git reset HEAD readme.txt
四、常见问题与解决方案
在实际使用中,你可能会遇到各种问题。以下是几个高频场景及其解决方法。
1. 提交了敏感信息(如密码)怎么办?
应立即从历史记录中彻底删除该文件,并轮换相关密钥。可使用 git filter-repo 工具重写历史(注意:这会改变提交 ID,影响协作者)。
2. 合并冲突(Merge Conflict)
当两个分支修改了同一文件的同一区域时,Git 无法自动合并,需要手动解决。打开冲突文件,找到 <<<<<<<, =======, >>>>>>> 标记,保留需要的代码,删除标记后重新提交。
3. 误删了未提交的文件?
如果文件从未被 git add 过,Git 无法恢复。因此重要文件应及时纳入版本控制。若已暂存但未提交,可通过 git fsck 和 git show <blob-id> 尝试恢复。
4. 推送被拒绝(non-fast-forward)
通常是因为远程有你本地没有的新提交。先执行 git pull 合并远程更改,再推送。或者你确认远程可以直接被覆盖,可以强制推送。
# 解决合并冲突后,标记为已解决并提交
git add conflicted-file.txt
git commit -m "Resolve merge conflict"
# 强制推送(慎用!仅在确定覆盖远程历史时使用)
git push --force-with-lease origin main
# 查看某次提交的具体改动
git show <commit-hash>
# 临时保存当前工作进度(切换分支前常用)
git stash
git stash pop # 恢复
结语
Git 虽然初学有一定门槛,但一旦掌握,将成为你不可或缺的开发利器。建议多动手实践,结合 GitHub 等平台进行真实项目操作。记住:频繁提交、清晰注释、善用分支,是良好 Git 习惯的三大支柱。