Git版本控制
Git简介
项目也需要一个合适的版本控制系统来使得更好地管理版本迭代,而Git正是因此而诞生的
Git是如何工作:

可以看到,它大致分为4个板块:
- 工作目录:存放正在写的代码(当我们新版本开发完成之后,就可以进行新版本的提交)
- 暂存区:暂时保存待提交的内容(新版本提交后会存放到本地仓库)
- 本地仓库:位于电脑上的一个版本控制仓库(存放的就是当前项目各个版本代码的增删信息)
- 远程仓库:位于服务器上的版本控制仓库(服务器上的版本信息可以由本地仓库推送上去,也可以从服务器抓取到本地仓库)
它是一个分布式的控制系统,因此一般情况下每个人的电脑上都有一个本地仓库,由大家共同向远程仓库去推送版本迭代信息。
通过这一系列操作,就可以实现每开发完一个版本或是一个功能,就提交一次新版本,这样就可以很好地控制项目的版本迭代,想回退到之前的版本随时都可以回退,随时查看新版本添加或是删除了的代码
安装Git
首先请前往Git官网去下载最新的安装包:https://git-scm.com/download/win
安装Git环境
安装完成后,需要设定用户名和邮箱来区分不同的用户:
1 | git config --global user.name "Your Name" |
基本命令介绍
创建本地仓库
可以将任意一个文件夹作为一个本地仓库,输入:
1 | git init |
输入后,会自动生成一个.git目录,注意这个目录是一个隐藏目录,而当前目录就是工作目录。
创建成功后可以查看一下当前的一个状态,输入:
1 | git status |
如果已经成功配置为Git本地仓库,那么输入后可以看到:
1 | On branch master |
这表示还没有向仓库中提交任何内容,也就是一个空的状态。
添加和提交
如何使用git来管理文档的版本,创建一个文本文档,随便写入一点内容,接着输入:
1 | git status |
添加:
1 | git add xxx # 文件名 |
提交:
1 | git commit -m 'Hello World' # 添加提交说明 |
status四种不同状态:
1 | git status |
红色 = 还没加(需要 add)
绿色 = 加了但没存(需要 commit)
紫/红色 = 打架了(需要解决冲突)
log显示历史记录
默认:
1 | git log |
一行显示:
1 | git log --oneline |
图形化格式(看分支):
1 | git log --oneline --graph --all |
show显示某次提交的详细内容:
1 | git show 7cd36c4 # 某次消息的唯一ID |
综上:
| 命令 | 看什么 | 时机 | 类比 |
|---|---|---|---|
git status |
当前还没保存的变化 | 修改后、commit 前 | “我改了啥还没存?” |
git log |
历史已保存的提交记录 | 任何时候 | “我之前都干了啥?” |
git show |
某次提交的详细内容 | 想看具体改了什么时 | “某次提交改了啥代码?” |
可以创建一个.gitignore文件来确定一个文件忽略列表,如果忽略列表中的文件存在且不是被追踪状态,那么git不会对其进行任何检查:
1 | # 这样就会匹配所有以txt结尾的文件 |
回滚
当想要回退到过去的版本时,就可以执行回滚操作,执行后,可以将工作空间的内容恢复到指定提交的状态:
1 | git reset --hard commitID |
执行后,会直接重置为那个时候的状态。再次查看提交日志之后的日志全部消失了。
那么要是现在想回去可以通过查看所有分支的所有操作记录:
1 | git reflog |
这样就能找到之前的commitID,再次重置即可
创建分支
以下命令来查看当前仓库中存在的分支:
1 | git branch |
进入(创建)分支:
1 | git branch xxx # 分支名字 |
删除分支:
1 | git branch -d yyds # -D是强制删除 |
选择分支:
1 | git checkout xxx # 分支名字 |
在不同分支做了不同修改后log里会分开表示
这里用 git log --oneline --graph --all 查看:
1 | * 5c7e624 (test) check t |
合并分支:
1 | git merge test |
如果有冲突会得到以下提示:
1 | Auto-merging hello.txt |
需要手动改动文件冲突部分再次提交
可以查看一下是哪里发生了冲突:
1 | git diff |
log后得到:
1 | * 808e9eb (HEAD -> master) After fix |
变基分支
变基操作跟合并不同,合并是分支回到主干的过程,而变基是直接修改分支开始的位置,比如希望将test变基到master上,那么test会将分支起点移动到master最后一次提交位置:
1 | git rebase master |
变基后,test分支相当于同步了此前master分支的全部提交
合并:
1 | master: A --- B --- C --- M |
变基:
1 | 变基前 |
优选
还可以选择其将他分支上的提交作用于当前分支上,这种操作称为cherrypick:
1 | git cherry-pick xxx # 某次提交的ID |
只会挑选单个提交
远程仓库
远程仓库实际上就是位于服务器上的仓库,它能在远端保存版本历史,并且可以实现多人同时合作编写项目,每个人都能够同步他人的版本,能够看到他人的版本提交,相当于将代码放在服务器上进行托管。
远程仓库有公有和私有的,公有的远程仓库有GitHub、码云、Coding等,他们都是对外开放的,注册账号之后就可以使用远程仓库进行版本控制,其中最大的就是GitHub,私有的一般是GitLab这种自主搭建的远程仓库私服,在公司中比较常用,它只对公司内部开放,不对外开放
远程账户认证和推送
创建一个自定义的远程仓库
创建仓库后通过推送来将本地仓库中的内容推送到远程仓库。
1 | # 自定义一个远程仓库名称,地址在github的对应仓库里有 |
https:
push的时候需要身份验证,GitHub现在不允许使用用户名密码验证,只允许使用个人AccessToken来验证身份,所以需要去Developer Setting生成一个Token,勾选user
SSH:
每次都需要去输入token,SSH来实现一次性校验可以一劳永逸,在本地生成一个rsa公钥:
1 | ssh-keygen -t rsa |
接着要在GitHub上传公钥,当再次去访问GitHub时会自动验证,就无需进行登录
克隆项目
已经存在一个远程仓库,需要在远程仓库的代码上继续编写代码
可以使用克隆操作来将远端仓库的内容全部复制到本地:
(新文件夹不需要git init初始化)
1 | git clone 远程仓库地址 |
这样本地就能够直接与远程保持同步
抓取、拉取和冲突解决
如果出现多个本地仓库对应一个远程仓库的情况下,也就是协同工作,那么这个时候就需要协调。
比如A完成了他的模块,那么他就可以提交代码并推送到远程仓库,这时B也要开始写代码了,由于远程仓库有其他程序员的提交记录,因此B的本地仓库和远程仓库不一致,这时就需要有先进行pull操作,获取远程仓库中最新的提交:
1 | git fetch 远程仓库 #抓取:只获取但不合并远端分支,后面需要我们手动合并才能提交 |
在B拉取了最新的版本后,再编写自己的代码然后提交就可以实现多人合作编写项目了,并且在拉取过程中就能将别人提交的内容同步到本地,开发效率大大提升
如果两次提交都修改了同一个文件,那么就会遇到和多分支合并一样的情况,在合并时会产生冲突,这时就需要我们自己去解决冲突
- 标题: Git版本控制
- 作者: kami
- 创建于 : 2026-04-14 15:01:51
- 更新于 : 2026-04-14 20:30:00
- 链接: https://kamisheng.xyz/2026/04/14/Git版本控制/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。