分支是Git的一个杀手级应用,和其他版本控制工具不一样的是,git创建及切换分支的效率极其高效。
分支简介
何为分支呢?我们从一个我们非常熟悉的场景来讲述,一个已经上线的产品,现在需要新增一个功能。这个时候,如果我们在原分支上继续开发的话,就很不方便,因为是一个已经上线的应用了,肯定需要先测试完毕后才能够上线。一般我们的做法是,建立一个新的分支,在这个新的分支上开发新的功能,测试完毕后,再合并到主分支上。
分支的创建、切换
目前我的版本库分支情况如下:
创建分支
现在我们创建一个新的分支,dev。创建分支的及查看分支命令如下:
git branch 分支名 git branch # git branch dev # git branch dev * master
切换分支
分支已经建立成功了。现在我们来切换到新的分支,切换分支的命令如下git checkout 分支名
# git checkout dev Switched to branch 'dev'
现在,我们在新的分支做一些修改,然后提交,然后切换到master分支上做点修改并提交。然后,我们看看分支的状态。
git vim config.php # 修改config.php文件 git add . && git commit -m 'add config.php' git checkout master # 切换到主分支 git vim config.php git add . && git commit -m 'change config.php'
$ git log --oneline --decorate --graph --all * ca4589c (HEAD -> master) add config file | * 43a5a8f (dev) add config.php |/ * 19e3186 add index.php * 9cc82f9 first commit
一条命令完成分支的创建及切换分支
git checkout -b 新分支名
分支的合并
首先引入一个场景,该场景非常的常见:
一个系统已经上线
该系统需要更新一个新的功能,所以你新建了一个分支(dev)并在此分支上开展工作。
此时,系统突然出现的一个问题,需要紧急排查处理。
那么,这时候你需要先切换到线上版本(master),然后新建立一个分支(fixbug),在新的分支上修正错误
完成测试后,切换到线上分支,然后来合并fixbug分支,再将改动推到线上的分支。
最后,我们就可以切换到dev分支来继续工作了。
目前,我们版本库状态如下:
现在,需要新建一个新分支,在新分支上添加新的功能。
git checkout -b dev
然后在新的分支上做一些修改。
此时,发现线上出现了一个严重的bug,需要紧急处理。那么,首先我需要切换到master分支。但在切换的时候发生了一个错误
$ git checkout master error: Your local changes to the following files would be overwritten by checkout: login.php Please commit your changes or stash them before you switch branches. Aborting
以上错误我们经常会碰到,这是因为在合并分支的时候,工作区和暂存区必须是“干净”的。有两种方法可以达到上述要求
提交修改
暂存
我们这里使用暂存的方法来演示
$ git stash $ git checkout master Switched to branch 'master'
当你切换分支的时候,Git 会重置你的工作目录,使其看起来像回到了你在那个分支上最后一次提交的样子。
现在,我们新建fixbug分支,在这个分支上修复bug。
$ git checkout -b fixbug
合并分支
修复完成且测试通过时,就可以把它合并到master上了。合并使用git merge 分支名
$ git checkout master Switched to branch 'master' $ git merge fixbug
删除分支
这个时候,fixbug功能已经完成了,可以将它给删除掉了。
$ git branch -d fixbug Deleted branch fixbug (was cca73bb).
现在,我们可以继续在dev分支上工作了。我们需要把之前暂存的内容取出来。
$ git checkout dev $ git stash pop On branch dev Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: login.php no changes added to commit (use "git add" and/or "git commit -a") Dropped refs/stash@{0} (2f8476defbaa813e31f3e1b081f5b88416b2ff50)
新功能完成后,提交到版本库。
冲突解决
现在我们新的功能完成了,那么就可以把它合并到master分支上了。现在我们来演示合并时遇到冲突时,如何去解决。
$ git checkout master Switched to branch 'master' $ git merge dev Auto-merging index.php CONFLICT (content): Merge conflict in index.php Automatic merge failed; fix conflicts and then commit the result.
提示我index.php合并的时候有冲突,我们来看看该文件
$ cat index.php <?php <<<<<<< HEAD echo 'hello world'; ======= echo 'version 1.1 finished'; >>>>>>> dev
<br/>
$ cat index.php <?php echo 'version 1.1 finished';
然后再add并提交,最后在提交
$ git commit -m 'merge dev'
这个时候就合并成功了,现在就去删除dev分支吧。
$ git branch -d dev
以上是版本控制工具Git——分支管理的详细内容。更多信息请关注PHP中文网其他相关文章!

Git是一个开源的分布式版本控制系统,帮助开发者跟踪文件变化、协同工作和管理代码版本。它的核心功能包括:1)记录代码修改,2)回退到之前版本,3)协同开发,4)创建和管理分支进行并行开发。

Git和GitHub不是同一回事。Git是版本控制系统,GitHub是基于Git的代码托管平台。Git用于管理代码版本,GitHub提供在线协作环境。

使用GitHub管理HTML项目的原因是它提供了版本控制、协作开发和展示作品的平台。具体步骤包括:1.创建并初始化Git仓库,2.添加和提交HTML文件,3.推送到GitHub,4.使用GitHubPages部署网页,5.利用GitHubActions自动化构建和部署。此外,GitHub还支持代码审查、Issue和PullRequest功能,帮助优化和协作开发HTML项目。

从Git开始更适合深入理解版本控制原理,从GitHub开始更适合关注协作和代码托管。1.Git是一个分布式版本控制系统,帮助管理代码版本历史。2.GitHub是一个基于Git的在线平台,提供代码托管和协作功能。

微软不拥有Git,但拥有GitHub。1.Git是林纳斯·托瓦兹在2005年创建的分布式版本控制系统。2.GitHub是基于Git的在线代码托管平台,成立于2008年,微软于2018年收购。

在简历上应根据职位要求和个人经验选择写Git还是GitHub。1.如果职位要求Git技能,突出Git。2.如果职位看重社区参与,展示GitHub。3.确保详细描述使用经验和项目案例,以完整句子结束。

GitLab更适合某些开发者和团队,因为它提供了完整的DevOps工具链和强大的CI/CD功能。1.GitLab的CI/CD功能集成在平台内部,支持从代码提交到部署的全流程自动化。2.其服务器端渲染技术提升了大型项目的页面加载速度。3.GitLab的权限管理系统更加灵活,支持细粒度控制。

GitHub不难学。1)掌握基础知识:GitHub是基于Git的版本控制系统,帮助追踪代码变化和协作开发。2)理解核心功能:版本控制记录每次提交,支持本地工作和远程同步。3)学习使用方法:从创建仓库到推送提交,再到使用分支和拉取请求。4)解决常见问题:如合并冲突和忘记添加文件。5)优化实践:使用有意义的提交消息,清理分支,使用项目板管理任务。通过实践和社区交流,GitHub的学习曲线并不陡峭。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

禅工作室 13.0.1
功能强大的PHP集成开发环境

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境