Git 分布式版本控制

1、优势

|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 本地版本控制 | 只在本地电脑维护多版本,不能共享,且容易出错 |
| 集中式版本控制 | 将历史版本等信息统一维护到一台机器上,每次只拉取当前版本内容得到临时拷贝(不携带历史提交信息等),可共享,但同步必须使用服务器,单点故障数据全丢失 |
| 分布式版本控制 | 本地拉取得到完整仓库(携带所有历史版本信息),相互之间可直接通过服务调用同步更新,但一般会设一台服务器作为公共交换点,但并不是一定需要 可共享,同步可不经过服务器,单点故障可容错 |

2、远程仓库 VS 本地仓库

分布式版本控制一般会设置公共交换点,如github,叫做远程仓库

自己电脑上的仓库叫做本地仓库

远程仓库的分支叫做远程分支

本地仓库的分支叫做本地分支

git pull 将远程仓库拉取到本地仓库

git push 将本地仓库推送到远程仓库

3、git快照流

git通过快照保存不同版本,头指针HEAD指向当前分支版本

4、工作区 VS 暂存区 VS 提交区

工作区:当前的目录,做修改的地方

暂存区:git add 后修改内容存入暂存区

提交区:git commit -m "描述信息" 暂存区内容提交到仓库内

5、常见指令

remote:操作远程仓库的命令前缀

origin:git为远程仓库起的默认名

|------------------------------------------------------------------|-------------------|
| | |
| git init | 初始化,创建.git |
| git clone 远程仓库地址 | |
| git remote add origin 远程仓库地址 | 将本地仓库与远程仓库建立对应关系 |
| git pull origin 远程分支名 git pull | 拉取并自动合并 |
| git fetch origin 远程分支名 git fetch + git reset --hard origin/远程分支名 | 拉取,但不合并 + 重置头指针 |
| git push origin 本地分支名:远程分支名 git push | |
| git branch --set-upstream-to=origin/远程分支名 本地分支名 | 将本地分支与远程分支建立对应关系 |
| git status | |
| git diff | |
| git add --all | |
| git commit -m "描述信息" | |
| git checkout -b 分支名 | |
| git checkout 分支名 | |
| git branch -D 分支名 | |
| git merge | 合并两个分支的变更记录 |
| .gitingore | |
| git rm 文件名 | 将文件从暂存区移除 |
| git log | |
| 撤销已提交 | |
| 撤销已推送 | |
| git stash + git stash pop | 暂存未提交内容 + 恢复未提交内容 |
| | |

6、git checkout -b 分支名 VS git checkout 分支名

已暂存、已修改 的内容属于工作区,不属于任何一个分支

如果不想让未提交内容跟着切换分支,使用 git stash 暂存未提交内容 + 切换到目标分支 + git stash pop 恢复未提交内容

场景 git checkout 已有分支 git checkout -b 新分支
创建分支 ❌ 不创建 ✅ 创建
切换分支 ✅ 切换 ✅ 切换
无冲突时,未提交内容 ✅ 跟随切换 ✅ 跟随切换
有冲突时,未提交内容 ❌ 拒绝切换 ❌ 拒绝切换

具体场景:

在test1分支上新建test2分支 未暂存和已暂存的内容都会带到test2分支上 然后此时checkout test1 这些内容依旧会被带到test1分支上

7、合并冲突

同一文件的变更记录有冲突

相关推荐
深海鱼在掘金2 天前
Git 完全指南 —— 第1章:Git 概览与版本控制演进
git
noravinsc3 天前
关于Git Flow
git
蜜獾云3 天前
在Git中配置用户名和密码
git
scx_link3 天前
通过git bash在本地创建分支,并推送到远程仓库中
开发语言·git·bash
南大白3 天前
IntelliJ IDEA 运行时的 JVM 本地内存溢出崩溃
git
风吹夏回3 天前
RabbitMQ 核心术语 + Python pika 方法完整讲解
分布式·python·rabbitmq
码农小旋风3 天前
Claude Code 基础用法大全:对话、分析、修改、测试、Git 和工作流
人工智能·git·chatgpt·claude
风吹夏回3 天前
RabbitMQ 三种模式入门:HelloWorld、WorkQueue、PubSub
分布式·rabbitmq·ruby
南大白3 天前
Git 撤回提交完整方案
git
像风一样的男人@3 天前
python --实现代理服务器
git·ui