首页 > 其他分享 >git在团队协作中的使用

git在团队协作中的使用

时间:2024-04-07 19:33:07浏览次数:26  
标签:git -- 协作 master workerA txt 团队 分支

Git的工作流程图

基本命令:

clone:从远程仓库克隆代码到本地仓库

checkout:从本地仓库检出一个仓库分支,然后进行修订

add:在提交前,先将代码提交到暂存区

commit:提交到本地仓库。本地仓库中保存修改的各个版本

fetch:从远程仓库抓取到本地仓库,不进行合并操作(使用较少)

pull:从远程仓库拉取到本地仓库,总合并,然后放到工作区

push:修改完成后,需要和团队成员共享代码,将代码推送到仓库

status:查看一些状态信息

log:查看提交日志

commit的工作流程

log命令的查看

alias git-log='git log --pretty=oneline --abbrev-commit --all --graph'

--pretty=oneline 表示commit信息压缩成一行

--abbrev-commit表示commitID最小长度

--all显示所有分支的提交

--graph以图的形式显示

版本回退

版本切换:git reset --hard commitID

具体了解 reset 不同参数对本地仓库、暂存区和工作区的影响。

commitID 可以通过 git log 查看

已经删除了的分支可以通过 git reflog 分析出来删除的分支的 commitID

告诉git别管哪些文件

创建一个 .gitignore 文件,在里面写上不用git管理的文件(可以使用通配符)

比如我不想 .a 后缀不需要管理,所以我们就可以在 .gitignore 写上 *.a

被选中的文件不在通过git进行管理。

git的分支

真实的开发中是会使用很多个分支的,分支之间经常会产生冲突,下面我就通过类似实验的方式,一步步探究:git的分支是如何产生的。


假设在最开始,一个人单人开发一个 master 分支,这个分支的状况如下

master 分支原来只有一个人开发,并把内容写在 master.txt 中。

后来,本项目变成了两个人开发,这个时候,一条分支不够用了,需要另外一条分支。

两个人商议决定开一条新的分支 workerA 给新加入进来的人开发

git checkout -b 新分支名

可以创建一个新分支,并切换到新分支中

workerA 刚创建好的项目状况如下:

由于 master.txt 是已经有人在开发了,workerA 只能另开一个工作文件 workerA.txt 来进行开发。

注意:在workerA.txt创建完成后,但还没有commit到workerA分支时,master是能看见workerA.txt的。

按理说master不合并workerA分支是看不见workerA分支新增的内容的,但上述的情况除外。

假设一段时间过后,workerAworkerA.txt 里完成了很多东西,但 master 没做任何事。master 分支能正确地合并 workerA 分支而不发生冲突吗?

合并前的状态:

合并后的状态:

这里给人的感觉就是:master 分支什么都没做,直接转入了workerA的劳动成果。

可以发现,在上述情况下,并不会出现分支合并冲突的情况。


以上面的结果为起始状态,workerA 又在 workerA.txt 上写了一些东西,而这一次 master 也干了点正事,写了一些东西在 master.txt 中。

这个时候,masterworkerA 合并,会不会发生冲突?

合并前:

合并后:

可以发现,两个分支依旧能正常合并,不会产生冲突。


通过上述实验,大概可以判断一件事:

不同的分支如果工作在不同的文件中,不管他们怎么样改变自己的文件的状态,最终都能不会产生冲突地合并。


那如果 workerA 不满意 master 所写的 master.txt 内容,想要将其全部进行修改。而 master 不知道 workerA 所做的修改,依然在 master.txt 上工作,那最终很可能产生冲突。

先将上一步的 master 合并到 workerA 以更新其状态

下面我就来进行实验。master.txt 的初始状态如下:

workerA 对其工作区的 master.txt 做出了修改并commit,做出的修改如下:

而master只是单纯对master.txt增加了一些东西:

这种情况下,master 合并 workerA 会不会产生冲突?

合并前:

此时,冲突产生,git帮我们标记处了冲突的地方,让我们做出选择。


根据上面的结果,可以分析出怎样的结论?

只要各分支工作在只属于自己的工作区上,不去干扰其他分支的工作区,那就可以避免冲突。

可是,我们可能会想:执行的时候可能只有一个主函数,如果我们需要测试自己的代码,那不都是要改主函数吗?

关于这个问题,如果我们是用Java进行开发,那Junit可以一定程度上解决这个问题,因为每个人都能拥有自己的测试类。

但是对于其他编程语言,我能想到的方案就是,你可以修改main函数,但永远记住不要commit它,这样就不会让别人看见你修改了main,冲突就不会发生。


从这里我们可以窥探到真实开发中的一些情况:一个团队肯定是通过分支进行协作的,每个人各自工作在自己的工作区上,不去影响他人的代码(信任你的同事)。

如果写好的代码想要进行测试,其实可以将使用的方法交给测试人员,让测试人员进行测试,他会告诉你测试的结果,你需要进行改进(信任你的同事)。

如果你认为自己的代码还没有完成,需要通过调试的方式完成编写,可以去改main函数,但不要将其加入暂存区也就是不要 git add 这样的话你的修改没有commit就是没有修改,合并依然能正常进行。

标签:git,--,协作,master,workerA,txt,团队,分支
From: https://www.cnblogs.com/Aderversa/p/18119743

相关文章

  • 谷歌 Rust 团队工作效率是 C++ 团队的两倍
    谷歌Rust团队工作效率是C++团队的两倍来源:OSCHINA编辑: 白开水不加糖2024-04-0116:01:00 22国产数据库圈,为啥那么多水货?”谷歌Android工程总监LarsBergstrom在近期举行的RustNation大会上,介绍了该公司将Go或C++编写的项目迁移到Rust语言的......
  • 学习 Git 基础知识 - 日常开发任务手册
    欢迎来到我关于Git的综合指南,Git是一种分布式版本控制系统,已经在软件开发中彻底改变了协作和代码管理方式。无论你是经验丰富的开发者还是刚开始编程之旅的新手,理解Git对于正确掌控代码、高效管理项目和与他人合作至关重要。在本教程中,我将带领你了解Git的基础知识......
  • UOS:安装git并访问私有仓库gitlab
    学习自:linux安装git命令行工具,Linux平台上安装Git及其配置-CSDN博客 1、判断UOS上是否已经安装过了git学习自:linux如何判断是否安装git•Worktile社区方法一:git--version如果安装了,会输出git版本号信息;如果没安装,会提示找不到该命令。方法二:包管理器如果是D开头的UO......
  • 提升团队工程交付能力,从“看见”工程活动和研发模式开始
    作者:张裕、雅纯理想中的研发团队应当具有以下特征:总是工作在最高优先级的事项上理想的研发团队能够识别并始终集中精力在当前最紧迫和最有价值的任务上。这需要团队具备出色的项目管理能力和决策能力,以便能够正确评估优先级,做出合理的工作分配,并快速适应项目需求的变化。......
  • 提升团队工程交付能力,从“看见”工程活动和研发模式开始
    作者:张裕、雅纯理想中的研发团队应当具有以下特征:总是工作在最高优先级的事项上理想的研发团队能够识别并始终集中精力在当前最紧迫和最有价值的任务上。这需要团队具备出色的项目管理能力和决策能力,以便能够正确评估优先级,做出合理的工作分配,并快速适应项目需求的变化。......
  • Git设置了多个remote,如何设置默认Push和Pull的remote?
    太长不看版其实就是通过设置upstream来指定默认的remote,具体如下。先设置好remote,然后执行一次gitpush-uoriginmaster设置默认值,下次使用gitpush/gitpull就会指向默认的remote了。介绍要设置追踪分支(upstreambranch),你可以使用gitpush命令的-u或--set-upstre......
  • Gitlab接入Oauth2.0
    配置Gitlab的SSO接入文档OmniAuthOauth2.0添加Gitlab配置里面包含的JWT配置后续再添加样例,可以忽略gitlab_rails['omniauth_enabled']=true#启用SSO配置gitlab_rails['omniauth_auto_link_user']=["oauth2_generic"]#自动关联已经存在的账号gitlab_rails[......
  • centos7:编译升级 openssh:主要参考“https://github.com/boypt/openssh-rpms”
    参考“https://github.com/boypt/openssh-rpms”  “Releases·boypt/openssh-rpms(github.com)” 安装人家大牛的文档来操作即可。可选的,自行定制 version.env,可进行各种组合! BackportOpenSSHRPM/SRPMforoldCentOSAsimplescripttobuildlatestOpen......
  • 怎么知道git 有没有配置好?
    要检查Git是否已经正确配置,可以按照以下步骤进行:确认安装:打开命令行工具(Windows上的CMD、PowerShell,Mac或Linux上的终端)。输入 git--version 并按回车键。如果显示出Git的版本号,说明Git已经成功安装。当你在终端或命令提示符窗口输入上述命令并按回车键后,将会输出......
  • 学习Git是啥
    本章介绍         本章教学Git,我将带大家了解什么是Git并且教大家如何安装和使用Git一、了解Git的基本概念         git是一种分布式版本管理控制工具,呐我们为什么要用它勒?        给你设计一个场景:有一天老师给木子发了一个Java作业要他写一个......