使用Git进行多人协同开发

一:Linux常用命令回顾

由于Git命令行的操作是基于Linux的所以我们有必要回顾一下Linux的相关指令,以便于我们能更便捷的操作。

1)cd : 改变目录。
2)cd . . 回退到上一个目录,直接cd进入默认目录
3)pwd : 显示当前所在的目录路径。
4ls(ll): 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。
5)touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。
6)rm: 删除一个文件, rm index.js 就会把index.js文件删除。
7)mkdir: 新建一个目录,就是新建一个文件夹。
8)rm -r : 删除一个文件夹, rm -r src 删除src目录
9)mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,当然, 这样写,
必须保证文件和目标文件夹在同一目录下。
10)reset 重新初始化终端/清屏。
11)clear 清屏。
12)history 查看命令历史。
13)help 帮助。
14)exit 退出。
15)#表示注释

二、Git的基础配置

1.查看配置 git config -list
在这里插入图片描述
2.查看不同级别的配置文件:

#查看系统
git config --system --list 

#查看当前用户(global)配置 
git config --global --list

3.设置用户名与邮箱(用户标识,必要

git config --global user.name "xxx" #名称 
git config --global user.email 666666666@qq.com #邮箱

三、Git的常用指令

1.本地仓库的创建

创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。

#在当前目录新建一个Git代码库 
git init

#克隆一个项目和它的整个代码历史(版本信息) 
git clone https://gitee.com/xxxx/test.git

2.代码的上传提交

#上传代码到本地仓库 
git add .

#上传代码到中间缓存区 
git commit -m "备注信息"

#上传代码到远程仓库(例如:Gitee) 
git push

#git清理被删除远程分支在本地库的缓存 
#使用git过程中,如果远程分支被删除,在本地使用git branch -a还是可以看到这些被删除分支。可以通过git remote prune 命令实现清理
git remote prune origin 

#更新出远程分支索引
git fetch
 

3.代码提交冲突的解决

在开发中我们经常会遇到两个人提交的代码不一致的情况,这就需要我们找到这些冲突,然后两个人在一起讨论一下,做一下代码的取舍,解决冲突之后在提交。

下面举一个简单的例子
初始状态下,远程仓库中有一个空的demo1.txt文件
大家都使用pull命令使自己的本地仓库保持到了最新状态

张三修改了demo1.txt文件后上传
在这里插入图片描述
然后,李四也修改了demo1.txt文件并上传
在这里插入图片描述
这个时候李四再提交时就会产生冲突
在这里插入图片描述
那么李四就需要从远程仓库中pull下来最新的代码,然后解决冲突并提交,
这里会显示出现冲突的地方在哪里
在这里插入图片描述
打开这个文件
在这里插入图片描述
最后两个人经过商量之后,进行一些代码的取舍后再进行提交。
在这里插入图片描述
在这里插入图片描述
远程仓库中显示
在这里插入图片描述

三、Git的分支详解

1.什么是分支

我们知道每次我们commit的时候都会生成一个快照,或者说一个版本库,然后通过Blob对象存储文件快照内容,然后Tree对象记录快照索引目录,通过索引找到文件快照;
那么问题来了:每一个快照(版本库)又是怎样的组合到一起的呢?
我们可以根据一个版本号,让当前工作空间的文件回退到某个版本,其实Git会将这些快照串成一条条的时间线,而这些时间线就是我们的:分支。

假如我们不创建并切换到其他分支上,那么每次commit生成的快照都会被串到一条线上,而这条时间线又叫master分支或者主分支,除了这个master分支外,我们还要知道一个东西
就是HEAD指针,这个指针是指向正在工作的本地分支,我们前面的版本回退,其实就是修改的是HEAD指针的指向而已!比如:git reset HEAD^就是将HEAD指针前移,指向上一个快照
而已,可能你还不是很理解,没事,我们撸一发命令,然后来波图解就好~

这里我们新建四个文件,然后每次add一个文件后commit,
然后我们键入:git log --graph --all

在这里插入图片描述

2.为什么要创建其他分支

我以前也是这样想的,在上一家公司,我和另外的同事就是这样干的…把东西都丢到master分支上,感觉没什么不对,当然,这种做法是可以的,项目小可以,整个项目就一个master分支,
但是这样做其实并不好!下面列举两点吧:

第一点,我们一般的项目都是一步步迭代升级的,一般都会有大版本和小版本的更新,大版本更新一般是改头换面的一个更新,比如UI大改或者架构大改之类的,然后版本是:v2.0.0这样;而小版本的更新一般是一些细节的小改,比如UI修改和bug的修复,或者优化等,然后版本是:v2.0.11这样;只有一条master分支,意味着你的分支线会非常非常的长,假如你发布了第二个大版本,而用户反馈你的第一个版本有一个很严重的Bug,你要切回之前的版本,够呛的哈!

第二点,效率问题,假如某一次提交后出现冲突了,而这个冲突很难解决,那么就会卡在这里,
那么就无法向后再开发了,又或者说master上的分支出现了很大的问题,同样也无法接着开发。

当然,不好的地方远远不止上面两个,我们得想办法来解决这个问题,而一个简单而有效的
方法就是创建其他的分支,然后按照一定的分支策略来管理我们的项目版本!一种最简单和常用的分支策略就是:

在master分支上开辟一个新的develop分支,然后我们根据功能或者业务,
再在develop分支上另外开辟其他分支,完成分支上的任务后,
再将这个分支合并到develop分支上!

master分支和develop分支都是长期分支,而我们创建的其他分支则是临时性分支!

简单概括下各个分支都拿来干嘛吧:

master分支:可直接用于产品发布的代码,就是正式版的代码
develop分支:日常开发用的分支,团队中的人都在这个分支上进行开发
临时性分支:根据特定目的开辟的分支,包括功能(feature)分支,或者预发布(release)分支,又或者是修复bug(fixbug)分支,临时性分支用完之后一般都会删除,使得代码库的常用分支始终
只有两个长期分支!

3.分支的创建与切换

#创建分支
git branch 分支名

#查看分支
git branch或者git branch -a

在这里插入图片描述

此时,尽管我们创建了develop分支,但是HEAD指针还指向master分支,我们继续commit的话,都会在master分支上进行,我们需要切换一下当前分支,即修改HEAD指针的指向!

#切换分支
git checkout 分支名

其实,分支的创建和切换只需要下面的一个指令就可以完成了:
git checkout -b 分支名

新建本地分支与远程分支关联
git branch --set-upstream-to=origin/develop develop

在这里插入图片描述

4.分支的合并

查看master与develop分支的不同
在这里插入图片描述

在Git中,我们可以使用git merge和git rebase两个命令来进行分支的合并。
我们这里主要讲解如何使用merge指令来合并分支,另外合并的方式又分为两种:
快速合并和普通合并,两者的区别在于前者合并后看不出曾经做过合并,而后者合并后的历史会有分支记录!上图是快速合并,下图是普通合并!
在这里插入图片描述
在这里插入图片描述
1.快速合并
我们把develop分支合并到master分支上,来到master分支后,键入下述命令:

git merge develop

在这里插入图片描述

2.普通合并

git merge --no-ff -m "合并的信息" develop

当然,不是每次合并分支都是顺顺利利的,有事会发生合并冲突,这个时候,我们需要处理冲突,完成后才能够进行合并!

合并完之后,你只是把文件合并到了本地的master分支上,而没有上传到远程仓库,所以还要push到远程仓库的master分支上。
在这里插入图片描述

5.解决合并冲突

这里我们切到master分支下,修改note_3.txt,写点东西,add后提交,然后切到develop分支,也是修改note_3.txt文件,add后commit,最后切回master分支,然后再执行merge合并分支。这个时候就会出现合并失败,需要我们手动解决冲突后才能提交!
在这里插入图片描述
可能命令行看的不是很清楚,我们打开note_3.txt文件:
在这里插入图片描述
选择要保留的内容,add后提交,成功后分支就合并成功了,接着键入git status看下状态,也可以键入:git log --graph --pretty=oneline --abbrev-commit 查看整个版本线的状态!
在这里插入图片描述

6.删除分支

git branch -d 分支名

7、恢复误删分支

当然有时可能我们会手多,或者不小心把某些分支给删掉了,你后悔了,想恢复
被删的分支,没关系,我们先键入:

git log --branches="被删的分支名"

获取到该分支的最新版本的那个版本号id(取前七位即可),接着键入下述命令即可:

git branch develop 版本id

在这里插入图片描述
在这里插入图片描述

三、常见的错误

在这里插入图片描述
这个错误是因为本地仓库与远程仓库的内容不一致导致的(远程仓库有一些内容本地没有)。
解决办法:
应该先从远程仓库中把最新的代码pull到本地仓库
然后再从本地仓库提交

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当多个人同时对同一个文件进行修改时,就可能会发生冲突。为了解决这个问题,你可以采取以下步骤: 1. 提前了解代码库的结构和规范:在开始协同开发之前,了解代码库的结构和规范非常重要。这样可以避免不必要的冲突和混乱。 2. 频繁地进行代码提交:经常提交代码可以减少冲突的可能性。每次提交之前,先使用 git pull 命令来更新本地代码库,以确保你的代码是最新的。 3. 使用分支进行开发:为每个开发任务创建一个独立的分支,这样可以避免直接在主分支上进行修改,减少冲突的风险。每个开发人员在自己的分支上进行开发,并定期将分支合并到主分支或其他共享分支上。 4. 解决冲突:如果发生冲突,Git 会提示你手动解决冲突。打开有冲突的文件,查看冲突部分,手动修改以解决冲突。修改完成后,使用 git add 命令将文件标记为已解决冲突,并最后使用 git commit 命令提交更改。 5. 进行代码审查:在合并分支或提交代码之前,进行代码审查是一个好习惯。其他开发人员可以帮助你发现潜在的冲突或问题,并提出改进意见。 6. 沟通和协调:与团队成员保持良好的沟通和协调非常重要。及时解决冲突、讨论问题,并确保大家都在相同的开发路线上。 通过上述步骤,你可以有效地管理多人协同开发中的冲突,并保持代码库的整洁和稳定性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小小本科生debug

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

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

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

打赏作者

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

抵扣说明:

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

余额充值