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

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

相关推荐
cen__y8 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
bukeyiwanshui11 小时前
20260518 Swift实验
git·swift
qziovv11 小时前
Git 回退场景
大数据·git·elasticsearch
来自大山深处的Doge_13 小时前
解决Git提交更新更改时出错: detected dubious ownership in repository at ...
git
晚霞的不甘14 小时前
CANN-MoE模型推理加速实战
人工智能·分布式·python
嵌入式爱好者hsw16 小时前
Git 部署本地仓库
git
武子康16 小时前
Java-221 RocketMQ 消息存储核心原理:CommitLog、ConsumerQueue、IndexFile 与消息过滤机制
java·大数据·分布式·消息队列·rabbitmq·rocketmq·java-rocketmq
C137的本贾尼17 小时前
Git基本操作(三):版本回退,坐上“时光机”
git
ylifs18 小时前
目的驱动式Git用法
git
来尔君18 小时前
Git Bash 提示符简化(就是每次敲命令时上面显示的那一行信息)
git·命令行