| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> Git的分支操作,分支合并,冲突合并,拉取远程分支,提交本地分支 -> 正文阅读 |
|
[开发工具]Git的分支操作,分支合并,冲突合并,拉取远程分支,提交本地分支 |
Git的分支,其实本质上仅仅是只想提交对象的可变指针? ? ? ? Git的默认分支名是master,在多次提交之后,你其实已经有一个执行最后那个提交对象的master分支。master分支会在每次提交时自动向前移动。而且Git 的master分支并不是一个特殊的分支。它就跟其他分支完全没有区别,之所以几乎每个仓库都有master分支,是因为 git? ?init命令默认创建它,并且大多数人都懒得取改动它。 1.git的分支操作? ? ? ? 1.1? 分支创建 ????????????????创建一个名称为branch_name的分支 ? ? ? ? ? ? ? ? git? ? ?branch? ?branch_name? ? ? ? ? ? ? ? ? 查看各个分支当前所指向的对象 --decorate ? ? ? ? ? ? ? ? git? ?log? ?--oneline --decorate?? ? ? ? ? ? ? ? ? 创建完成后我们执行上面一条命令发现,branch_name 和 master分支都指向了相同校验和的提交对象。 ????????1.2? 分支切换 ? ? ? ? ? ? ? ? 要切换到一个已经存在的分支,使用git? checkout 命令。 ? ? ? ? ? ? ? ? git? ?checkout? ?branch_name //切换到了branch_name分支,这样HEAD就指向了branch_name 分支了。 ? ? ? ? ? ? ? ? 在切换分支之后,如果修改并提交了文件,那么分支的HEAD就会向前移动,而master分支并没有,依然指向git? ?checkout时所指向的对象。当我们再次切回master的时候,git? checkout? master 这条命令做了两件事,其一是HEAD指回了master分支,二是将工作目录恢复成master分支所指向的快照内容。也就是说,刚刚切到分支上所做的修改,在master分支上不会体现。因为Git的分支实质上仅仅是包含所指对象校验和的文件(长度为40的SHA-1值字符串),所以它的创建和销毁都异常搞笑。创建一个新分支就相当于往一个文件中写入41个字节(40个字符和1个换行符),所以这两步过程并没有什么日志输出,但是确实已经恢复到了切换之前的状态。 ? ? ? ? 现在这个项目的提交历史已经产生了分叉,因为刚刚新建了一个分支,并切换过去做了一些工作,我们可以在不同分支间来回切换和工作,并在时机成熟的时候将他们合并起来。 ? ? ? ? 1.3? 分支的合并 ? ? ? ? ? ? ? ? 创建分支并切换到新建分支可以使用:? git? ? branch? ?-b? ?new_branch ? ? ? ?它相当于 git? ?branch? ?new_branch? ?? ????????git? ?checkout? new_branch ? ? ? ? 假如下面一个场景,我想在项目添加一个功能,但是不知道能不能实现。此时可以新建一个分支,并在分支上进行开发测试,等到测试通过了,合并新建分支到master分支。可以进行如下操作: ? ? ? ? 1.3.1.git? ? branch? ?-b? ? ?new_branch? ? ? ? ? 1.3.2.在new_branch 上进行开发,测试通过后提交? git? ?add? ...? ?git? ?commit ... ·? ? ? ?1.3.3.合并new_branch到master: ? ? ? ? ? ? ? ? 首先切换到master分支: ? ? ? ? ? ? ? ? git? ? checkout? ?master ? ? ? ? ? ? ? ? 合并分支 ? ? ? ? ? ? ? ? git? ?merge? ?new_branch ? ? ? ? ?1.3.4.此时如果有冲突,git会给出提示,这就需要我们手动合并冲突,然后再进行 ·? ? ? ? ? ? ? ? git? ? add? ...git? ?commit .. ? ? ? ? ?1.3.5.如果一个分支完成了它的使命,可以使用下面的命令删除 ? ? ? ? ? ? ? ? git? ? branch -d? new_branch ????????1.4? ?拉取服务器的分支 ? ? ? ? ? ? ? ? 对于已经存在的分支,在拉取了服务器代码[git? clone <url>]之后,我们使用git? ?branch -a 就可以看到所有的分支了,如果需要在某一个分支上进行操作,只需要直接切换过去即可: [git? ?checkout? ?branch_name ]? ? ?然后就可以重复前面的操作了。 ? ? ? ? 1.5 创建自己的分支并提交到服务器端: ? ? ? ? ? ? ? ? 创建分支: git? ?branch? ?branch_name(仅仅创建) 或者使用? ?git? checkout -b branch_name(创建并切换到该分支)。 ? ? ? ? ? ? ? ? 推送分支到远程: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? git? ? push? ?--set-upstream origin? branch_name (branch_name是分支名) ? ? ? ? ? ? ? ? 创建分支仅仅是在本地创建了一个分支,并没有服务器端与之对应,需要使用上面的命令进行提交。 ? ? ? ? ? 1.6 删除一个远程的分支 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?git? ?push? ?--delete origin branch_name (branch_name是分支名) ?git push origin --delete [branch_name] |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:24:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |