代码管理工具——Git基本使用方法
目前的新项目需要用到Git的管理工具,之前一直在用SVN,在这学习总结一下。方便后续进行搜索查询
目录
一、什么是Git
二、安装配置
三、Git的相关术语及其解释
核心术语
四、Git相关操作命令
1、配置命令git config
2、仓库操作
3、文件状态与提交
4、远程仓库交互
5、分支操作
6、合并与冲突
1、在冲突的文件中解决:(常用)
2、在命令编辑器中解决冲突:
7、版本回溯
8、其他常用命令
五、结语
一、什么是Git
Git 由Linus Torvalds于2005年创建,用于开发Linux内核。用于高效管理项目版本,尤其适用于软件开发中的代码追踪和协作。
Git是一个开源的分布式版本控制系统。为了协调开发人员之间的工作。允许在同一个工作区跟踪,并与团队成员一起工作。
Git是GitHub和GitLab等许多服务的基础,但我们可以在不使用任何其他Git服务的情况下使用Git。
总结来说,就是团队开发以及版本控制的一种项目管理工具,目前比较常见的还有SVN,顺便简单总结一下二者的区别吧。
维度 | Git | SVN |
---|---|---|
架构 | 分布式(每个用户有完整仓库副本) | 集中式(所有操作依赖中央服务器) |
历史记录 | 本地存储完整历史,可离线操作 | 仅服务器存储历史,需联网访问 |
分支模型 | 轻量级分支,合并高效 | 分支是目录副本,合并复杂 |
速度 | 本地操作极快(无网络延迟) | 网络依赖强,操作可能较慢 |
冲突解决 | 提交前本地解决冲突 | 提交时可能遇到服务器冲突 |
权限管理 | 较简单(依赖代码托管平台) | 精细化的目录级权限控制 |
想要更深的理解一下呢,下面这位博主的总结比较好,大家可以看看:
git和svn的区别 - 腾讯云开发者社区 - 腾讯云
二、安装配置
官网地址:
Git - Downloading Package
根据电脑选择适合的安装包下载安装(安装最好安装在英文目录下,没有特别需要注意的,都进行Next选择就可以)
安装好之后一般都使用Git Bash(命令模式)进行命令行操作(因此需要大家有一定的linux基本操作命令知识)
Git GUI(窗口模式),也可以进行代码提交,但是一般不建议使用
1、cd : 改变目录。
2、cd . . 回退到上一个目录,直接cd进入默认目录
3、pwd : 显示当前所在的目录路径。
4、ls(ll): 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。
5、touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。
6、rm: 删除一个文件, rm index.js 就会把index.js文件删除。
7、mkdir: 新建一个目录,就是新建一个文件夹。
8、rm -r : 删除一个文件夹, rm -r src 删除src目录
rm -rf / 切勿在Linux中尝试!删除电脑中全部文件!
9、mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,当然, 这样写,必须保证文件和目标文件夹在同一目录下。
10、reset 重新初始化终端/清屏。
11、clear 清屏。
12、history 查看命令历史。
13、help 帮助。
14、exit 退出。
15、#表示注释
下面这个博主的总结很全面,可以参考:
Linux基础操作命令_linux基础命令-CSDN博客
下来有时间也会讲一些Linux的系统命令,有想要了解和支持的可以关注一下
三、Git的相关术语及其解释
核心术语
-
仓库(Repository):存储项目代码和版本历史的目录,分为本地仓库和远程仓库(如 GitHub、GitLab)。
-
工作区(Working Directory):当前编辑的文件目录,即项目的实际文件。
-
暂存区(Staging Area):临时存储待提交的修改,介于工作区和本地仓库之间。
-
提交(Commit):将暂存区的修改保存到本地仓库,生成一个版本记录(有唯一哈希值)。
-
分支(Branch):独立的开发线,默认主分支为
main
或master
,可创建分支并行开发。 -
合并(Merge):将一个分支的修改整合到另一个分支(如功能分支合并到主分支)。
-
冲突(Conflict):合并时多个分支修改了同一文件的同一部分,需要手动解决。
-
远程仓库(Remote):托管在服务器上的仓库,用于多人协作共享代码(如
origin
通常指远程仓库别名)。 -
克隆(Clone):将远程仓库完整复制到本地。
-
拉取(Pull):从远程仓库获取最新代码并合并到本地分支(等价于
fetch + merge
)。 -
推送(Push):将本地仓库的提交推送到远程仓库。
-
远程仓库别名(Origin):
它本质是一个 “快捷方式”,避免你每次操作远程仓库时都输入完整的 URL(如https://github.com/username/repo.git
)- 当你克隆(
git clone
)一个仓库时,Git 会自动将远程仓库地址命名为origin
。 -
origin
是 Git 为远程仓库(如 GitHub、GitLab 上的仓库)分配的默认别名。
- 当你克隆(
-
# 推送本地 main 分支到远程 origin 的 main 分支 git push origin main# 从远程 origin 的 main 分支拉取代码 git pull origin main# 等价于 git push https://github.com/username/repo.git main git push https://github.com/username/repo.git main
13. 获取远程更新(Fetch): 不会修改本地仓库的代码
-
git fetch
用于从远程仓库获取最新的代码和分支信息,但不会自动合并到本地分支。 -
它的作用是 “同步远程仓库的状态到本地”,让你在合并前先查看远程有哪些更新。
# 获取远程 origin 的所有更新(所有分支)
git fetch origin# 查看远程 main 分支与本地 main 分支的差异
git diff main origin/main# 获取远程新分支 feature/new 到本地
git fetch origin# 在本地创建并切换到该分支(跟踪远程分支)
git checkout -b feature/new origin/feature/new
四、Git相关操作命令
1、配置命令git config
git config 主要分为三种配置级别:
· local # 本地,文件存在 .git/config目录中
· global # 全局,存储在git安装的用户目录下(常用,一台电脑一个用户)
· system # 整个系统用户,所有用户和系统都是相同配置
# 配置提交人的用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "email@example.com"# 查看已经配置好的各种信息
git config --list
2、仓库操作
# 初始化本地仓库(在当前目录创建.git文件夹)
git init# 克隆远程仓库到本地
git clone <远程仓库地址> # 例如:git clone https://github.com/example/repo.git
3、文件状态与提交
本地仓库的提交文件
# 查看工作区和暂存区状态(哪些文件被修改/新增/删除)
git status# 将工作区文件添加到暂存区
git add <文件名> # 添加指定文件
git add . # 添加所有修改的文件# 将暂存区的修改提交到本地仓库(-m 后跟提交说明,也就是注释)
git commit -m "提交说明:如修复登录bug"# 跳过暂存区,直接提交工作区已跟踪的文件(未新增的文件)
git commit -am "提交说明"
4、远程仓库交互
提交或者拉取到远程服务器上
# 查看远程仓库信息
git remote -v# 关联远程仓库(本地仓库未关联时)
git remote add origin <远程仓库地址># 拉取远程仓库的最新代码并合并到当前分支
git pull origin <分支名> # 例如:git pull origin main# 将本地分支推送到远程仓库(-u 首次推送时关联分支,后续可直接 git push)
git push -u origin <分支名> # 例如:git push -u origin feature/login
5、分支操作
我们一般新建远程仓库的时候,都是主分支main/master,我们之前提到过多版本控制,一般我们在开发的时候为了确保已经搭建好的框架和逻辑,
在进行新的开发,或者多人开发不同的功能时,为了不影响其他人的操作开发,一般都是新建分支开发,确认无误后在合并
# 查看所有分支(当前分支前有*)
git branch# 创建新分支
git branch <分支名> # 例如:git branch feature/login# 切换到指定分支
git checkout <分支名> # 例如:git checkout feature/login
# 或(Git 2.23+ 推荐)
git switch <分支名># 创建并切换到新分支
git checkout -b <分支名> # 等价于 git branch + git checkout
# 或
git switch -c <分支名># 删除分支(需先切换到其他分支)
git branch -d <分支名> # 若分支有未合并的修改,用 -D 强制删除
6、合并与冲突
1、在冲突的文件中解决:(常用)
我们在合并分支时,可能会与其它团队协作者修改了同一个文件,从而造成了冲突,这就需要我们解决冲突,需要手动合并冲突文件之后再次提交
# 合并分之前,可以查看两个分支有什么不同
git diff main feature# 切换到目标分支(如主分支),合并来源分支(如功能分支)
git checkout main
git merge feature/login # 将 feature/login 的修改合并到 main# 若合并冲突,先解决冲突文件,再提交
# 需要找到冲突文件,手动修改合并后再次提交(其中HEAD是远程主分支,===是当前分支)
git add <冲突文件>
git commit -m "解决合并冲突"
2、在命令编辑器中解决冲突:
当不同的人同时修改了同一个文件提交时(例如在你修改test文件时,你的同事B在此时间也修改了test文件,并提交到远程仓库上了,这时你在提交的时候就会出现冲突)
在解决冲突的时候可能会需要输入备注信息,或者合并文件操作,这时候就用到了我们之前总结的Linux中修改文件的方法,主要用到 :wq(保存退出) :q!(不保存退出)
关于Linux系统中修改配置文件的操作命令_linux怎么修改配置文件-CSDN博客
# 从远程获取最近代码
git pull --rebase origin main# 使用工具在命令中进行合并(:w!\:wq!\:q!)
git mergettool# 合并完成命令
git rebase --continue# 然后输入提交信息,再次推送到远程
git push origin main# 放弃本地修改的代码(慎用)
git merge --abort # 终止合并,回到冲突前的状态
7、版本回溯
当需求变更时,新的开发逻辑不再需要时,可以进行版本回退
# 查看提交历史(简洁版加 --oneline)
git log
git log --oneline # 每行显示一个提交,只显示哈希前缀和说明# 本地回退的三种方法
# 1、回退版本且保留工作区修改(文件内容不变)
git reset --soft <commit-hash># 2、回退版本且重置暂存区(保留工作区修改,需重新 git add)
git reset --mixed <commit-hash> # --mixed 是默认选项# 3、回退到指定版本(哈希值取前7位即可)
git reset --hard <提交哈希> # 谨慎使用,会丢弃当前工作区修改# 查看所有操作记录(包括已删除的提交),用于找回误删版本
git reflog
8、其他常用命令
# 放弃工作区的修改(恢复到最近一次提交的状态)
git checkout -- <文件名> # 或 git restore <文件名>(Git 2.23+)
git checkout -- . # 所有文件# 从暂存区移除文件(不删除物理文件)
git reset HEAD <文件名> # 或 git restore --staged <文件名>(Git 2.23+)
git reset HEAD . # 所有文件# 暂存当前工作区,切换到其他分支(用于临时切换分支时保存工作进度)
git stash # 暂存
git stash pop # 恢复暂存并删除记录# 同时撤销工作区和暂存区的修改(谨慎使用,完全清口本地的所有修改了)
git reset --hard HEAD# 恢复误删的未提交修改
git fsck --lost-found # 查找丢失的文件
掌握这些基础命令和术语,就能应对大部分日常开发场景。复杂操作(如变基 rebase
、标签 tag
等)可在熟悉基础后逐步学习。
五、结语
下面这位博主把部分原理也给大家解释了一下,有兴趣的小伙伴可以了解一下
视频同步笔记:狂神聊Git
其实现在大部分开发工具有具有Git的快捷操作,例如pycharm、idea、visual studio等都可以快捷操作而省略命令,但是建议大家掌握这些命令,技多不压身。
好了,这篇文章大概已经完成了,后续在使用过程中遇到问题会修改补充文章,有兴趣的小伙伴可以点赞关注收藏。