Git分支

分支的概念

分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN!

分支在实际开发中的作用

在进行多人协作开发的时候,为了防止互相干扰,提高协同开发的体验,建议每个开发者都基于分支进行项目功能的开发

master 主分支

在初始化本地 Git 仓库的时候,Git 默认已经帮我们创建了一个名字叫做 master 的分支。通常我们把这个master 分支叫做主分支。

在实际工作中,master 主分支的作用是:用来保存和记录整个项目已完成的功能代码。

因此,不允许程序员直接在 master 分支上修改代码,因为这样做的风险太高,容易导致整个项目崩溃。

功能分支

由于程序员不能直接在 master 分支上进行功能的开发,所以就有了功能分支的概念。

功能分支指的是专门用来开发新功能的分支,它是临时从 master 主分支上分叉出来的,当新功能开发且测试完毕后,最终需要合并到 master 主分支上

查看分支列表(⭐⭐⭐)

使用如下的命令,可以查看当前 Git 仓库中所有的分支列表:

git branch

运行的结果如下所示:


注意:分支名字前面的 * 号表示当前所处的分支。

创建新分支

使用如下的命令,可以基于当前分支,创建一个新的分支,此时,新分支中的代码和当前分支完全一样:

git branch 分支名称

切换分支

使用如下的命令,可以切换到指定的分支上进行开发:

git checkout login

分支的快速创建和切换(⭐⭐⭐)

使用如下的命令,可以创建指定名称的新分支,并立即切换到新分支上:

# -b 表示创建一个新分支
# checkout 表示切换到刚才新建的分支上
git checkout -b 分支名称

图示如下:

注意:

"git checkout -b 分支名称" 是下面

两条命令的简写形式:

① git branch 分支名称② git checkout 分支名称

git合并分支

功能分支的代码开发测试完毕之后,可以使用如下的命令,将完成后的代码合并到 master 主分支上:

# 和并功能分支之前,一定要保证,主分支和功能分支上面的代码进行版本提交(合并的是本地仓库,不是工作区);
#    git checkout login
#    然后,创建新文件,添加新代码
#    git add .
#    git commit -m "功能介绍"# 1. 切换到 master 分支
git checkout master# 2. 在master 分支上运行 git merge 命令,将 login 分支的代码合班到 master 分支
git merge login

图示如下:

合并分支时的注意点:

假设要把 C 分支的代码合并到 A 分支,

则必须先切换到 A 分支上,再运行 git merge 命令,来合并 C 分支!

删除本地分支

当把功能分支的代码合并到 master 主分支上以后,就可以使用如下的命令,删除对应的功能分支:

git branch -d 分支名称   (如果没有合并,那么删除后报错)
git branch -D 分支名称   (强制删除)

图示如下:

遇到冲突时的分支合并

如果在两个不同的分支中,对同一个文件进行了不同的修改,Git 就没法干净的合并它们。 此时,我们需要打开这些包含冲突的文件然后手动解决冲突。

# 假设:在把 reg 分支合并到 master 分支期间
git checkout master
git merge reg# 打开包含冲突的文件,手动解决冲突之后,再执行如下命令
git add .
git commit -m "解决了分支合并冲突的问题"

远程分支操作

git remote add origin 地址

把一个地址 保存到origin变量当中
当然这个origin变量名 可以改 一般不改

将本地分支推送到远程仓库(⭐⭐⭐)

如果是第一次将本地分支推送到远程仓库,需要运行如下的命令:

# -u 表示把本地分支和远程分支进行关联,只在第一次推送的时候需要带 -u 参数
git push -u 远程仓库的别名 本地分支名称:远程分支名称# 实际案例
git push -u origin payment:pay# 如果希望远程分支的名称和本地分支名称保持一致,可以对命令进行简化
git push -u origin payment

注意:
1.第一次推送分支需要带 -u 参数,此后可以直接使用 git push 推送代码到远程分支。
2. -u 记录这个地址 记录这个分支 下一次不用再写这么多东西

查看远程仓库中所有的分支列表

通过如下的命令,可以查看远程仓库中,所有的分支列表的信息:

git remote show 远程仓库名称

跟踪分支(⭐⭐⭐)

跟踪分支指的是:从远程仓库中,把远程分支下载到本地仓库中。需要运行的命令如下:

删除本地原有同名分支; git branch -d "分支名称"

# 示例
git checkout pay# 从远程仓库中,把对应的远程分支下载到本地仓库,并把下载的本地分支进行重命名
git checkout -b 本地分支名称 远程仓库名称/远程分支名称# 示例
git checkout -b payment origin/pay

本地没有此分支,远程也没有此分支就会报错;

拉取远程分支的最新的代码

可以使用如下的命令,把远程分支最新的代码下载到本地对应的分支中:

# 从远程仓库,拉取当前分支最新的代码,保持当前分支的代码和远程分支代码一致
git pull

删除远程分支

可以使用如下的命令,删除远程仓库中指定的分支:

# 删除远程仓库中,制定名称的远程分支
git push --delete 远程仓库名称 远程分支名称# 示例
git push --delete origin pay# 之前学习的 强行删除本地分支
git branch -D register

总结

  • 掌握 Git 中基本命令的使用
  - git init                      初始化仓库- git add .                    将工作区内容添加到暂存区- git commit –m "提交消息"    提交代码到本地仓库- git status 和 git status -s   查看状态
  • 使用 Github 创建和维护远程仓库

    • 配置 Github 的 SSH 访问
    • 将本地仓库上传到 Github
  • 能够掌握 Git 分支的基本使用
  - git checkout -b 新分支名称                创建新分支 并切换到新分支上  - git push -u origin 新分支名称          将本地的分支版本上传到远程- git checkout 分支名称                    切换分支- git branch                                查看分支

Git分支 查看branch 创建 切换checkout 合并merge(先切回主分支) 删除branch -d 推送push相关推荐

  1. git切换分支合并后再切回原来分支导致没有提交的代码丢失

    git切换分支合并后再切回原来分支导致没有提交的代码丢失 前言 在企业开发中,总会需要用远程仓库来管理整个团队的项目代码,git是我们常用的代码提交工具,虽然就我个人而言,在开发的过程中就只用到几个简 ...

  2. 【Git实战技巧】恢复被强制推送push失踪的代码

    前言 Git是一个易学难精的分布式版本控制系统,被我们码农常用于代码的管理.如果你还不了解Git,建议先通过廖雪峰的Git教程进行了解,再来看本文,因为本文以使用技巧为主,不会在基础名词上做过多解释. ...

  3. Git回退已经提交commit的(还未推送push的)代码及撤回代码回退

    1.Git回退已经提交的代码 原文链接(原文写的是已经推送push的代码) http://t.csdn.cn/CDjgq 已经开始难过了,我提交后没有推送就按照上文提示进行了代码回退,结果idea里面 ...

  4. Git本地与远程配对命令:两种 一种是在推送push时候配对 一种是新建分支checkout -b时候配对

    推送的配对git push --set-upstream origin dev新建分支时候的配对git checkout -b feature-group-account origin/feature ...

  5. Git撤销已经推送(push)至远端仓库的提交(commit)信息

    原文链接:https://blog.csdn.net/hanchao5272/article/details/79435730 有关修改提交(git commit)信息的方法可以参考: Git com ...

  6. Linux shell 学习笔记(1)— 文件和目录(查看、创建、复制、软硬链接、重命名及删除操作)

    1. 启动 shell /etc/passwd 文件包含了所有系统用户账户列表以及每个用户的基本配置信息: christine:x:501:501:Christine Bresnahan:/home/ ...

  7. 杰理之通话时,将主耳放入充电仓,声音不切换到副耳,直接切回到手机端【篇】

  8. Win10的Alt+Tab切换风格不习惯,切回win7模式的办法 - 置换alt和win键的位置 - Macbook键盘映射

    直接上图 原Alt+tab效果图 @ Win10 on Macbook with Bootcamp驱动: KeyTweak(按键修改器) 2.3 https://dl.pconline.com.cn/ ...

  9. idea 使用svn将主分支修改的代码更新到子分支

    hello,大家好- 这是一个带着无奈和崩溃以及带着一些欣喜的态度,写下的一篇博客. 事情是这样发生的-------- 就在前几天晚上,涉及到了svn分支的情况.使用分支还没有完全改完.只改了一部分, ...

最新文章

  1. C#如何向EXCEL写入数据
  2. 新一代企业内部故障报修软件功能实现
  3. 表格数据清空还能恢复吗_数据恢复大师:清空回收站文件如何恢复?
  4. hdu1.3.2 Rank
  5. linux中配置jmeter环境变量,linux java 和jmeter 环境变量配置文件笔记(原)
  6. 浏览器解析JavaScript的原理
  7. java 拼音码_java代码将汉字转换成拼音
  8. Android 性能优化探究
  9. jsp隐式对象_JSP隐式对象
  10. iptv直播服务器维护,IPTV机顶盒的智能化配置和维护方案介绍【详解】
  11. Scala+HuffmanCoding实现无损压缩
  12. mariadb无法远程访问的解决思路
  13. 跨境电商生态大会在深举办 连连支付母公司发布新平台“LianLian Link”
  14. Leetcode Day10 最长公共子序列+字符串交织
  15. 年轻人,你活着不是为了观察K线做布朗运动
  16. php fopen 指定路径,fopen 系统找不到指定路径 PHP文件包含详细讲述
  17. 使用GNS3进行子网及路由的简单配置
  18. 《电气图用图形符号》
  19. HTML下拉框、二级联动 select多级联动
  20. IPO:Impinj预计发行460万股普通股

热门文章

  1. java基础之TreeMap
  2. 分布式锁-Redis解决方案和Redisson解决方案
  3. java将简体中文_【Java】简体中文、繁体中文转换
  4. AIGC发展路径思考:大模型工具化普及迎来新机遇
  5. sql分组 会计分录_oracle\EBS\常用表\视图\会计分录\mtl_serial_numbers\总账
  6. PCA9685:I2C转16路PWM,助力你的系统
  7. 【python学习】-字典学习(访问字典所有键与值、修改与更新字典、删除字典)
  8. 加密算法详解AES/HmacSHA1/DES
  9. FLStudio中文全套插件包FL水果20.8中文宿主软件插件
  10. 联想电脑thinkPad开机黑屏