1 git基本概念梳理

1.1 git的工作目录、暂存区和HEAD指向的版本库以及branch的概念

一个branch就是整个产品的一套代码,而工作目录中就是存放的本branch最新的代码,HEAD指向的branch是最近一次提交后的整个产品的一套代码。从branch的角度就能够很好的把工作目录和HEAD指向的版本库联系起来了。工作目录中的一套代码存放在外存的一个位置,版本库的代码存放在另外一个位置。暂存区中只是存放git add的几个文件而已。

另外,版本库和远程的版本库是一样的,但是,本地的版本库如果没有更新的话,一些分支的会落后远程库一些commit。

要想本地的版本库和远程的版本库的代码一致,那么就git fetch <remote>就行,不用指定主机名,因为clone本地库的时候,就已经把本地和远程主机关联起来了。git已经记住了。

2 各个命令不要单独用,而是加上branch已经主机名,这样的话,不会记混

也就是说,记住其操作的对象。

2.1 命令操作的对象

2.1.1 远程主机

只在git clone时会用到。

2.1.2 远程主机上的仓库和远程主机上的仓库中的分支

使用git branch -r就可以查看到远程主机上的仓库和分支,返回的是一个<remote>/<branch>列表,前面就是远程仓库名,后面是各个branch名。

所有,git操作的基本单位是branch,但是为了把远程和本地的branch区分开,就用了一个远程仓库名。

3 不要用git pull,用git fetch

git fetch <remote>将远程的所有分支的代码拉取到本地,它不会merge,本地仓库就和远程仓库同步了,然后就可以进行branch的merge了。

4 本地的分支和远程跟踪分支发生了分歧的解决办法,最简单的方式

第一,保存好本地修改的未提交的代码

第二,同步本地版本库到远程版本库

git fetch <remote>

第三,重新定义本分支的commit链表

git reset <remote>/<branch>

这样的话,HEAD指针就指向了远程分支的最新一次提交,那么该branch就和远程的branch一样了。

但是,现在工作区和缓冲区还没有变化,

工作区是当前branch的最新代码,如果加了--hard的话,那么,工作区的代码会被更新到该branch最新的状态的所有代码。

而缓冲区就会被清掉,因为,工作区和当前分支的版本库是一样的,那么它就什么也没有了。

如果使用--soft,当前工作区和缓冲区都不变。那么当前工作区的代码就会和当前分支版本库中的代码区别比较大了,因为很可能很多人已经向远程分支提交了commits。这个时候怎么办呢?因为很多当前分支库的代码工作区都没有,难道这次提交之后,工作区没有的这些代码就会被删除吗?是的,如果很多提交的话,都会没有了。

--soft的使用时机?适合于变更集合比较小,也就是说,本地进行了一次提交,但是还没有push到远程分支,这个时候,可以git reset --soft HEAD^,这样的话,就会把本次提交丢弃,但是工作目录中还存在本地修改,然后再提交就可以了。也就是说,git的这些命令都是有自己的适用范围的。

因此,如果远程分支已经有别人提交了,那么用git reset --hard <remote>/<branch>,那么本地分支和远程分支又同步了,然后工作目录和缓存目录也都干净了。

第四,再把修改的文件加进来

改好后,重新提交即可。

5 怎样避免发生diverge

在多个人同时在一个分支上开发时,很容易发生diverge的情况。为什么会发生diverge呢?主要的原因是因为没有同步服务器端最新的代码。服务器端已经有新的commit了,但是,自己并没有同步,就commit,这样的话,自己和远程分支就会diverge。

那么怎样避免呢?做到两点就可以避免,第一,commit前必须要先同步到远程最新的代码,同步的时候就算conflict也没有关系,只要解决冲突就可以了。第二,commit之后尽快push到服务器端。这样可以尽量减少diverge的可能性。当不可避免的发生了diverge这么办呢?4是一种很保守的做法。更好的办法

第一种思路,git fetch origin/master然后git merge origin/master

第二种思路,git fetch origin/master然后git rebase

转载于:https://www.cnblogs.com/hustdc/p/6557570.html

开发过程中,本地分支和远程跟踪分支发生了diverge相关推荐

  1. 解决no tracked branch的问题,并详说远程分支、远程跟踪分支和跟踪分支【本地分支】

    目录 问题 分支 远程分支 远程跟踪分支 跟踪分支 什么是跟踪分支 设置跟踪分支 跟踪分支的作用 iss53分支 master分支 serverfix分支 testing分支 定位问题 解决问题 问题 ...

  2. gitlab 分支操作笔记\新建远程分支\抓取远程分支\复制远程\删除分支

    密码重新输入 git config --global http.emptyAuth true 1.不复制远程,直接新建远程分支.(非正规操作) git init //初始化 git remote ad ...

  3. 08 Git中本地工作与远程仓库的同步

    本节视频: 本节的目标对应日常工作的常态,将应对第一次提交中不会遇到的各种"意外".这些意外是多人合作中的正常现象,需要掌握其正确的处理方式. 与上一节相比,本节的新内容是从远程仓 ...

  4. git远程仓库分支的各命令的具体解析(git remote add)

    0 可参考文章 本文重点参考的Git官方中关于git远程仓库的使用教程: 2.5 Git 基础 - 远程仓库的使用 3.5 Git 分支 - 远程分支 1 问题背景 看完上面的教程后,我们再一步一步抠 ...

  5. git:本地分支与远程分支

    在开发软件时,可能有多个人同时为一个软件开发,可能同时存在多个release版本,并且需要对各个版本进行维护,而git的分支功能就可以支持同时进行多个功能的开发和版本管理 什么是分支? Git 保存的 ...

  6. git创建本地分支以及推送本地分之至远程分支

    Git分支策略 实际开发中,应当按照以下几个基本原则进行管理: 首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能再上边干活. 那在哪干活呢?干活都在dev分支上,也就是说,de ...

  7. git命令行推送本地分支到远程仓库

    之前说过Git与IDEA强强联合(HTTPS协议连接)那么如何使用命令行来推送代码呢? 如下图所示为一个基于layui的前端代码: 目录工作区文件: 本地内容就是将这些内容推送到远程仓库 首先使用gi ...

  8. 如何签出远程Git分支?

    有人用git push origin test将一个名为test的分支git push origin test送到共享存储库. 我可以看到git branch -r . 现在,我正在尝试签出远程tes ...

  9. Git远程:分支的upstream

    一个分支的upstream,其实就是与远程分支做关联,告诉git,默认此分支为推送及拉取的远程分支的信息. upstream的设置 基本设置 1 $ git branch --set-upstream ...

最新文章

  1. linux 内网共享文件夹_局域网中实现linux文件共享
  2. Python中通常不应该犯的7个错误
  3. Vision Transformer太火!这门开源课也火了!十小时现场coding带你玩转ViT 爆款SOTA算法!...
  4. 颜色空间缩减,降低运算复杂度,保留代表性颜色
  5. python点击网页元素_ios+python 简单的查找页面元素并点击,点击的时候出现问题,求指点...
  6. 解决win10的WiFi图标消失、win10打开或关闭系统图标网络灰色问题
  7. 本地数据库环境搭建(PhpStudy)
  8. WPF ControlTemplate 仿QQ概念版CheckBox
  9. stm32的语音识别_基于STM32的嵌入式语音识别模块设计
  10. 安踏2019上半年收益突破148亿元劲增超40%
  11. oracle cdr是什么,基础:CDR软件中曲线工具的使用
  12. 通过链接下载google drive文件
  13. 全国通用 专升本计算机基础(简答题背诵可用)
  14. 硬核!4.5万字手把手教你搭建MySQL海量数据存储架构!!(全程实战,建议收藏)
  15. DBA运维福音:10分钟,一行命令安装Oracle数据库
  16. 基于Android Studio开发的笔记APP
  17. 南非数字货币应用潜力巨大 小试牛刀审慎探索
  18. YOLOv7移植经验分享
  19. h5活动是什么意思_H5页面到底是什么?
  20. 女孩子有什么颜值高的蓝牙耳机推荐?双12五款高音质游戏蓝牙耳机分享

热门文章

  1. 络达开发---自定义Timer的实现
  2. 【大物第七版·电磁感应 电磁场理论】感生电动势 感生电场总结
  3. mysql禁止数据被删除_为什么MySQL不建议delete删除数据
  4. c语言笔记(翁恺3.2.1...if~3.3.1)
  5. 中国枭龙战机座舱设计远超最新F-16与台风同级
  6. 下列java源程序结构中前三种语句的次序_2020超星西方文明通论试题及答案
  7. 抖音怎么使用鸿蒙系统,又好用又易用的鸿蒙OS来了 华为官方抖音账号参与新系统相关话题...
  8. 数字通信世界杂志数字通信世界杂志社数字通信世界编辑部
  9. 单片机显示Image2Lcd生成的单色图像
  10. 搞定老外,这些英语句型一定要熟记!