はじめに:
何らかの形でほとんどすべてのバージョン・コントロール・サポート・ブランチ。あなたが開発のメインラインからあなたの仕事を取ることができ、使用の分岐手段は、開発のメインラインに影響を与えないように、分離しました。
Gitの分岐モデルはそうGitのバージョン管理システムから目立つ、このため特性を、その「涅槃特性」と呼びます。Gitの仕方ブランチは、操作が完了した第二段階の新しいブランチを作成し、信じられないほど軽量で、かつ同じの異なるブランチ間のスイッチング動作が容易です。
Gitのブランチは、実際には、基本的に揮発性の提出物への単なるポインタです。Gitリポジトリのデフォルトのブランチはマスターです。複数回を提出した後、実際には、我々はすでにオブジェクトの最終提出にマスター分岐点を持っています。彼は自動的にコミット操作のそれぞれに前方に移動します。
私たちの練習は、状況に以下が発生する場合があります。
- ウェブサイトの開発。
- 特定の新しい要件を達成するために、ブランチを作成します。
- このブランチで作業。
- その瞬間、あなたは突然、緊急の修復を必要とする非常に深刻な問題があったことを電話がありました。次のように処理されます。
- あなたの支線(生産ブランチ)に切り替えます。
- この喫緊の課題のために新しいブランチを作成し、それをどこに修正します。
- 試験後、支線にスイッチバックを通過し、その後、枝の最後の行にパッチブランチプッシュ変更をマージ。
- ブランチ上の元の仕事にスイッチバックを変更した後、仕事を続けます。
その他のgitの上の詳細、または会場とその公式文書に!
ボーエンの概要:
1は、ユーザと電子メールアドレスのディレクトリを初期化すると宣言し
、2作成、削除、および高速のマージブランチ
、解決の競合ブランチ3
4を、迅速な合併オフ
5、バグブランチ
6、Gitのブランチの管理に関連するコマンドを
1、ディレクトリおよび初期化ステートメントのユーザーと電子メールアドレス
[root@git ll]# git init
[root@git ll]# git config --global user.name admin
[root@git ll]# git config --global user.email [email protected]
2、削除、および高速のマージブランチを作成
[root@git ll]# echo "aaaa" > branch.txt
[root@git ll]# git add branch.txt
[root@git ll]# git commit -m "第一次提交 From master"
#创建一个分支并进入新建的分支
[root@git ll]# git checkout -b dev
[root@git ll]# git branch #查看当前所在分支
* dev #星号所在的列就是当前所在分支
master
#在dev分支更新文件并提交
[root@git ll]# echo "bbbb" >> branch.txt
[root@git ll]# git add *
[root@git ll]# git commit -m "commit From dev branch"
[root@git ll]# cat branch.txt #确认当前内容
aaaa
bbbb
[root@git ll]# git checkout master #切换到master分支
[root@git ll]# cat branch.txt #确认当前内容
aaaa
[root@git ll]# git merge dev #合并dev分支
[root@git ll]# cat branch.txt #再次查看其内容
aaaa
bbbb
[root@git ll]# git log --graph --pretty=oneline --abbrev-commit #查看提交日志
#可以查看到其提交日志前面的星号是在同列的,这是因为采用的是快速合并的方法(默认)
#稍后会写下关闭快速合并,然后可以对比该命令查看的结果
* bc8bd7b commit From dev branch
* 8bb6874 第一次提交 From master
[root@git ll]# git branch -d dev #删除dev分支
3、解決の競合ブランチ
あなたがリポジトリにコミットする前に、あなたはブランチで作業しているファイルの内容が変更DEVある紛争、当社の実務経験の問題の支店では、その後、マスターブランチの内容は、この時間を変更しましたdevの枝の下で、あなたのコンテンツがこのケースを提出する古いマスターであるよりある、競合の概念の支店があるだろう、栗、次のように:
[root@git ll]# cat branch.txt #查看master分支的此文件内容
aaaa
[root@git ll]# git checkout -b dev #创建并切换至自己的工作分支
#对文件内容进行修改并提交到版本库
[root@git ll]# echo "bbbb" >> branch.txt
[root@git ll]# git add branch.txt
[root@git ll]# git commit -m "alter from dev"
[root@git ll]# cat branch.txt #查看文件内容
aaaa
bbbb
[root@git ll]# git checkout master #切换至master
[root@git ll]# cat branch.txt #master下的文件内容还是原来的
aaaa
#修改master下的文件内容并提交
[root@git ll]# echo "cccc" >> branch.txt
[root@git ll]# git add branch.txt
[root@git ll]# git commit -m "alter from master"
[root@git ll]# cat branch.txt #此时master下的文件内容如下
aaaa
cccc
#接下来将dev分支进行合并:
[root@git ll]# git merge dev #返回如下报错信息,说有冲突
自动合并 branch.txt
冲突(内容):合并冲突于 branch.txt
自动合并失败,修正冲突然后提交修正的结果。
#解决合并冲突
#其实有上述报错后,dev分支下的内容已经存在了master目录下的文件中,只是没有提交而已,提交即可
#但是工作中不建议直接提交,因为内容有些特殊的地方
[root@git ll]# vim branch.txt #此时文件的内容如下
aaaa
<<<<<<< HEAD
cccc
=======
bbbb
>>>>>>> dev
[root@git ll]# cat branch.txt #将冲突报错产生的特殊符号删除再提交
aaaa
cccc
bbbb
[root@git ll]# git add branch.txt
[root@git ll]# git commit -m "冲突已解决"
[root@git ll]# git log --graph --pretty=oneline --abbrev-commit #查看分支合并情况
* da2bcdb 冲突已解决
|\
| * 6abac82 alter from dev
* | 2b5d2f0 alter from master
|/
* ef014ec alter from master
4、迅速な合併を閉じます
上記言って、パフォーマンスのその分岐構造の提出履歴を表示gitのバージョンの時には、迅速な統合は、デフォルトのオプションで有効になってすぐにオフにマージする方法をここに書き留めているためであるので、直感的ではありません。
#进入分支,修改文件内容,并提交
[root@git ll]# git checkout -b dev
[root@git ll]# echo "ffff" >> branch.txt
[root@git ll]# git add branch.txt
[root@git ll]# git commit -m "关闭快速合并"
#切换至master分支,进行合并
[root@git ll]# git checkout master
[root@git ll]# git merge --no-ff -m "分支合并说明" dev #选项“--no--ff”就是关闭快速合并
[root@git ll]# git log --graph --pretty=oneline --abbrev-commit
#再次查看提交日志,
* 38c4fad Merge branch 'dev'
|\
| * 9233297 关闭快速合并
|/
* 7e0ea1b 冲突已解决 #从这里开始向上看,可以看到是经过一个分支才提交的
|\
| * f9180c9 alter from dev
* | 107081a alter from branch/bug
|/
#以下是最初没有关闭快速合并的分支合并操作,可以看到只有一列星号,而不显示分支
* bc8bd7b commit From dev branch
* 8bb6874 第一次提交 From master
[root@git ll]# git branch -d dev #删除dev分支
5、バグブランチ
分岐が強いため、開発プロセスの開発者は、バグ修正と当たり前のように同じバグは、gitの中で、必要なので、バグは、その後、分岐とマージ、修理後、新しい一時的なブランチによって修復することができます一時的なブランチは削除されます。
私たちはバグ修正タスクを受信すると、それが提出することができない、途中で分岐修正それが、現在進行中の仕事を作成したいのが自然であるが、即時修理のバグ、この時間を必要とする、あなたはgitのことができますスタッシュ機能は、「アップストア」、およびので、復旧サイトの後に作業を継続することができ、現在の作業領域を提供します。
半分の作業状態に作業ゾーン次のように:
[root@git ll]# cat branch.txt
aaaa
cccc
bbbb
[root@git ll]# echo "dddd" >> branch.txt
[root@git ll]# git status #提示修改但是尚未提交
# 位于分支 dev
# 尚未暂存以备提交的变更:
# (使用 "git add <file>..." 更新要提交的内容)
# (使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
# 修改: branch.txt
#
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
非表示にするには、この時点で、作業領域
[root@git ll]# git stash #就是这条命令,可以将当前工作区隐藏
[root@git ll]# git status #再次查看当前工作区,就是干净的了
# 位于分支 dev
无文件要提交,干净的工作区
[root@git ll]# cat branch.txt #文件也没有我们新加的内容
aaaa
cccc
bbbb
masterブランチと仮定して不具合を修正しました。
#切换至master分支并进入bug分支修改
[root@git ll]# git checkout master
[root@git ll]# git checkout -b bug
[root@git ll]# echo "eeee" >> branch.txt
[root@git ll]# git add branch.txt
[root@git ll]# git commit -m "alter from bug"
#切换至master分支合并修改后的bug分支
[root@git ll]# git checkout master
[root@git ll]# git merge bug
[root@git ll]# cat branch.txt #合并后的文件内容如下
aaaa
cccc
bbbb
eeee
[root@git ll]# git branch -d bug #删除bug分支
#回到dev分支恢复之前修改的内容继续自己的工作
#有两种恢复方法:
#一是使用 git stash apply 恢复,但是恢复后,stash 内容并不删除,需要用 git stash drop 来删除;
#另一种方式是用 git stash pop,恢复的同时把 stash 内容也删了;这里我采用第二种方法
[root@git ll]# git stash pop #恢复存储区的内容
[root@git ll]# cat branch.txt #我们之前的内容又回来了
aaaa
cccc
bbbb
dddd
#最后工作完成,在合并dev分支的时候,也会有分支冲突,可以参考前面解决分支冲突的方法
6、Gitのブランチ管理関連のコマンド
[root@git ll]# git checkout -b ops #创建ops分支并切换到ops分支
[root@git ll]# git checkout master #切换至master分支
[root@git ll]# git merge dev #快速合并dev分区到当前分支
[root@git ll]# git branch -d ui #删除ui分支
[root@git ll]# git branch #查看所在分支(用星号表示所在分支)
[root@git ll]# git log --graph --pretty=oneline --abbrev-commit
#查看分支合并图
[root@git ll]# git merge --no-ff -m "合并时提交信息" dev #不使用快速合并分支
[root@git ll]# git stash #将当前版本库的状态临时存储
[root@git ll]# git stash pop #恢复并删除临时存储的信息
[root@git ll]# git stash apply #恢复临时存储信息,但不删除信息
[root@git ll]# git stash drop #删除临时存储中的信息
[root@git ll]# git stash show #查看临时存储的信息
[root@git ll]# git branch -D dev #强制删除一个分支
[root@git ll]# git remote #查看当前版本库是否属于远程版本库
[root@git ll]# git remote -v #查看远程版本库的详细信息
[root@git ll]# git push origin dev #将本地dev分支推送到远程仓库
[root@git ll]# git checkout -b dev origin/dev #创建本地dev分支并关联到远程仓库的dev分支
[root@git ll]# git pull #抓取远程分支,一般用于解决冲突
[root@git ll]# git branch --set-upstream-to=origin/dev dev #将本地分支dev关联到远程仓库的dev分支