分支作用
在开发过程中,项目往往是由多人协作开发的,因此将多人编写的代码整合在一起成为一项困难而复杂的任务。另外,项目还需要备份和版本迭代,所以不能只有一个版本。因此,分支成为一个很好的解决方案。
分支机构相互独立,不同部门在不同分支机构发展。分支是由主分支构建的。分支代码独立运行、无错误后集成到主分支中,保证主分支是稳定、可部署的代码。分支的存在大大提高了开发效率。
分支机构一般分为主分支机构和其他分支机构。不同的程序员在分支上编写代码,代码正确后再合并到主分支(通常是master分支)。每个程序员的代码都集成到主分支中。
分支也可以进行版本迭代。第一个开发的版本合并到master1主分支作为第一个版本,二次开发时合并到master2作为第二版本,代码不会丢失。
Git分支管理
初始化仓库
分支依赖于仓库,因此分支需要在git仓库构建。git命令支持使用git init
初始化一个空的git仓库。
git init
git分支
git branch
命令是分支管理命令, 有如下功能:
- 查看分支机构
- 创建分支
- 删除分支
- 重命名分支
- 设置上游分支
- 将分支推送到远程存储库
# 查看本地分支
git branch
默认情况下,只列出本地分支,不显示远程分支,并且当前分支前面使用*。
刚初始化的仓库是没有分支的,如果复制项目到当前目录,并绑定远程仓库,最后执行git push origin master
命令就会自动在本地和远程仓库生成master分支。(推荐)
当然也可以直接在本地创建分支,git提供了git branch [branchName]
来兴建一个分支。
出现上面错误的原因是"库是空的,无法创建主分支",需要添加内容并提交到工作区,也就是执行如下命令:
git add .
git commit -m "xxx"
执行命令后git仓库就有内容了,并且git系统自动以此内容创建一个master
主分支
# 查看远程分支
git branch -r
git branch --remotes
# 查看所有分支包含远程和本地
git branch -a
git branch --all
# 查看分支提交的详细信息
git branch -v
git branch --verbose
查看远程仓库的分支时,注意绑定远程分支仓库。
# 创建本地分支
git branch help
#git checkout -b 创建并切换到新的分支
git checkout -b <branch>
# 切换到指定分支
git checkout <branch>
git checkout -b <branch>
=git branch <branch>
+git checkout <branch>
# 将本地分支推送到远程仓库(创建远程仓库分支)
git push origin <local_branch>:<remote_branch>
# 简写
git push -u origin <local_branch>
# 删除一个名字为branchName的分支,如果该分支有提交未进行合并,则会删除失败。
git branch -d <branchName>
# 强制删除一个名字为branchName 的分支
git branch -D <branchName>
# 删除远程分支
git push origin -d <branch>
git push origin :<branch>
# 重命名当前分支
git branch -m <branch>
# 重命名指定分支
git branch -m <old-branch> <new-branch>
git 结账
git checkout
切换分支和创建分支的命令。git checkout命令可以切换通过git branch命令创建的分支。每个分支都是一个独立的项目空间。
签出分支将更新当前工作区中的文件,使其与签出分支的提交版本状态一致。此后,工作区中的所有更改都将记录在检出的分支上。该操作可以被认为是选择您想要修改的工作分支。
git checkout 命令有时会与 git clone 命令混淆。这两个命令最显着的区别是 git clone 用于从远程存储库获取代码,而 git checkout 用于在本地系统中已存在的代码库的不同版本之间进行切换。
# 切换本地分支
git checkout <branch>
# 切换远程分支
git checkout -t <origin/xxx>
在不同分支下改变目录下的文件,提交到工作区的内容时不一样的。也就是说当切换分支后,就是一个独立的空间,这个空间工作区的内容由git add
和git commit
决定,最后git push
推送该分支的代码。
分公司项目拉动
在git管理的项目中提供了两种方法拉取远程项目git clone
和git pull
两个命令。在分支中git clone
和git pull
是不一样的,前者是面向公开项目的,g后者就是用户本地和远程仓库传输的。
git clone
是作用于主分支,将主分支克隆到本地,这个过程无需密码验证,任何开发者都可以将远程仓库的主分支地址拉取到本地(只作用于主分支)。
git pull
可以在任意分支上从远程的任何分支拉取项目,此过程需要密码验证。在管理本地分支项目与远程分支项目时都是使用该命令。
远程分支也是可以直接拉取到本地的,通过git fetch
命令。
# 在本地新建一个xiaoxu分支,并将远程origin仓库的master分支代码下载到本地xiaoxu分支
git fetch origin master:xiaoxu
# 取回origin主机的master分支
git fetch origin master
# 将某个远程主机的更新,全部取回本地
git fetch <远程主机名>
# 取回特定分支的更新
git fetch <远程主机名> <分支名>