一、clone项目的问题
(解决git clone只有master分支的问题_mengxianglong123的博客-CSDN博客)
我们在使用 git clone + 远程仓库地址将项目下载下来之后,倘若远程仓库有多个分支,我们会发现,使用git branch查看本地分支时,只有一个master分支
git branch
会出现:
* master
但是,大多时候我们是需要在其他分支进行工作的,所以我们需要将远程的其他分支拉下来才可以,首先,先使用git branch -a查看远程分支,那些以rmotes开头且为红色的都是远程分支,或者理解为这些分支是隐藏的
git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/feature
remotes/origin/feature-im
remotes/origin/master
remotes/origin/newbranch
如果想要将远程分支与本地分支联系起来,则执行(以feature分支为例)
git checkout -b feature origin/feature //在本地创建分支dev并切换到该分支
现在
git branch
会出现
* feature
masterl
或者使用-t参数,它默认会在本地建立一个和远程分支名字一样的分支
git checkout -t origin/feature
接着还需要
git pull origin dev //把gitLab上dev分支上的内容都拉取到本地了
二、gitlab的一些常用操作
取之前:先做Git config设定uer.name和user.email
1.拉取代码
git clone xxx //克隆代码
git branch -a //查看所有分支 -r 远程 缺省 本地
//如果远程不存在origin/dev
git checkout -b dev //建立本地分支 -b并且切换到这条分支
git push origin dev // 建立远程仓库
git branch --set-upstream-to=origin/dev //dev 和远程dev关联
//如果远程已经存在origin/dev
git checkout -b dev origin/dev //创建本地分支dev,并且和远程origin/dev分支关联
git pull origin dev //拉取dev分支代码
2、开始在dev开发
git checkout dev //切换到dev分支进行开发
// 开发代码之后
// 第一个:如果功能开发完成了,可以合并主分支
//在add 和 commit后
//==注:如果先切主分支合并再推到远程也行,这样其实是先切到主分支,
// 合并本地主分支,再push到远程,不过这样要确定master是最新的(git pull),不然会冲突
git checkout dev // 切换到dev远程分支
git push # 提交dev分支到远程
git checkout master // 切换到主分支
git merge dev // 把dev分支的更改和master合并
git push // 提交主分支代码远程
// 第二个:如果功能没有完成,可以直接推送
git push // 提交到dev远程分支
//注意:在分支切换之前最好先commit全部的改变,除非你真的知道自己在做什么
//根据最新的Tag版本创建本地分支
git checkout -b dev2 最新tag
//推送本地分支到远程
git push --set-upstream origin dev2
测试时如果想删除分支
git push origin --delete dev // 删除远程dev分支
git checkout master // 切换到master分支
git branch -d dev // 删除本地dev分支
回退
//如果有错误的开发,未添加或者提交至本地库,需要回退
git checkout 文件名.后缀 // 会直接还原文件,需要add的话就git add 文件名.后缀
git checkout . //还原所有修改
// 如果有错误的开发已经添加/提交至本地库,需要回退
git log//查看log --oneline以单行显示修改记录
git reset xxx(commitId) //回退到指定版本
git reset HEAD^ //回退到上一版
git reset –hard origin/master //回退到远程那版
git reset --hard xxx //回退到某个指定版本,回退前所有的修改丢掉
//git本地回退到指定版本后,直接push 会有错
git push --force //强制push
//如果出现You are not allowed to force push code to a protected branch on this project.
//让项目的管理员暂时在gitlab上把你要提交的分支设置为不受保护的分支
两个分支的合并
选择好后点击compare branches and continue,下面那个合并后删除分支的最好还是先不选
不要勾选delete source branch
好了,你已经无敌了(开个玩笑)
假如分支合并的时候有冲突
其思想是:想要在本地操作后,检查无误,再push到远端
就是切换到合并分支,拉取最新的代码,再dev分支上输入命令进行合并,这时在本地就会有冲突文件,修改并检查无误后,再push到远端
三、经验
fetch和pull
fetch:会从远程拉取代码,然后通过merge命令,在本地合并
pull:会从远程拉取,但是你修改过的他不会更新,也不会说冲突
功能命令
git log //查log。 --oneline
git status //查状态,看是不是什么没有commit或push
master回退
git log --oneline //先查找要回退到的commit id
git pull //把branch更新到最在新,注意不会更新本地修改过的文件哦
git branch -m master z_dis_master_2020.0521_after_cec524ff //重命名master
git push origin z_dis_master_2020.0521_after_cec524ff //备份分支push到远端
git checkout -b master cec524ff //创建本地master,回退到cec524ff(这个就是commit id)
之后去gitlab 把master保护和default去除,见下图,并且删除master
git push --set-upstream origin master //把本地备份的master push到远端
又把master default和protected 给加上
找出回退版本Commit id(cec524ff)的后一个Commit id,假如是c906468e
git branch -a --contains c906468e // 根据找到的后一个Commit id查找所有影响到的Branch
告诉团队成员叫他们及时与修改后的保持一致
根据commit id查找 branch
git branch --contains <Commit id> 查看本地仓库包含特定Commit id的Branch
git branch -r --contains <Commit id> 查看远端仓库包含特定Commit id的Branch
git branch -a --contains <Commit id> 查看所有(本地/远端)包含特定Commit id的Branch
命名参考
• Feature Branch 特征分支– For WI registered JIRA: < JIRA issue key>e.g: HL-1882
• Comment of Commit change to feature branch– Start with [ <branch name> ]e.g: [HL-1882], comment for Workitem.
• Title for merge request– [ from branch ] -> <to branch>e.g: [HL-1882] -> DEV (ps: 如果Branch包含-,Branch name用中括号括起来)
• Comment of Commit for merge request– [ from branch ] -> <to branch>e.g: [HL-1882] -> DEV
• Project Main branch 工程主分支– <YYYYMM>_<project short name >, no space, combine with character,”.”,”_”– E.g : 202112_xxxx• Tags– For QAS transport: NO tag need, each merge request has a QAS version– For PRD: PRD_<YYYY.MMDD.HHMI>_<first 8 char of commit_ID >• E.g : PRD_2021.0506.1630_e2a0bf92– Discard Tag:z_dis_PRD _<YYYY.MMDD.HHMI>_<first 8 char of commit_ID >• E.g : z_dis_PRD_2021.0506.1630_e2a0bf92• Discarded Branch– z_dis _ <old branch name>_<YYYY.MMDD, date of rollback happen>_after_<first 8 char of commit_ID that discard after>– E.g : z_dis_master_2020.0507_after_a8970ec3z_dis_DEV_ 2020.0507_after_a8970ec3
这个JIRA Issue 先占个位