Git使用基础

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 fsckgit 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 习惯的三大支柱。

相关推荐
Clownorange2 小时前
git安装和配置
git
网安2311 013 小时前
OWASP ZAP 安全工具深度剖析:从环境搭建到架构复原的结对编程实践
git
ShineWinsu5 小时前
对于Linux:git版本控制器和cgdb调试器的解析
linux·c语言·git·gitee·github·调试·cgdb
php_kevlin7 小时前
git提交限制规范
大数据·git·elasticsearch
安大小万7 小时前
Git 常用命令终极指南:从入门到进阶
git
摇滚侠7 小时前
GIT 代码冲突 git pull 和 git pull rebase 的区别,保持提交记录的线性整齐
git
vistaup20 小时前
windows git 更新当前目录下所有的文件(非递归)
windows·git
王码码203521 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
Irene19911 天前
Git 命令汇总表(基于一次完整的 Git 实战经验整理,涵盖从安装配置到日常开发、问题排查的所有常用命令)
git·常用命令