Home Development Tools git Version control tool Git - branch management

Version control tool Git - branch management

Jun 22, 2020 am 09:56 AM
git

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:

Version control tool Git - branch management

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
Copy after login

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'
Copy after login

Version control tool Git - branch management

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'
Copy after login

Version control tool Git - branch management

$ git log --oneline --decorate --graph --all
* ca4589c (HEAD -> master) add config file
| * 43a5a8f (dev) add config.php
|/
* 19e3186 add index.php
* 9cc82f9 first commit
Copy after login

One command to create and switch branches

git checkout -b 新分支名
Copy after login

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:

Version control tool Git - branch management

Now, we need to create a new branch and add new ones on the new branch Function.

git checkout -b dev
Copy after login

Then make some modifications on the new branch.

Version control tool Git - branch management

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
Copy after login

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'
Copy after login

当你切换分支的时候,Git 会重置你的工作目录,使其看起来像回到了你在那个分支上最后一次提交的样子。

现在,我们新建fixbug分支,在这个分支上修复bug。

$ git checkout -b fixbug
Copy after login

合并分支

修复完成且测试通过时,就可以把它合并到master上了。合并使用git merge 分支名

$ git checkout master Switched to branch 'master' 
$ git merge fixbug
Copy after login

删除分支

这个时候,fixbug功能已经完成了,可以将它给删除掉了。

$ git branch -d fixbug 
Deleted branch fixbug (was cca73bb).
Copy after login

现在,我们可以继续在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)
Copy after login

新功能完成后,提交到版本库。

Version control tool Git - branch management

冲突解决

现在我们新的功能完成了,那么就可以把它合并到master分支上了。现在我们来演示合并时遇到冲突时,如何去解决。

$ git checkout master
Switched to branch &#39;master&#39;

$ git merge dev
Auto-merging index.php
CONFLICT (content): Merge conflict in index.php
Automatic merge failed; fix conflicts and then commit the result.
Copy after login

提示我index.php合并的时候有冲突,我们来看看该文件

$ cat index.php
<?php

<<<<<<< HEAD
echo &#39;hello world&#39;;
=======
echo &#39;version 1.1 finished&#39;;
>>>>>>> dev
Copy after login
<br/>
Copy after login
$ cat index.php 
<?php 
echo &#39;version 1.1 finished&#39;;
Copy after login

然后再add并提交,最后在提交

$ git commit -m &#39;merge dev&#39;
Copy after login

这个时候就合并成功了,现在就去删除dev分支吧。

$ git branch -d dev
Copy after login

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!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to run the h5 project How to run the h5 project Apr 06, 2025 pm 12:21 PM

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.

How to specify the database associated with the model in Beego ORM? How to specify the database associated with the model in Beego ORM? Apr 02, 2025 pm 03:54 PM

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...

Gitee Pages static website deployment failed: How to troubleshoot and resolve single file 404 errors? Gitee Pages static website deployment failed: How to troubleshoot and resolve single file 404 errors? Apr 04, 2025 pm 11:54 PM

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

Which libraries in Go are developed by large companies or provided by well-known open source projects? Which libraries in Go are developed by large companies or provided by well-known open source projects? Apr 02, 2025 pm 04:12 PM

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, ...

How to solve the user_id type conversion problem when using Redis Stream to implement message queues in Go language? How to solve the user_id type conversion problem when using Redis Stream to implement message queues in Go language? Apr 02, 2025 pm 04:54 PM

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

Does H5 page production require continuous maintenance? Does H5 page production require continuous maintenance? Apr 05, 2025 pm 11:27 PM

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.

How to convert xml to excel How to convert xml to excel Apr 03, 2025 am 08:54 AM

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.

In Go programming, how to correctly manage the connection and release resources between Mysql and Redis? In Go programming, how to correctly manage the connection and release resources between Mysql and Redis? Apr 02, 2025 pm 05:03 PM

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

See all articles