注意!不看太后悔了!未来工作中如何多人协作?让我用git给你演示!

简介: 目前,我们的仓库中只有一个 master 主分支,但在实际的项目开发中,在任何情况下其实都是不允许直接在 master 分支上修改代码的,这是为了保证主分支的稳定。这时推送失败,因为你的小伙伴的最新提交和你推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用 git pull 把最新的提交从origin/dev 抓下来,然后,在本地进行合并,并解决冲。要说明的是,我们切换到的是本地的 dev 分支,根据示例中的操作,会将本地分支和远程分支的进行关系链接。冲突,就使用我们之前讲的冲突处理解决掉冲突。

 前言:

📕作者简介:热爱编程的敖云岚,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年!

📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。

😇😇😇有兴趣的话关注博主一起学习,一起进步吧!

一、多人协作一

目前,我们所完成的工作如下:

• 基本完成 Git 的所有本地库的相关操作,git基本操作,分支理解,版本回退,冲突解决等等

• 将远端信息clone到本地,以及推送和拉取。

是时候干最重要的一件事情了,实现多人协作开发!为了做这件事情,我们需要先做一些准备工作。我们之前已经将项目 clone 到了指定目录,如:

hyb@139-159-150-152:~/git_teaching$ pwd
/home/hyb/git_teaching

image.gif

我们在 windows 环境下,再 clone 同一个项目仓库,来模拟和你一起协作开发的另一名小伙伴:

image.gif编辑

Clone 成功!

image.gif编辑实际开发中,每个用户都有自己的gitee/github账号,如果要多人进行协同开发,必须要将用户添加进开发者,用户才有权限进行代码提交:

image.gif编辑

邀请用户:

image.gif编辑到此,相当于有了两个用户,分别在 linux 和 windows 上针对于同项目进行协作开发,我们的准备工作到此结束。

目前,我们的仓库中只有一个 master 主分支,但在实际的项目开发中,在任何情况下其实都是不允许直接在 master 分支上修改代码的,这是为了保证主分支的稳定。所以在开发新功能时,常常会新建其他分支,供开发时进行迭代使用。那么接下来,就让我们在 gitee 上新建 dev 远程分支供我们使用:

image.gif编辑

image.gif编辑 创建成功:image.gif编辑

创建成功的远程分支是可以通过 Git 拉取到本地来,以实现完成本地开发工作。接下来让我们和另一名开发的小伙伴都将远程仓库进行一次拉取操作,并观察结果:

• 对于我们要操作的是:

hyb@139-159-150-152:~/git_teaching$ git pull
From gitee.com:hyb91/git_teaching
* [new branch] dev -> origin/dev
Already up to date.
# 注:之前讲的 git branch 其实只能查看本地分支,要查看远程分支需要加上-r选项。
# 但前提是要pull一下拉取最新的远端仓库,才能看到最新的内容。
hyb@139-159-150-152:~/git_teaching$ git branch -r
origin/HEAD -> origin/master
origin/dev
origin/master
hyb@139-159-150-152:~/git_teaching$ git checkout -b dev origin/dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
Switched to a new branch 'dev'

image.gif

拉取后便可以看到远程的 dev 分支,接着切换到 dev 分支供我们进行本地开发。要说明的是,我们切换到的是本地的 dev 分支,根据示例中的操作,会将本地分支和远程分支的进行关系链接。

• 对于小伙伴要操作的是:

image.gif编辑

现在,你和你的小伙伴就可以在dev(两人都通过dev分支) 上完成开发。首先,让我们在dev 分支上进行一次开发,并push 到远程。例如:

hyb@139-159-150-152:~/git_teaching$ vim file.txt
hyb@139-159-150-152:~/git_teaching$ cat file.txt
hello git
complete the first function!
hyb@139-159-150-152:~/git_teaching$ git add file.txt
hyb@139-159-150-152:~/git_teaching$ git commit -m "first function"
[dev 305f78a] first function
1 file changed, 1 deletion(-)
hyb@139-159-150-152:~/git_teaching$ git push origin dev # 将dev分支推送到远端
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 287 bytes | 287.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:hyb91/git_teaching.git
cc3be59..305f78a dev -> dev

image.gif

让我们来看看码云上目前仓库的状态:

image.gif编辑

至此,我们已经将代码成功推送至码云,接下来假如你的小伙伴要和你协同开发,碰巧也要对 file.txt文件作修改,并试图推送,例如:

image.gif编辑

这时推送失败,因为你的小伙伴的最新提交和你推送的提交有冲突解决办法也很简单,Git已经提示我们,先用 git pull 把最新的提交从origin/dev 抓下来,然后,在本地进行合并,并解决冲
突,再推送。
操作如下:

image.gif编辑

解决冲突(查看原文件不同的内容进行修改),重新推送:image.gif编辑 此时,我们看到远端的码云已经能看到我们的新提交了!

image.gif编辑

由此,两名开发者已经开始可以进行协同开发了,不断的git pull/add/commit/push ,遇到了

冲突,就使用我们之前讲的冲突处理解决掉冲突。对于你来说,要想看到小伙伴的代码,只需要pull 一下即可,例如:

hyb@139-159-150-152:~/git_teaching$ cat file.txt
hello git
complete the first function!
hyb@139-159-150-152:~/git_teaching$ git pull
Updating 305f78a..72c5345
Fast-forward
file.txt | 1 +
1 file changed, 1 insertion(+)
hyb@139-159-150-152:~/git_teaching$ cat file.txt
hello git
complete the first function!
complete the second function

image.gif

最后不要忘记,虽然我们是在分支上进行多人协作开发,但最终的目的是要将开发后的代码合并到
master上去
,让我们的项目运行最新的代码。接下来我们就需要做这件事情了:

# 切换至 master分支, pull 一下,保证本地的master是最新内容。
# 合并前这么做是一个好习惯
hyb@139-159-150-152:~/git_teaching$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
hyb@139-159-150-152:~/git_teaching$ git pull
Already up to date.
# 切换至 dev 分支, 合并 master 分支
# 这么做是因为如果有冲突,可以在dev分支上进行处理,而不是在在master上解决冲突。
# 这么做是一个好习惯
hyb@139-159-150-152:~/git_teaching$ git checkout dev
Switched to branch 'dev'
Your branch is up to date with 'origin/dev'.
hyb@139-159-150-152:~/git_teaching$ git merge master
Already up to date.
# 切换至 master 分支,合并 dev 分支
hyb@139-159-150-152:~/git_teaching$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
hyb@139-159-150-152:~/git_teaching$ git merge dev
Updating 7388a31..72c5345
Fast-forward
file.txt | 2 ++
1 file changed, 2 insertions(+)
hyb@139-159-150-152:~/git_teaching$ cat file.txt
hello git
complete the first function!
complete the second function!
# 将 master 分支推送至远端
hyb@139-159-150-152:~/git_teaching$ git status
On branch master
Your branch is ahead of 'origin/master' by 4 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
hyb@139-159-150-152:~/git_teaching$ git push origin master
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:hyb91/git_teaching.git
7388a31..72c5345 master -> master
hyb@139-159-150-152:~/git_teaching$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean

image.gif

此时,查看远端仓库,master已经是最新代码了:image.gif编辑

此时,dev 分支对于我们来说就没用了, 那么 dev 分支就可以被删除掉。我们可以直接在远程仓库中将dev分支删除掉:

image.gif编辑

image.gif编辑

总结一下,在同一分支下进行多人协作的工作模式通常是这样:

• 首先,可以试图用 git push origin branch-name 推送自己的修改;

• 如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并;

• 如果合并有冲突,则解决冲突,并在本地提交;

• 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!

• 功能开发完毕,将分支 merge 进 master,最后删除分支。

 

板书:

image.gif编辑

image.gif编辑image.gif编辑

目录
相关文章
|
1月前
|
编译器 开发工具 数据安全/隐私保护
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
本文提供了一个关于如何在Gitee上进行多人协作和版本控制的详细教程,包括新建和初始化仓库、克隆仓库、邀请好友共同管理仓库以及注意事项,旨在帮助用户顺利进行代码协作开发。
239 0
Git——多人协作/版本控制,在一个gitee仓库下开发(Gitee版教程)手把手教学,包好用的!
|
3月前
|
存储 网络安全 开发工具
Git 协同开发详解:从基础命令到多人协作
Git 协同开发详解:从基础命令到多人协作
71 0
|
6月前
|
开发工具 git
Git 远程仓库&多人协作
Git 远程仓库&多人协作
|
6月前
|
存储 Shell 编译器
多人协作使用git如何解决冲突?
多人协作使用git如何解决冲突?
167 0
|
6月前
|
Linux 开发工具 git
Git多人协作(二)
Git多人协作(二)
49 0
|
6月前
|
Linux 开发工具 git
Git多人协作(一)
Git多人协作(一)
60 0
|
11月前
|
小程序 Shell 网络安全
git多人协作用户权限配置
关于git的仓库创建及用户配置等一系列的功能很早已经有过经验。 最近需要配置一个多人协作(多个git用户)的一个git环境。 发现了一些问题。
96 0
|
Linux 开发工具 git
Git:利用Git进行多人协作的场景模拟
Git:利用Git进行多人协作的场景模拟
|
程序员 开发工具 git
Git 分布式版本控制工具 04Gitcode案例:多人协作开发流程+创建仓库+拉取操作+克隆仓库+拉取远程仓库中最新的版本+修改拉取的本地代码
在版本控制系统中,大约90%的操作都是在本地仓库中进行的:暂存,提交,查看状态或者历史记录等等。除此之外,如果仅仅只有你一个人在这个项目里工作,你永远没有机会需要设置一个远程仓库。
195 0
|
21天前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
42 1
[Git]入门及其常用命令