常用的git分支管理方法都在这了

目录

一、分支管理定义     

二、分支管理的预备知识

1. 分支管理的区域

 2. git文件的四种状态

三、分支管理策略

1. 查看新建分支

a. 修改git远端仓库地址

b. 查看分支

c. 新建分支 

2. 操作分支 

a. 切换分支

b. 关联分支

c. 删除分支

四、push分支

1. 忽略文件        

2. push命令



一、分支管理定义     

        几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线,使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作,Git 分支实际上是指向更改快照的指针。

        其作用显然是方便开发:企业在开发项目中一般少不了四个分支:

master分支:用于版本的更新,当比较大的功能开发完成或者更新之后会有一次集体的发版,就会将所有的代码都合到master(有的公司也会用release分支发版,原理都是一样);

dev分支:一般是开发测试分支,在项目发版上线之前都会现在dev分支上统一进行测试,确保功能达标没有bug之后再推到master分支;

feature分支:用来做分模块功能开发,建议命名为feature-xxx,模块完成之后,会合并到 dev 分支;

hotfix分支:是用来做线上的紧急 bug 修复的分支,建议命名为 hotfix-xxx。当线上某个版本出现了问题,将检出对应版本的代码,创建 Hotfix 分支,问题修复后,合并回 dev和master  ,这里注意,合并到 master 的时候,一般要打上修复后的版本标签。

二、分支管理的预备知识

1. 分支管理的区域

a. 本地分支:

  • Workspace:工作区,就是vscode中日常开发存放项目代码的地方

  • Index (Stage):暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息

  • History:本地仓库,就是安全存放数据的位置,这里面有你提交到所有版本的数据,其中HEAD指向最新放入仓库的版本。

b. 远程分支

  • Remote Directory:远程仓库,托管代码的服务器,即公司的 git仓库 DevOps

        一般开发过程中,我们会把本地与远程的分支名设为同名。那怎么区分呢?远程分支名前面有 remote origin 标志!各个区域的关系如下图所示:

 2. git文件的四种状态

        在从远端下载项目代码时,要求是用命令行 clone代码,而不是鼠标点击下载一个压缩文件,区别在于,clone下来的文件夹里有个.git目录,关于文件版本等的所有信息都在这个目录里面!它也是你能够进行分枝管理版本控制的基础。

        版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。

  • Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

  • Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件

  • Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !

  • Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

三、分支管理策略

        一般来说,项目开发的流程为:从代码仓库的master分支下clone下项目的工程代码,然后基于当前master分支新建自己的feature分支进行开发,这个要注意本地和远程分支的关系(不清楚的可以看我上篇文章git入门)。开发完成之后就推到dev测试,通过测试之后就可以merge合到master,合到master分支的操作一般叫 “提mr” , 通过公司的DevOpps流水线操作。如果临时需要新增什么小功能或者修复什么小bug可以 “ 提热更”,也就是从master分支拉个hotfix分支,进行修改然后直接测试完合到master分支。

具体分支管理如下:

1. 查看新建分支

a. 修改git远端仓库地址

git remote set-url origin URL   // 更换远程仓库地址,URL为新地址。

b. 查看分支

git branch

1.1 git branch 不带参数,查看本地已经存在的分支,并且在当前分支的前面有 * 标记; 

1.2 后面加上 -a 参数可以查看所有分支列表,包括本地和远程,远程分支一般会用红色字体标记出来
如果用git branch -a没有显示全部的远程分支,可以通过git fetch将本地远程跟踪分支进行更新,与远程分支保持一致。

1.3 后面加上 -vv 参数可以显示本地所有分支追踪(关联)的远程分支的情况,最后面是最近一次提交commit的注释。


 

c. 新建分支 

        git branch 后面加上新建的分支名 (branchname) 即可完成本地分支的建立(分支内容与master一样,因为在新建分支时的当前所处分支为master(*标识) ,也即你是基于master新建的test分支),并且此分支仅存在于本地。

2. 操作分支 

        包括:切换、删除、关联远程

a. 切换分支

        2.1 倘若需要查看本地新建的 test 分支情况,需要切换到本地分支

git checkout (branchname)

        2.2 新建切换可以合为一步:新建并切换到新分支,常用!!!

$ git checkout -b test2

         2.3 切换到远程分支(常用!!!)

        比如说我现在test1分支,想查看远端test2的代码(此时本地会新建并切换一个分支,当然你可以把这个本地的分支名设置成与远端同名)下面我演示设置不同名的情况:

git checkout -b [local name] [origin name]

b. 关联分支

        2.4 本地新建的分支,需要关联远程的某个分支才能 push 成功,否则会出现一下报错,关联命令会自动提示,按提示关联远程分支后会在远端新建一个同名的远程分支

当然你也可以先关联再push:

git branch --set-upstream-to=origin/xxx分支名
git remote add origin  远端仓库地址

c. 删除分支

 2.5 删除远程分支

git push origin --delete test2

 2.5 删除本地分支,注意不能删除当前所在分支,不然会报错,只能删除非当前分支

git branch -d test2

四、push分支

1. 忽略文件        

有些时候我们不想把某些文件纳入版本控制中,比如依赖包node_modules(很大)、dist文件、临时文件、日志文件yarn-debug.log*等,在主目录下建立".gitignore"文件,此文件有如下规则:

  1. 忽略文件中的空行或以井号(#)开始的行将会被忽略;

  2. 可以使用通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等;

  3. 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略;

  4. 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略;

  5. 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。


#为注释
*.txt        #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt     #但lib.txt除外
/temp        #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/       #忽略build/目录下的所有文件
doc/*.txt    #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

2. push命令

git push 命令用于从将本地的分支版本上传到远程并合并:

git push <远程主机名> <本地分支名>:<远程分支名>
如果本地分支名与远程分支名相同,则上述命令可以省略‘ :<远程分支名> ’,如将本地的 master 分支推送到 origin 主机的 master 分支:
git push origin master

如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数,但一般不建议使用。多人协作时,若push失败时应当自行处理完冲突再push,而不是用以下命令。

git push --force origin master

此外,前文中直接使用 git push 进行push,仅适用于本地和远程分支已关联并且同名的情况!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白目

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值