多人协同开发git提交仓库管理

⭐多人协同开发流程:

项目负责人创建好远程仓库:master主分支

团队几个人分配到不同的任务后我需要把仓库的master分支内的代码pull到本地的master,然后基于本地master内的代码新建子分支进行开发,开发完成后将子分支的代码合并到master分支然后提交master分支

新建一个文件夹然后进行下面的操作:

注意:项目中的一些依赖包文件夹一定要加上忽略(.gitignore文件中配置需要忽略的文件夹),仓库中只存放代码,不存放依赖项这些

# 忽略依赖包
/node_modules
/unpackage
# 忽略环境
.hbuilderx
.DS_Store

1、初始化本地仓库git init

2、连接远程仓库(远程仓库起名为origin)git remote add origin '远程仓库地址'

3、拉取(拉取+合并)origin远程仓库下的master分支中的内容到本地仓库的当前分支下(master)

注:现在本地master分支内的代码就是仓库的代码,需要基于这个代码进行开发

注:在首次拉取仓库代码时可以使用git clone '仓库地址'来拉取项目代码到指定文件夹

git pull origin master

4、创建本地的tabbar子分支

下面的命令创建子分支后会把master分支中的内容复制到子分支里

git checkout -b tabbar

如果想要根据远程分支来创建本地分支(不想复制其他分支代码):

# 先更新远程仓库分支
git fetch origin
# 根据远程test分支创建本地test分支并切换到新建的本地分支
git checkout -b test origin/test

注意:创建了分支之后进行代码开发,开发完毕后就将开发的代码add然后commit到子分支里

5、将当前项目的改动代码(即自己负责的任务开发的代码)添加到暂缓区

方法一:git add -A会将项目中所有变化了的文件都添加到暂缓区(修改的、新增的、删除的)

方法二:git add 修改的文件1 修改的文件2(从当前项目根目录为起点,比如./main.js)

git status查看所有有改动的文件

注意: 总结一下git add 的三种方法

git add -A  提交所有变化(下面两种的结合)
git add -u  提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add .  提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件

6、将代码提交到本地仓库的tabbar分支(当前分支)git commit -m "描述"

7、更新本地master(为了将最新的master合并到子分支确保子分支和master同步)

git checkout master

git pull origin master

8、更新本地的tabbar子分支(子分支合并最新master,确保子分支和master同步)

git checkout tabbar

git merge master

9、将包含有项目代码的tabbar分支提交到远程仓库的tabbar分支

注意git push origin a:b代表将本地a分支提交到远程的b分支,如果本地分支和远程分支名相同,就按下面的写法

git push origin tabbar10、切换到本地仓库主分支准备合并子分支代码git checkout master

11、再次拉取(拉取+合并)origin远程仓库下的master分支中的内容到本地仓库的当前分支下(master分支)(确保当前master分支中的内容是最新的,因为可能同事会随时合并更新master分支内容)git pull origin master

12、合并本地的tabbar分支到本地的master分支(加上–allow-unrelated-histories避免报错)git merge tabbar

或者: 使用cherry-pick合并某一个commit而不是整个分支:

git log   # 查看需要合并的commit号   (commit所在的分支上进行)
git cherry-pick commit号   #(需要合并的分支上进行)

13、将本地已经合并了代码的master分支提交到远程仓库的master分支(更新操作)git push origin master

14、删除本地的tabbar子分支(下一次需要继续在子分支开发就不用删除)git branch -d tabbar

至此就完成了包含自己负责的那一部分代码的分支(子分支)的提交以及向远程仓库的master主分支合并自己的代码(子分支)的操作

在下一次开发时,和上面的步骤一样,此时远程仓库存在自己提交的子分支,这一次开发就可以将本地创建的子分支提交到远程仓库中属于自己的那一个子分支(子分支合并),其他步骤都和上面一样

⭐补充命令:

工作区和暂存区的区别

工作区: 就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。

版本库: 工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

使用Git提交文件到版本库有两步:

第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。

第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。

git cherry-pick使用场景

对于一个项目有三个分支hwj/feat、master、release,其中hwj/feat分支是自己的开发分支(和master分支对应,每次代码更新是从master分支pull合并),master分支是项目主分支(所有项目代码都在这个分支)、release是上线版的分支(master分支中的部分代码由于未开发完成所以在这个上线版分支中会被砍掉)

现在在自己的hwj/feat分支上开发了新代码需要更新到master分支和release分支,由于master分支和hwj/feat分支主体是同一套代码,不会存在冲突覆盖代码,所以在hwj/feat分支commit/push后可以直接master分支git merge hwj/feat来合并hwj/feat实现master分支代码的更新,而对于release分支,由于hwj/feat分支是依赖的master分支,所以release不能直接合并hwj/feat分支代码(直接合并会导致release代码中添加进本来被砍掉了的master分支中的代码),就需要git cherry-pick来合并本次更新的代码而不是整个hwj/feat分支的代码

git cherry-pick使用步骤:首先hwj/feat在git commit提交的代码是本次更新部分的代码,通过在hwj/feat分支执行git log找到本次更新的这个commit的id(比如xxxx),然后切到release分支通过git cherry-pick xxxx来合并本次commit更新部分的代码(这样就避免了通过直接git merge hwj/feat合并整个分支的代码导致的代码混乱)

git stash代码放入暂存区

使用场景:在a分支修改了代码,但是此时需要切换到b分支进行操作,如果直接切换会提示a分支更新的代码还未提交,此时就可以在a分支使用git stash将代码放入本地的暂存区,然后就可以切换到b分支,再切回a分支时使用git stash pop恢复放入暂存区的代码(相当于栈)

git reset代码回退

重置当前分支代码(重置暂存区和工作区代码)到上一个commit

git reset --hard

重置当前分支代码到指定的commit

git log   # 查看需要重置到的commit号# 重置暂存区代码,工作区不变(当前分支指针为指定的commit,相当于切换到当前的commit,还可以再切换回去)
git reset commit号
# 重置暂存区和工作区代码(当前分支的HEAD头节点为指定的commit,相当于把当前commit之后的commit都删除了,当前commit成为当前分支第一个commit)
git reset --hard commit号
git tag代码标签

当需要给提交的代码打标签时,就可以使用git tag

使用场景:main正式环境分支部署的ci流程是git push代码后不会执行部署的操作,只有git tag 标签名给代码打上版本号的标签才会执行一次代码的部署操作

在这里插入图片描述

这个使用push了当前分支到仓库后不会触发部署流程,需要在push了当前分支代码后再git tag生成标签并push标签到仓库才能触发部署流程

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值