Branch は Git のキラー アプリケーションです。他のバージョン管理ツールとは異なり、git はブランチの作成と切り替えが非常に効率的です。
ブランチの概要
ブランチとは何ですか?私たちがよく知っているシナリオから始めましょう。発売された製品には新しい機能を追加する必要があります。この時点で、元のブランチで開発を続けると、すでに起動されているアプリケーションなので、起動する前にテストする必要があるため、非常に不便になります。一般に、私たちのアプローチは、新しいブランチを作成し、この新しいブランチ上で新しい機能を開発し、テスト後にそれらをメイン ブランチにマージすることです。
#ブランチの作成と切り替え
私のリポジトリ ブランチの現在の状況は次のとおりです:
ブランチの作成
次に、新しいブランチ dev を作成します。ブランチを作成し、ブランチを表示するコマンドは次のとおりです。git branch 分支名 git branch # git branch dev # git branch dev * master
ブランチの切り替え
ブランチは正常に確立されました。新しいブランチに切り替えましょう。ブランチを切り替えるコマンドは次のとおりです git checkout ブランチ名# git checkout dev Switched to branch 'dev'次に、新しいブランチにいくつかの変更を加えてコミットします。次に、「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 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マージまず、非常に一般的なシナリオを紹介します。
次に、新しいブランチを作成し、新しいブランチを追加する必要があります。新しいブランチ関数のもの。
git checkout -b dev次に、新しいブランチにいくつかの変更を加えます。
この時点で、オンライン上に重大なバグが発生しており、緊急に対処する必要があることが判明しました。まず、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上記のエラーがよく発生します。これは、
ブランチをマージするとき、ワークスペースとステージング領域が「クリーン」である必要があるためです
。上記の要件を達成するには 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)
新功能完成后,提交到版本库。
冲突解决
现在我们新的功能完成了,那么就可以把它合并到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 中国語 Web サイトの他の関連記事を参照してください。