ホームページ  >  記事  >  開発ツール  >  バージョン管理ツール Git - ブランチ管理

バージョン管理ツール Git - ブランチ管理

齐天大圣
齐天大圣オリジナル
2020-06-22 09:56:592939ブラウズ

Branch は Git のキラー アプリケーションです。他のバージョン管理ツールとは異なり、git はブランチの作成と切り替えが非常に効率的です。

ブランチの概要

ブランチとは何ですか?私たちがよく知っているシナリオから始めましょう。発売された製品には新しい機能を追加する必要があります。この時点で、元のブランチで開発を続けると、すでに起動されているアプリケーションなので、起動する前にテストする必要があるため、非常に不便になります。一般に、私たちのアプローチは、新しいブランチを作成し、この新しいブランチ上で新しい機能を開発し、テスト後にそれらをメイン ブランチにマージすることです。

#ブランチの作成と切り替え

私のリポジトリ ブランチの現在の状況は次のとおりです:

バージョン管理ツール Git - ブランチ管理

ブランチの作成

次に、新しいブランチ dev を作成します。ブランチを作成し、ブランチを表示するコマンドは次のとおりです。

git branch 分支名
git branch

# git branch dev
# git branch
  dev
* master

ブランチの切り替え

ブランチは正常に確立されました。新しいブランチに切り替えましょう。ブランチを切り替えるコマンドは次のとおりです git checkout ブランチ名

# git checkout dev
Switched to branch 'dev'

バージョン管理ツール Git - ブランチ管理

次に、新しいブランチにいくつかの変更を加えてコミットします。次に、「Go」を 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 - ブランチ管理

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

ブランチの作成と切り替えを行う 1 つのコマンド

git checkout -b 新分支名

# #Branchマージまず、非常に一般的なシナリオを紹介します。

    システムがオンラインになりました
  • システムは新しい機能で更新する必要があるため、新しいブランチ (dev) を作成し、このブランチで作業します。
  • この度、システムに突然問題が発生し、緊急の調査と処理が必要となりました。
  • # したがって、この時点では、まずオンライン バージョン (マスター) に切り替えてから、新しいブランチ (fixbug) を作成し、新しいブランチでエラーを修正する必要があります
  • テストが完了したら、オンライン ブランチに切り替えて、fixbug ブランチをマージし、変更をオンライン ブランチにプッシュします。
  • 最後に、dev ブランチに切り替えて作業を続けることができます。
  • 現在のリポジトリのステータスは次のとおりです:

次に、新しいブランチを作成し、新しいブランチを追加する必要があります。新しいブランチ関数のもの。 バージョン管理ツール Git - ブランチ管理

git checkout -b dev

次に、新しいブランチにいくつかの変更を加えます。

この時点で、オンライン上に重大なバグが発生しており、緊急に対処する必要があることが判明しました。まず、master ブランチに切り替える必要があります。しかし、切り替え中にエラーが発生しました バージョン管理ツール Git - ブランチ管理

$ 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

上記のエラーがよく発生します。これは、

ブランチをマージするとき、ワークスペースとステージング領域が「クリーン」である必要があるためです

。上記の要件を達成するには 2 つの方法があります

変更の送信
  • 一時ストレージ
  • ここにあります ステージング手法を使用してデモします
  • $ 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)

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

    バージョン管理ツール Git - ブランチ管理

    冲突解决

    现在我们新的功能完成了,那么就可以把它合并到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.

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

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

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

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

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

    $ git branch -d dev

以上がバージョン管理ツール Git - ブランチ管理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。