Version control tool Git - branch management
Branch is a killer application of Git. Unlike other version control tools, git is extremely efficient in creating and switching branches.
Introduction to branches
What is a branch? Let’s start with a scenario that we are very familiar with. A product that has been launched now needs to add a new function. At this time, if we continue to develop on the original branch, it will be very inconvenient, because it is an application that has already been launched, and it must be tested before it can be launched. Generally, our approach is to create a new branch, develop new functions on this new branch, and then merge them into the main branch after testing.
Creation and switching of branches
The current situation of my repository branches is as follows:
Create a branch
Now we create a new branch, dev. The commands to create a branch and view the branch are as follows:
git branch 分支名 git branch # git branch dev # git branch dev * master
Switch branch
The branch has been established successfully. Now let's switch to a new branch. The command to switch branches is as follows git checkout branch name
# git checkout dev Switched to branch 'dev'
Now, we make some modifications in the new branch, then commit, and then switch Go to the master branch, make some changes and submit. Then, we look at the status of the branch.
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
One command to create and switch branches
git checkout -b 新分支名
Branch merging
First introduce a scenario, which is very common:
A system has been online
The system needs to be updated with a new feature, so you create a new branch (dev) and work on this branch.
At this time, a problem suddenly occurred in the system and required urgent investigation and processing.
Then, at this time you need to switch to the online version (master) first, then create a new branch (fixbug) and correct the errors on the new branch
After completing the test, switch to the online branch, then merge the fixbug branch, and then push the changes to the online branch.
Finally, we can switch to the dev branch to continue working.
Currently, the status of our repository is as follows:
Now, we need to create a new branch and add new ones on the new branch Function.
git checkout -b dev
Then make some modifications on the new branch.
At this time, it was discovered that a serious bug appeared online and needed to be dealt with urgently. Well, first I need to switch to the master branch. But an error occurred during the switch
$ 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
We often encounter the above error, this is becauseWhen merging branches, the workspace and staging area must be "clean". There are two ways to achieve the above requirements
Submit changes
Temporary storage
We are here Use staging method to demonstrate
$ 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
The above is the detailed content of Version control tool Git - branch management. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Running the H5 project requires the following steps: installing necessary tools such as web server, Node.js, development tools, etc. Build a development environment, create project folders, initialize projects, and write code. Start the development server and run the command using the command line. Preview the project in your browser and enter the development server URL. Publish projects, optimize code, deploy projects, and set up web server configuration.

Under the BeegoORM framework, how to specify the database associated with the model? Many Beego projects require multiple databases to be operated simultaneously. When using Beego...

GiteePages static website deployment failed: 404 error troubleshooting and resolution when using Gitee...

Which libraries in Go are developed by large companies or well-known open source projects? When programming in Go, developers often encounter some common needs, ...

The problem of using RedisStream to implement message queues in Go language is using Go language and Redis...

The H5 page needs to be maintained continuously, because of factors such as code vulnerabilities, browser compatibility, performance optimization, security updates and user experience improvements. Effective maintenance methods include establishing a complete testing system, using version control tools, regularly monitoring page performance, collecting user feedback and formulating maintenance plans.

There are two ways to convert XML to Excel: use built-in Excel features or third-party tools. Third-party tools include XML to Excel converter, XML2Excel, and XML Candy.

Resource management in Go programming: Mysql and Redis connect and release in learning how to correctly manage resources, especially with databases and caches...
