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 小时前
Kafka JMS
分布式·kafka
心勤则明2 小时前
Spring AI Alibaba 分布式智能体实战:基于 A2A 协议的架构演进与落地
人工智能·分布式·spring
weisian1512 小时前
Java并发编程--29-分布式ID的6种方案:从单机到分库分表的“身份证”设计
java·分布式·雪花算法·美团leaf·百度uid
无限进步_2 小时前
【C++】反转字符串的进阶技巧:每隔k个字符反转k个
java·开发语言·c++·git·算法·github·visual studio
2603_954708312 小时前
微电网主从控制架构:集中式调度与分布式执行的协同机制
人工智能·分布式·物联网·架构·系统架构·能源
Rabbit_QL10 小时前
【Git 报错处理】`remote origin already exists` 是什么意思?
git
一个有温度的技术博主11 小时前
Redis主从同步原理:从全量同步到增量同步的完整解析
redis·分布式·缓存
陈佬昔没带相机13 小时前
GitHub clone 不动、pip 卡住、brew 转圈?一份指南搞定
git·npm
CoovallyAIHub16 小时前
15K Star中文首发!$5部署一个会自我进化的私人Agent——NousResearch开源Hermes Agent
git·架构·github