什么是git
Git 是一个分布式版本控制系统。你可以把它想象成一个极其强大的“时光机”和“协作工具”,专门用于管理你的文件(尤其是代码文件)的每一次改动。
git可以做什么
-
备份与回滚: 再也不用担心改错代码,可以轻松回到任何一个正常工作的时间点。
-
协作开发: 多人可以在同一个项目上并行工作,最后再合并各自的功能,极大提升效率。
-
分支管理: 你可以创建一个项目的“平行宇宙”(分支),在新分支上开发实验性功能,而不会影响主线(主分支)的稳定。功能完成后,再合并回主线。
-
责任追溯: 每一行代码是谁、在什么时候、为什么修改的,都记录得清清楚楚。
git安装
下载地址
Git 常用命令速查表
| Git 命令 | 功能说明 |
|---|---|
| 基础配置 | |
git config --global user.name "用户名" | 设置全局用户名 |
git config --global user.email "邮箱" | 设置全局邮箱 |
git config --list | 查看所有配置 |
| 仓库操作 | |
git init | 初始化本地仓库 |
git clone 仓库地址 | 克隆远程仓库 |
git remote add origin 仓库地址 | 添加远程仓库 |
| 基础工作流 | |
git status | 查看状态 |
git add 文件名 | 添加文件到暂存区 |
git add . | 添加所有文件到暂存区 |
git commit -m "提交信息" | 提交到本地仓库 |
git commit -am "提交信息" | 添加并提交所有已跟踪文件 |
| 查看信息 | |
git log | 查看提交历史 |
git log --oneline | 简洁版提交历史 |
git reflog | 查看所有操作记录 |
git diff | 查看文件差异 |
| 分支管理 | |
git branch | 查看分支 |
git branch 分支名 | 创建分支 |
git checkout 分支名 | 切换分支 |
git checkout -b 新分支名 | 创建并切换分支 |
git merge 分支名 | 合并分支 |
git branch -d 分支名 | 删除分支 |
| 远程操作 | |
git push origin 分支名 | 推送到远程仓库 |
git push -u origin 分支名 | 首次推送并建立关联 |
git pull origin 分支名 | 拉取远程更新 |
git fetch origin | 获取远程更新 |
| 撤销操作 | |
git reset --hard 版本号 | 版本穿梭 |
git checkout -- 文件名 | 撤销工作区修改 |
git reset HEAD 文件名 | 撤销暂存区修改 |
git commit --amend | 修改最近一次提交 |
基本操作
下面我演示一个通过git上传代码到github的案例

如图右击你的项目,再点击标识的图标(这里如果没有的话可以选择更多选项里看看有没有)
这里说明一下,图上的bash是git专门提供的,其实我们正常的终端也可以使用git命令,但是在git的终端里可以使用一些linux的指令,如”ls,vimkdir,rm…“,而且还有文件的颜色区别,正常使用时在哪都可以

在上面输入 git init 并回车就可以完成初始化之后会有一个 .git 文件(没有的话可能被隐藏了,可以设置一下),接下来就可以方便的使用git提交并管理代码了

下面讲一下这个文件有什么用
- 之后所有的版本都会放到.git文件夹中
- 比拷贝省空间,第一次提交commit会都放进来,之后每一次commit只把修改的内容保存进来
这里创建一个文件并写入了一段’hello,world’
接下来我们需要连接到github上面创建的远程仓库
在图上类似git@github.com
接下来我们在终端git add 文件,可以使用 git status 来查看文件状态

再使用git commit (-m 参数可以添加一些备注)
上面git branch查看本地分支,再git push [远程分支] [本地分支]推送上去

然后就可以在我们的远程仓库里看到推送的文件

gitlab&自建仓库
在上面我们使用的是github来保存我们的代码,其实我们也可以自己部署一个代码管理仓库,比如gitlab
需要注意的是gitlab非常吃内存,建议4GB以上的部署环境
镜像下载
docker pull gitlab/gitlab-ce:latest启动
注意下面ip需要填写你自己的
docker run--detach--hostname 你的ip-p 7001:7001 -p 7002:22 -p 7003:443--name gitlab--restart always--volume ./config:/etc/gitlab--volume ./logs:/var/log/gitlab--volume ./data:/var/opt/gitlabgitlab/gitlab-ce:latest这里我也给一个compose的启动配置吧
services: gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab restart: always hostname: <你的ip> # 记得替换成真实的IP地址 ports: - "7001:7001" - "7002:22" - "7003:443" volumes: - ./config:/etc/gitlab - ./logs:/var/log/gitlab - ./data:/var/opt/gitlab可以看到上面的端口映射有三个, 这里我的理解是
第一个是http,访问多的也是这个 第二个是gitlab的ssh连接,这里容器内部使用ssh连接没有占用宿主机的22端口 第三个是https,如果配置了ssl证书就可以通过这个端口连接
修改配置
启动之后需要修改配置,注意这个配置很重要,需要和启动的配置一致:700:7001
docker exec -it [你的容器id] /bin/bash
vi /etc/gitlab/gitlab.rb## 然后修改 external_url 'http://你的ip:7001' 在第30行左右# 更新配置gitlab-ctl reconfigure
# 获取初始化密码cat /etc/gitlab/initial_root_password在这后需要等待几分钟
容器跑起来后需要查看初始密码,下面的路径是没问题的,但是你的容器名字要一致,也可以使用容器ID
初始账号就是root
docker exec -it gitlab cat /etc/gitlab/initial_root_password登陆
浏览器访问 [你的ip]:7001

登陆后你可以创建一些新的用户,然后创建仓库,再往后就和github没什么区别了
结语
git主要是作为一个代码工具来使用,在pycharm,vscode等idea上面都有图形化界面,甚至点一点就行了。
但是由git会衍生出很多其他的流程,比如cicd,仓库管理,发布流程,git更多是一个基础工具,但这些就非常重要的了