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、合并冲突

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

相关推荐
fpcc20 小时前
工具使用—git add命令分析说明
git·工具
独隅1 天前
VS Code Git 工作树多分支并行开发实战指南
大数据·git·elasticsearch
何以解忧,唯有..1 天前
Redisson分布式锁实现原理深度解析
分布式
萧瑟余晖1 天前
Java深入解析篇三十六之分布式系统详解
java·开发语言·分布式
丑过三八线1 天前
Git 合并未合并分支完整教程
git
cc复CC1 天前
从零开始手写 Spark 03|RDD 的惰性流水线
分布式
cc复CC1 天前
从零开始手写 Spark 02|数据流与延迟迭代
大数据·分布式
七夜zippoe1 天前
基于 DolphinDB 构建分布式集群:从节点配置到高可用部署的完整实践
分布式·集群·dolphindb·节点配置·高可用部署
Acrellea1 天前
并网验收难破局:分布式光伏如何攻克孤岛、逆流两大技术关卡
分布式
杨运交2 天前
[060][调度模块]Redisson vs Redis 原生锁:两种分布式锁实现深度对比
数据库·redis·分布式