1.分支的概念理解示意图:
svn创建分支比较笨:一份数据多大,创建时候就是多大,所以创建分支很慢。
git创建分支很快:不管一份数据多大,只记录变化的数据,创建分支都是秒级别的。
2.分支管理:(查看分支、创建分支,切换分支、合并分支)
A)分支查看、创建、切换格式:
git branch #查看当前所在分支
git branch 新分支名 #创建新分支
git checkout 新分支名 #切换到新分支
B)分支合并格式:
先切到要合并到的分支,如:master
$git checkout 要合并到的分支
$git merge 要合并的分支 如:将dev分支合并到master则: $git checkout master && $git merge dev
C)删除分支格式:
git branch -d 要删除的分支名 如删除dev分支:git branch -d dev
例子:
yuanww@yuanww-PC MINGW64 /
$ cd e:/
yuanww@yuanww-PC MINGW64 /e
$ ls
'$RECYCLE.BIN'/ 'System Volume Information'/ 安装后虚拟机/
KuGou/ teamviewer13破解版(双击即可运行)/ 光盘/
new_cangku/ test/ 计划任务相关/
QMDownload/ test01/ 未安装软件/
qqpcmgr_docpro/ test2/ 重要笔记/
yuanww@yuanww-PC MINGW64 /e
$ mkdir fenzhi_cangku
yuanww@yuanww-PC MINGW64 /e
$ cd fenzhi_cangku
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku
$ git init
Initialized empty Git repository in E:/fenzhi_cangku/.git/
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ ls -a
./ ../ .git/
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
工作区创建开发代码:
fenzhi1.txt 内容:fenzhi1 111111111
将工作区代码依次提交到暂存区和本地仓库:
yuanww@yuanww-PC MINGW64 /
$ cd e:/fenzhi_cangku
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ ls
fenzhi1.txt
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ git add .
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ git commit -m "第一个提交代码到仓库"
[master (root-commit) c813b6f] 第一个提交代码到仓库
1 file changed, 1 insertion(+)
create mode 100644 fenzhi1.txt
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
查看本地仓库的所在分支,并创建新的分支dev,然后切换到新分支dev创建代码2:
$ git branch #a)查看分支
* master
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ git branch dev #b)创建新分支:dev
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ git branch
dev
* master
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ git checkout dev #c)切换到新分支dev
Switched to branch 'dev'
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
$ git branch
* dev
master
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
相应的工作目录虽然文件内容还和之前一样,但是其也成了一个全新的目录,此时在dev分支上开发代码,如下:
在新分支dev上开发代码后,依次提交到本地仓库dev分支:
yuanww@yuanww-PC MINGW64 /
$ cd e:/fenzhi_cangku
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
$ ls
fenzhi1.txt new_dev.txt
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
$ git status
On branch dev
Untracked files:
(use "git add <file>..." to include in what will be committed)
new_dev.txt
nothing added to commit but untracked files present (use "git add" to track)
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
$ git branch
* dev
master
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
$ git add .
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
$ git status
On branch dev
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: new_dev.txt
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
$ git commit -m "提交dev分支代码到dev分支"
[dev dd917bb] 提交dev分支代码到dev分支
1 file changed, 1 insertion(+)
create mode 100644 new_dev.txt
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
$ git status
On branch dev
nothing to commit, working tree clean
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
切换到原来master分支,查看代码:(查看master分支代码)
$ cd e:/fenzhi_cangku
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
$ git branch
* dev
master
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
$ git checkout master #切换到master分支
Switched to branch 'master'
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ git branch
dev
* master
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
到本地工作目录查看代码:(master的)
fenzhi1.txt: fenzhi1 111111111
再切换到dev分支,查看dev分支的代码:
yuanww@yuanww-PC MINGW64 /
$ cd e:/fenzhi_cangku
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ git branch
dev
* master
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ git checkout dev #再切换到dev分支
Switched to branch 'dev'
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
$ git branch
* dev
master
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
到本地工作目录查看代码:(dev的)
fenzhi1.txt: fenzhi1 111111111
new_dev.txt: dev 222222222222
将dev分支的代码合并到master分支:
yuanww@yuanww-PC MINGW64 /
$ cd e:/fenzhi_cangku
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
$ git branch
* dev
master
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (dev)
$ git checkout master
Switched to branch 'master'
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ git branch
dev
* master
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ git merge dev #合并分支dev到master上,需要先切换到master分支,然后再合并dev分支
Updating c813b6f..dd917bb
Fast-forward
new_dev.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 new_dev.txt
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ git branch
dev
* master
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ git branch -d dev #删除分支dev
Deleted branch dev (was dd917bb).
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
$ git branch
* master
yuanww@yuanww-PC MINGW64 /e/fenzhi_cangku (master)
此时,到本地工作目录查看代码:(master的)查看,dev分支的代码已经合并过来,如下:
fenzhi1.txt: fenzhi1 111111111
new_dev.txt: dev 222222222222