> 技术文档 > 代码管理工具——Git基本使用方法_git的基本用法

代码管理工具——Git基本使用方法_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的相关术语及其解释

核心术语

  1. 仓库(Repository):存储项目代码和版本历史的目录,分为本地仓库和远程仓库(如 GitHub、GitLab)。

  2. 工作区(Working Directory):当前编辑的文件目录,即项目的实际文件。

  3. 暂存区(Staging Area):临时存储待提交的修改,介于工作区和本地仓库之间。

  4. 提交(Commit):将暂存区的修改保存到本地仓库,生成一个版本记录(有唯一哈希值)。

  5. 分支(Branch):独立的开发线,默认主分支为 main 或 master,可创建分支并行开发。

  6. 合并(Merge):将一个分支的修改整合到另一个分支(如功能分支合并到主分支)。

  7. 冲突(Conflict):合并时多个分支修改了同一文件的同一部分,需要手动解决。

  8. 远程仓库(Remote):托管在服务器上的仓库,用于多人协作共享代码(如 origin 通常指远程仓库别名)。

  9. 克隆(Clone):将远程仓库完整复制到本地。

  10. 拉取(Pull):从远程仓库获取最新代码并合并到本地分支(等价于 fetch + merge)。

  11. 推送(Push):将本地仓库的提交推送到远程仓库。

  12. 远程仓库别名(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 maingit push https://github.com/username/repo.git main

13. 获取远程更新(Fetch): 不会修改本地仓库的代码

  1. git fetch 用于从远程仓库获取最新的代码和分支信息,但不会自动合并到本地分支。

  2. 它的作用是 “同步远程仓库的状态到本地”,让你在合并前先查看远程有哪些更新。

# 获取远程 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 maingit 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 loggit log --oneline # 每行显示一个提交,只显示哈希前缀和说明# 本地回退的三种方法# 1、回退版本且保留工作区修改(文件内容不变)git reset --soft # 2、回退版本且重置暂存区(保留工作区修改,需重新 git add)git reset --mixed  # --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等都可以快捷操作而省略命令,但是建议大家掌握这些命令,技多不压身。

好了,这篇文章大概已经完成了,后续在使用过程中遇到问题会修改补充文章,有兴趣的小伙伴可以点赞关注收藏。