gitlab版本管理使用

1.本地配置gitlab

参考培训ppt https://docs.qq.com/slide/DWUxER2FxS0xSSVdl
1.1 配置账号
私有化部署的gitlab地址:http://.200.9.131:/
1.2 在本地配置ssh key
ssh-keygen -t rsa -C "gitlab账号名称"
#一路按enter,查看/.ssh/id_rsa.pub文件(是用户名的目录,windows为“C:\Users\你的用户名”这个目录,windows用户可以去.ssh文件夹中找到id_rsa.pub,用记事本打开)

1.3 复制到Gitlab SSH keys页面
在这里插入图片描述

1.4 测试连接
ssh -T git@10.200.9.131
在这里插入图片描述
出现欢迎词,说明配置成功

2.常见IDE使用git

在gitlab上新建一个项目之后,可在本地进行克隆、修改、上传等操作
新建项目步骤:
在这里插入图片描述
在这里插入图片描述

2.1 vscode使用git

2.1.1 vscode代码下载与上传
将代码仓库下载到本地:
在这里插入图片描述
本地修改代码
上传代码:
在这里插入图片描述

2.1.2 vscode冲突解决
查看冲突
在这里插入图片描述

选择“保留双方更改(在实际应用中根据实际情况选择冲突解决方式):
在这里插入图片描述

2.2 IDEA使用git

2.2.1 IDEA代码下载与上传
在这里插入图片描述
本地修改代码
上传代码:
在这里插入图片描述
2.2.2 IDEA冲突解决
查看冲突
在这里插入图片描述
在这里插入图片描述

在实际应用中根据实际情况选择冲突解决方式:
在这里插入图片描述

3.git使用规范

3.1.git提交原则

●在第一次提交之前,建立.gitignore文件,将那些不需要提交的文件忽略掉(例如,密码文件,中间生成的文件和目录,本地设置的文件,临时文件,日志文件等),可以参考

HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/

### VS Code ###
.vscode/

●如果提交的代码库中已经有一些中间文件了,需要先在源代码库中删除这些文件,然后本地添加.gitignore,重新提交。以后在提交就不会有中间文件。
●一次提交只包含一个相关的改动。例如,在一次提交中解决一个 bug,或者在一次提交中增加一个新功能。最好不要出现,在一次提交中,既添加了一个新功能,又包含了 bug 修复。这样的好处是,(1)在git revert时,可以方便的撤销那个 commit 的改动。(2)对开发团队的其他成员来说,更容易理解你做的改动。
●在提交(git commit)之前,一定要经过完整的测试,每天定时将代码上传到代码库。
●在本地仓库中,提交到 master 分支后,及时推送(git push)到远程仓库中。
●获取远程代码(git pull)之前,最好要查看当前本地仓库的状态git status。
●如果已经把commit 推送到远程仓库服务器了,就不要轻易对本地仓库中的该commit做改动,例如,不要使用git reset、git rebase、git commit --amend对该commit修改。
●commit message 写的简洁明确,以便其他人明确你的改动意图。commit message 是指 git commit 时写的注释信息。如果你刚刚提交的注释(git commit -m “注释”)写的不清楚,在git push到远程仓库之前,可以通过git commit --amend -m "新的注释"来替换刚才的注释。如果你想在之前的注释上修改,则可以执行git commit --amend
commit message 遵循如下几个原则:
1.区别标题(subject) 和内容(body)(可选),用空行隔开
2.subject 一般不超过50个字符, 主要展示开发了什么功能(如果太多功能应该多次commit)
3.subject 首字母大写
4.subject 结尾不需要句号结尾
5.body 每一行控制在72个字符
详细的举几个示例是这样的:
1.chore: run tests on travis ci
2.fix(server): send cors headers
3.feat(blog): add comment section
4.docs: update readme for development
commitlint 常用到的有以下几种类型:
■feat: 新功能
■fix: 修复 bug
■chore: 对构建或者辅助工具的更改(CICD)
■refactor: 对现有代码进行一定的重构
■style: 不影响代码含义的更改 (例如空格、格式化、少了分号)
■docs: 单纯的对文档进行修改
■perf: 提高性能的代码更改
■revert: 撤回提交
■test: 添加或修正测试
●提交之后,用git log看一下提交历史。用git log -p查看更多的改动信息。用git log --name-status或git log --name-only查看修改了哪些文件。
●编写易于理解的Readme:使用markdown工具编写Readme文件,需要说明使用方式、适用版本、依赖等
●代码merge时,需要版本管理员及相关的开发同时进行代码的检查,检查通过之后在进行合入。设置方法:
1.在代码库设置保护分支,即release、master分支,将分支设置成只有Maintainers能merge,不能直接push:

2.创建merge request,将reviewer指定同项目组开发人员

3.管理员可以查看代码,并将评论集合作为一次review,让提交者进行更改

4.提交者修改代码后更新提交,管理员通过之后可以点击Approve和Merge进行合并

●代码库命名规范:使用“-”分割不同的单词,不允许使用数字开头,代码库名称需要和代码库功能相关。例如容器云的相关服务:

3.2 分支管理规范

Aoneflow分支规范在这个文档里面有阐述,但是有一些不符合我们项目周期较长的情况,且没有自动集成等机制,此处对分支合并管理做一些修改和补充:
在日常开发过程中,开发一系列功能时,先从master拉取分支,如feature/001,feature/002,要保证拉取分支的功能都是解耦合的。将代码进行定时的合入,比如在每个人测试完成后,将各自的开发分支两周合入一次,合入到release/tmp分支中,测试完成将原分支删除。下一个周期开发,从release/tmp重新拉取分支进行开发,保证本次拉取的代码是每个模块的最新代码。在最终测试、开发完成之后,将相应的功能点合入到release/prod、release/test分支中。

4.git常用命令

命令 含义
git clone <repository_url> 克隆一个git工程,git工程的url为 <repository_url>
git clone --recurse-submodules <repository_url> 克隆一个git工程,并同时下载子模块。
git clone && git submodule update --init --recursive git项目包含子模块,在git clone之后,需要用git submodule update --init --recursive下载子模块。
git submodule status 在git工程中,查看子模块。
git clone --config http.proxy=127.0.0.1:53152 <repository_url> 下载时,临时加上代理,通常在代理经常变的情况下用。
git config --global --add http.proxy 127.0.0.1:53152 设置全局代理(–global,多个git工程会共用这个代理。也可以进入到某个git工程中,设置单独的代理,此时不需要–global参数。
git config -e --global 编辑全局配置,-e也可以写作–edit。
git config -l 查看当前的配置。默认查看全局的配置,如果在某个git工程下,也可以查看该git工程的配置。
git status 查看工作区的状态
git log 查看日志。有大量的参数可以定制,最好根据自己的喜好做定制化的日志格式。
git log --oneline 或 git log --pretty=oneline 查看日志,每个commit只占一行。
git log --oneline --graph 查看日志,commit占一行,以图形化的方式显示。
git log --name-status 或 git log --name-only 查看日志,包含改动的文件状态或文件名。
git log -p 查看日志,显示文件差异。
git log -1 查看最后一次的日志
git log -p -2 查看最近两次的commit的日志,显示文件差异。
git log --stat 查看日志,显示简要的增改行数统计。
git log --pretty=format:“%h %an %ar : %s” 查看日志,显示格式为『commit hash 作者名 修改日期 : commit注释』 , h为hash,an为author name,ar为author date relative,即相对日期(例如3天前)。%s为commit注释。format的格式也很多,可以自己定制。
git log --author=“Colin Cross” 仅仅查看Colin Cross提交的commit。
git log --graph --oneline --decorate --all 查看日志,图形化显示、commit注释只占一行,显示refs信息(例如显示873940d (origin/revert-310-develop),或者显示5879d52 (tag: 2.4.4)。–all显示所有的refs。
git pull 从远程仓库服务器拉取文件的改动,合并到本地工作目录中。相当于git fetch和git merge的组合。
git pull origin master 当本地工作目录中没有创建任何『跟踪』链接(–track),就需要指定从哪个仓库的哪个分支抓取文件。此例中,抓取远程仓库origin的master分支
git diff 在未执行git add之前,可以用此命令查看做了哪些改动,即当前工作目录中的文件 和 HEAD 所在的版本之间的差异。
git diff --cached 或 git diff --staged 执行完git add之后,可以用这两个命令来查看
git diff master…another_branch 比较master分支和another_branch分支,看看another_branch分支上的哪些改动并不在master分支上。
git diff b1a94d8…35ce525, git diff commit1…commit2 比较两个commit的差异,commit2相对于commit1的差异。b1a94d8为base,显示的结果是35ce525相对于b1a94d8的改动。
git branch <branch_name> 创建分支,例如创建feature_develop分支:git branch feature_develop
git branch -v 显示项目中的本地分支,并且给出HEAD所在的commit,以及commit message
git branch -l 显示本地分支,只有分支名字
git branch -a 显示本地分支和远程分支
git stash 保存当前的改动到储藏区,储藏的名称为stash@{0},最新的储藏名称是从0开始,以前储藏的名字中数字更大。
git stash list 查看储藏的列表(可以储藏多次,所有储藏的内容以列表展示)
git stash pop 取回最新储藏的内容,然后从储藏区中删除。
git stash apply 根据 stashname 取回指定的改动内容。那些改动还在储藏区中。用git stash drop 可以删除掉不用的内容。
git checkout feature_develop 检出到 feature_develop 分支上。git checkout完成两件事:(1)HEAD指针指向 feature_develop 分支。将工作目录中的文件切换到 feature_develop 上的版本。
git checkout master 切换回 master 分支
git merge feature_develop git merge的两个步骤。(1)切换到需要接收改动的分支上。(2)执行git merge <branch_name>。例如,此例中,将 feature_develop 分支上的改动 合并到 master 分支上。
git checkout <tag_name> 获取<tag_name>指定的版本。
git remote -v 查看远程git工程的fetch url 和 push url。
git config -l 查看git工程的配置信息,其中包括url、email、name等。
git branch -va 查看所有分支的简要信息
git fetch 抓取远程仓库的数据,默认取 origin 仓库。注意,此命令不会将远程仓库的改动合并到当前的工作目录中。
git fetch crash-course-remote 抓取远程仓库 crash-course-remote 的数据
git checkout --track crash-course-remote/faq-content 创建一个新的本地分支faq-content(与远程分支同名),并切换到这个新分支上,并且将本地分支与远程分支建立跟踪联系(–track)。
git checkout – <file_name> 在你还没有提交(git commit)之前,想撤销某个文件的修改,可以使用这个命令。
git reset --hard HEAD 当你想清掉还没有提交的所有本地改动时(上一次提交之后的改动),可以使用此命令,但需要慎重。警告:此命令将会导致本地改动被清掉,并且无法恢复。
git reset --hard 2be18d9 回滚到commit 2be18d9上,即把commit 2be18d9之后的其他commit都删掉了,而且你本地的未提交的改动也被删掉了。所以需要慎重使用。
git reset --keep 2be18d9 回滚到commit 2be18d9上,即把commit 2be18d9之后的其他commit都删掉了,但是你本地的未提交的改动仍然保留着。
git revert 2b504be 撤销 commit 2b504be。即,把commit 2b504be上的改动再改回来。
git merge --abort 或 git reset --hard 撤销合并,回到合并前的状态。注意:这两个命令用在merge过程中或者merge完成的时候,是撤销合并的功能。git reset --hard 用在其他场合,将会清除本地未提交的改动,所以要慎重使用。
git blame <file_name> 可以查看文件中每一行代码是谁提交的,在什么时候提交的

5.参考文献

https://blog.csdn.net/bbcckkl/article/details/111087267
##6.常见问题收集
###6.1 使用vscode提交代码上传失败,一直转圈
原因:提交时没有添加commit信息
解决方案:提交时添加commit信息
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值