本系列为个人学习Git参照廖雪峰老师的笔记

  • 本文内容:Git远程分支管理

参考笔记:
https://www.liaoxuefeng.com/wiki/896043488029600

文章目录

  • 3 Git分支管理
    • 3-1 创建与合并分支
      • Practice
    • 3-2 解决冲突
      • 菱形冲突
    • 3-3 分支管理策略
      • Practice
    • 3-4 Bug分支
    • 3-5 Feature合并
    • 3-6 多人协作
    • 3-7 Rebase

3 Git分支管理

3-1 创建与合并分支

概念:

  1. 当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev
  2. 就是直接把master指向dev的当前提交,就完成了合并

查看分支

git branch – 查看分支

新建分支

git branch dev —新建分支dev

切换分支

git checkout dev —切换到dev分支

git switch dev

创建并切换

git checkout -b dev --创建并切换到新的分支

git switch -c dev

合并分支

git merge 合并某个分支到当前分支

删除分支

git branch -d 删除分支

Practice

新建分支并修改文件

➜  learngit git:(master) git branch dev
➜  learngit git:(master) git checkout dev
切换到分支 'dev'
➜  learngit git:(dev) ls
laoye_lu.txt  teacher_ma.txt
➜  learngit git:(dev) vim laoye_lu.txt
➜  learngit git:(dev) ✗ cat laoye_lu.txt
laoye lu is disapper ...laoye lu is so cai !gai ya %%%%%
➜  learngit git:(dev) ✗ git add laoye_lu.txt
➜  learngit git:(dev) ✗ git commit -m "add gaiya"
[dev 06ed295] add gaiya1 file changed, 1 insertion(+)

切换分支并合并

➜  learngit git:(dev) git switch master
切换到分支 'master'
➜  learngit git:(master) ls
laoye_lu.txt  teacher_ma.txt
➜  learngit git:(master) cat laoye_lu.txt
laoye lu is disapper ...laoye lu is so cai !➜  learngit git:(master) git merge dev
更新 333b891..06ed295
Fast-forwardlaoye_lu.txt | 1 +1 file changed, 1 insertion(+)
➜  learngit git:(master) cat laoye_lu.txt
laoye lu is disapper ...laoye lu is so cai !gai ya %%%%%

ps: 无法删除当前所在的分支

➜  learngit git:(dev) git branch -d dev
error: 无法删除检出于 '/home/rei/文档/rhw/learngit' 的分支 'dev'。
➜  learngit git:(dev) git branch
➜  learngit git:(dev) git switch master
切换到分支 'master'
➜  learngit git:(master) git branch -d dev
已删除分支 dev(曾为 333b891)。

3-2 解决冲突

菱形冲突

合并变成了

3-3 分支管理策略

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

下面我们实战一下--no-ff方式的git merge

合并:

git merge --no-ff -m "merge with no-ff" dev

Practice

➜  learngit git:(master) git branch tmp
➜  learngit git:(master) git switch tmp
切换到分支 'tmp'
➜  learngit git:(tmp) ls
laoye_lu.txt  teacher_ma.txt
➜  learngit git:(tmp) vim laoye_lu.txt
➜  learngit git:(tmp) ✗ cat laoye_lu.txt
laoye lu is disapper ...laoye lu is so cai !game is fun \/
➜  learngit git:(tmp) ✗ git add laoye_lu.txt
➜  learngit git:(tmp) ✗ git commit -m "add game is fun"
[tmp e211d49] add game is fun1 file changed, 1 insertion(+), 1 deletion(-)
➜  learngit git:(tmp) git switch master
切换到分支 'master'
➜  learngit git:(master) git merge --no-ff -m "merge with no-ff" tmp
Merge made by the 'recursive' strategy.laoye_lu.txt | 2 +-1 file changed, 1 insertion(+), 1 deletion(-)➜  learngit git:(master) git log --graph --pretty=oneline --abbrev-commit*   5010425 (HEAD -> master) merge with no-ff
|\
| * e211d49 (tmp) add game is fun
|/
* 06ed295 (dev) add gaiya
* 333b891 remove test.txt
* 0028773 create new file test.txt
* f764581 新增 laoye lu is disapper
* b1a98b3 teacher ma is shutdown
* 176fa53 teacher ma is unstoppable
* 357ea31 新增laoye_lu.txt
* 2871442 gank middle road
* ce1ee22 teacher ma is back to home
* f2a1a21 teacher Ma's lesson

3-4 Bug分支

git stash 存储 解决紧急bug

// 存储你当前的分支状态

git stash

用于复制一个特定的提交

git cherry-pick 4c805e2

3-5 Feature合并

用户强行删除合并前包含的分支

是这个包含机密资料的分支还是必须就地销毁:

git branch -D feature-vulcan

3-6 多人协作

你的小伙伴要在dev分支上开发,就必须创建远程origindev分支到本地,于是他用这个命令创建本地dev分支

git checkout -b dev origin/dev

指定本地dev分支与远程origin/dev分支的链接,根据提示,设置devorigin/dev的链接

git branch --set-upstream-to=origin/dev dev
Branch ‘dev’ set up to track remote branch ‘dev’ from ‘origin’.

然后再进行代码拉取

git pull

3-7 Rebase

将错乱的提交记录整理成直线,其实也就是以主线为主,删除不必要的合并

合并后

Git远程分支管理(四)相关推荐

  1. linux下git分支管理,git远程分支管理

    git远程分支管理 使用分支的原则 master分支是非常重要的,线上发布代码用这个分支,平时我们开发代码不要在这个分支上 创建一个dev分支,专门用作开发,只有当发布到线上之前,才会把dev分支合并 ...

  2. Git 代码分支管理 / 版本管理

    Git 代码分支管理 / 版本管理 在使用 Git 时,基本不可能只有一个分支. 即使只有一个人发开,也会考虑代码的安全而分多个分支.多人协同开发时,可能每个人在不同的分支开发,也可能不同团队在不同的 ...

  3. Git实战(五)| 让工作更高效,Git的分支管理

    上一篇讲到Git的分支管理实操,在线合并和本地合并都进行了实操.毕竟:光说不练是假把式.而只练不整理,只能是傻把式了.分支管理到底如何进行管理呢? 先以GitLab上的一张经典的图打头,作为一个总体概 ...

  4. git 远程分支和tag标签的操作

    git远程分支操作: 1.创建远程分支 git push --set-upstream origin develop:develop2 在服务器创建远程分支devlop2,让本地的develop分支和 ...

  5. 更改git远程分支的方法

    更改git远程分支的方法 Pull失败的解决方法:

  6. git的分支管理(详细版)

    git的分支管理 git所有分支之间彼此互不干扰,各自完成各自的工作和内容.可以在分支使用完后合并到总分支(原分支) 上,安全.便捷.不影响其他分支工作 查看当前工作在那个分支 git branch ...

  7. 139.00.005 Git学习-分支管理

    @(139 - Environment Settings | 环境配置) 一.Why? 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交, ...

  8. Git 远程分支的pull与push

    远程分支信息查看 git branch -r #查看远程分支git branch -a #查看所有分支,本地和远程git remote show [remote-name] #查看远程仓库信息 其中g ...

  9. Git 之四 分支管理

    写在前面   Git 的官网上有很详细的使用教程(当然有翻译版本),具体地址是 https://git-scm.com/book/zh/v2.唯一不足就是,很多讲解并没有实机演示.但是,毫无疑问,官网 ...

最新文章

  1. SDP 协议分析 http://www.cnblogs.com/qingquan/archive/2011/08/02/2125585.html
  2. Android ProGuard使用要点!
  3. js实现模态框点击空白关闭
  4. CentOS 6.3开机自动挂载磁盘和文件夹
  5. python3.6+RF环境搭建
  6. 记录Pandas处理数据的两个小技巧
  7. 《软件需求分析(第二版)》第 15 章——变更管理 重点部分总结
  8. arduino 停止程序_建立Arduino机器人,第五部分:障碍规避
  9. [BZOJ1026]windy数
  10. 比反射更快:委托 第2部分
  11. flask接口mysql开发例子,使用Flask开发简单接口3–引入MySQL
  12. 附加作业:源自邹老师的作业“链接”
  13. IE11浏览器传时间格式不兼容,c.a.d.c.advice.AdcDaBaseExceptionAdvice : JSON parse error
  14. edup网卡 linux,应用笔记--使用USB WiFi网卡
  15. smarty 缓存用法简述(转)
  16. 关于制作朗文6++ dictionary mac自用词典问题总结
  17. 系统集成j2cache
  18. 关于培训机构~程序员培训
  19. 亚马逊要验证收款查关联?
  20. 玩客云armbian挂载硬盘

热门文章

  1. 虚拟主机服务器放在哪里,云虚拟主机的目录在哪里
  2. 数据库去重,group by、distinct、rowid的用法,oracle和mysql如何数据去重保留一条
  3. IDEA(2018.2)的下载、安装及破解
  4. Java中类对象为空是什么意思?
  5. iOS二维码代码实现
  6. 什么?还在用delete删除数据《死磕MySQL系列 九》
  7. 在线协助设计软件,figma、sketch、xd哪个才是你的优先选择
  8. 校验注解:@Valid 和 @Validated区别与用法(附详细案例)
  9. windows连接的蓝牙设备(如小爱同学),无法调节音量
  10. PMOS与NMOS场效应管相关知识点