Home > Development Tools > git > Version control tool Git - branch management

Version control tool Git - branch management

齐天大圣
Release: 2020-06-22 10:26:09
Original
3101 people have browsed it

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:

1

2

3

4

5

6

7

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

1

2

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

1

2

3

4

5

6

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

1

2

3

4

5

6

$ 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

1

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.

1

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

1

2

3

4

5

$ 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

1

2

3

$ git stash

$ git checkout master

Switched to branch 'master'

Copy after login

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

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

1

$ git checkout -b fixbug

Copy after login

合并分支

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

1

2

$ git checkout master Switched to branch 'master'

$ git merge fixbug

Copy after login

删除分支

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

1

2

$ git branch -d fixbug

Deleted branch fixbug (was cca73bb).

Copy after login

现在,我们可以继续在dev分支上工作了。我们需要把之前暂存的内容取出来。

1

2

3

4

5

6

7

8

9

10

11

12

$ 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分支上了。现在我们来演示合并时遇到冲突时,如何去解决。

1

2

3

4

5

6

7

$ 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合并的时候有冲突,我们来看看该文件

1

2

3

4

5

6

7

8

$ cat index.php

<?php

 

<<<<<<< HEAD

echo &#39;hello world&#39;;

=======

echo &#39;version 1.1 finished&#39;;

>>>>>>> dev

Copy after login

1

<br/>

Copy after login

1

2

3

$ cat index.php

<?php

echo &#39;version 1.1 finished&#39;;

Copy after login

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

1

$ git commit -m &#39;merge dev&#39;

Copy after login

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

1

$ 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!

Related labels:
git
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template