git原理

本文介绍了Git的分支管理操作,包括删除与切换分支,强调了删除分支的注意事项。在代码提交方面,讨论了如何处理新分支的提交和冲突解决策略,特别提到了当本地和远程分支需要绑定时的`gitpush`用法。此外,还详述了如何从子分支合并到主分支以及在遇到冲突时的解决步骤。最后,提供了一个实际开发中的案例,展示从创建新分支、编写代码、代码审查到合并到主分支的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一: 删除切换分支操作

1, 删除分支:git branch -d feature1
注意:
(1)如果想要删除某个分支就不能将该分支作为当前分支,需要切换到其他分支进行删除操作;
(2)如果想要删除某个分支,但是该分支未曾合并到master时,操作删除时会报错(提示未合并)

在这里插入图片描述
如果确认删除时,将-d更改为-D进行删除操作

在这里插入图片描述

2, 切换分支: git checkout ***(分支名称)

3,总结:
branch 的创建、切换和删除:
创建 branch 的方式是 git branch 名称git checkout -b 名称(创建后自动切换)
切换的方式是 git checkout 名称
删除的方式是 git branch -d 名称

二: 代码提交操作

1, 当远程仓库存在该分支时,如果要提交该分支的代码更改时,需要
git add .
git commit -m “”
git push

2, 当在本地通过git checkout -b ***(创建新分支名)更改提交代码时,需要:
git add .
git commit -m “”
git push origin ###(新建分支名)

注意:(问题)

我尝试新建一个分支a,将分支a用命令“git push origin a”推上了远程仓。再新增一个commit,执行“git push”命令报错。根据报错,使用“git branch --set-upstream-to=origin/a a”将远程分支a和本地分支a绑定在一起,再次使用“git push”,正确运行。
这说明并不是说远程分支 a 和本地分支 a 一致就可以直接使用 git push 了。本地分支必须和远程分支有一个绑定关系。

三: git 分支merge(合并)操作

(1) 如果在本地的两条分支(主分支和子分支)都有修改内容,此时要将子分支的内容合并到主分支上时,需要先切换到主分支后再执行: git merge ###(子分支名),用来合并子分支的代码,但主分支和子分支的修改文件不是同一个

冲突解决
(2) 如果在分支A和分支B同时修改同一个文件的同一处,此时就会引起冲突
解决:
1, 手动解决
在这里插入图片描述
可以看到,Git 虽然没有帮你完成自动 merge,但它对文件还是做了一些工作:它把两个分支冲突的内容放在了一起,并用符号标记出了它们的边界以及它们的出处。上面图中表示,HEAD 中的内容是 移动硬盘(已买),而 feature1 中的内容则是 移动硬盘(不买了)。这两个改动 Git 不知道应该怎样合并,于是把它们放在一起,由你来决定。假设你决定保留 HEAD 的修改,那么只要删除掉 feature1 的修改,再把 Git 添加的那三行 <<< === >>> 辅助文字也删掉,保存文件退出,所谓的「解决掉冲突」就完成了。

在这里插入图片描述
2, 放弃解决冲突,取消 merge?

git merge --abort

second git内容学习

代码提交案例
1, 在实际开发中,比如现在需要给移动一级手厅开发个内容,你在原有的主分支的基础上拉去了一个新的分支,然后进行:

git push origin newbranch

git branch --set-upstream-to=origin/newbranch newbranch

2, 然后在编写完代码功能后,执行:

git add .
git commit -m “###”
git push

3, 然后再review代码后需要合并到master分支,操作,将本地新建分支代码合并到远程仓库,

(1)先切换到master分支: git checkout master
(2)然后拉去一下代码: git pull
(3)合并分支: git merge newbranch
(4)推送代码: git push
(5)删除分支: git branch -d newbranch

四。 关于git add的操作

git add . : 来直接把工作目录下的所有改动全部放进暂存区

eg: 如果你再修改一个文件后,执行git add .操作未提交代码,然后又修改了该文件,然后你需要再次执行命令git add .,用来重新提交心脏内容。

比较git add ., git add -A, git add -u的区别:

  • git add -A 提交所有变化
  • git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
  • git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

git rebase 详解:

(1) git merge
在这里插入图片描述
(2) git rebase

在这里插入图片描述

5, 回退:

  • git revert HEAD^ 回退上一次commit提交记录
  • git reset commit ID: 回退代码到指定的提交记录处
### Git 的工作原理 Git 是一种分布式版本控制系统,其核心设计理念在于支持高效的代码管理和团队协作。以下是关于 Git 工作原理及其流程的详细介绍: #### 1. **Git 的基本结构** Git 使用对象数据库来存储所有的历史记录和元数据。这些对象主要包括三种类型: - **Blob 对象**:用于保存文件的实际内容。每次提交都会生成一个新的 Blob 对象[^1]。 - **Tree 对象**:表示目录结构,指向多个 Blob 或其他 Tree 对象。 - **Commit 对象**:代表一次提交的历史快照,包含树对象的哈希值、作者信息以及父 Commit 的指针。 通过这种设计,Git 能够高效地追踪每一次更改,并允许开发者轻松回溯到任何特定的时间点或状态。 #### 2. **Git 的三大区域** 理解 Git 的工作机制离不开对其三个主要区域的认识: - **工作区(Working Directory)**:这是用户实际编辑文件的地方。 - **暂存区(Staging Area/Index)**:当执行 `git add` 后,改动会被放入这等待最终确认进入版本库。 - **版本库(Repository)**:包含了所有已提交的数据及完整的变更历史记录[^3]。 #### 3. **Git 的典型操作流程** ##### (1)初始化与配置 首次使用前需设置用户名邮箱等基本信息以便后续标记贡献者身份: ```bash git config --global user.name "Your Name" git config --global user.email "your_email@example.com" ``` ##### (2)创建/克隆仓库 可以新建一个空的本地仓库或者从远程服务器复制现有项目下来作为起点: ```bash # 创建新的本地仓库 git init # 克隆已有项目至本地 git clone https://github.com/example/repo.git ``` ##### (3)日常开发中的增删改查动作 假设我们已经处于某个项目的根路径下,则可按如下方式管理源码变化: - 查看当前状态差异情况:`git status` - 添加单个或多份待处理文档至索引列表:`git add filename(s)` - 提交更新后的成果并附带描述说明:`git commit -m "Message"` 对于那些暂时不想立即解决却又不愿丢失进度的部分,还可以利用 stash 功能将其隐藏起来稍后再恢复继续作业[^2]: ```bash # 存储未完成的任务 git stash # 完成其他事务后重新加载之前搁置的东西 git stash pop ``` ##### (4)分支管理策略 为了更好地促进多人合作模式下的分工效率提升,合理运用分支机制显得尤为重要。例如针对功能模块划分独立线路开展实验性质尝试而不影响主线稳定性[^4]: ```bash # 新建名为feature_x的新支路同时切换过去 git checkout -b feature_x # ...在此期间自由实施各种调整... # 当准备就绪时合并回到master主干线上去 git checkout master git merge feature_x ``` 如果遇到不可避免的分歧现象也不要惊慌失措,按照提示逐步定位具体位置然后手动修正即可[^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值