0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

git分支应用和多人协作

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-09-19 09:00 次阅读

git分支应用和多人协作

1.知识百科

Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

git 包含了完善的客户端和服务端,客户端和服务端之间通过某种安全通信 协议(HTTPS 或者 SSH)进行文件的上传和下载

git工具安装和基本使用参考:https://blog.csdn.net/weixin_44453694/article/details/123999289

poYBAGMnL7CAYiZHAAE4W-Vdanw928.png#pic_center

2.git分支

分⽀就是科幻电影⾥⾯的平⾏宇宙,当你正在电脑前努⼒学习Git的时候,另⼀个你正在另⼀个平⾏宇宙⾥努⼒学习SVN。两者之间可以同时执行。

分⽀在实际中有什么⽤呢?假设你准备开发⼀个新功能,但是需要两周才能完成,第⼀周你写了50%的代码,如果⽴刻提交,由于代码还没写完,若直接提交则会导致代码不完整影响其他人工作。但若等所有代码写完再一次性提交,⼜存在丢失每天进度的巨⼤⻛险。而有了分支的产生,就可以创建一个属于自己的分支,只有自己才能看到分支内容,别⼈看不到,还继续在原来的分⽀上正常⼯作,⽽你在⾃⼰的分⽀上干活,想提交就提交,直到开发完毕后,再⼀次性合并到原来的分⽀上,这样,既安全,又可以多人协作开发,互不影响。

在没有分支之前,master分⽀是⼀条线,Git⽤master指向最新的提交,再⽤HEAD指向master,就能确定当前分⽀,以及当前分⽀的提交点:

pYYBAGMnL7CAFdjSAABvcwBxRks621.png#pic_center

  每次提交,master分⽀都会向前移动⼀步,这样,随着你不断提交,master分⽀的线也越
来越⻓。
  当我们创建新的分⽀,例如dev时,git新建了⼀个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表⽰当前分⽀在dev上:

poYBAGMnL7CAE4YXAABpy-4XYGo047.png#pic_center

  当有了dev分支,我们就可以通过改变HEAD指向来操作不同分支,当HEAD指向dev分支时则只能操作dev。当我们工作完成后,就可以将master和dev分支合并,即直接让master指向dev提交分支。甚至可以直接删除dev分支。

poYBAGMnL7CAK9gtAABZcnbz6k4656.png#pic_center

3.创建分支

$ git branch dev //创建分支
$ git checkout dev //切换分支
$ git branch  //查看分支
* dev  
  master
$ git branch -d dev //删除分支
$ git checkout -b dev //创建一个分支dev,并切换到当前分支下

  *表示当前所处于的分支位置。

3.1 创建分支示例

$ touch 1.txt //创建新文件
$ git checkout -b dev  //创建dev分支并切换当当前分支下
$ git add 1.txt //添加1.txt
$ git commit -m "分支应用实例"  //编写提交说明
[dev 8873ebd] 分支应用实例
 1 file changed, 1 insertion(+)
 create mode 100644 1.txt
$ git push origin dev  //提交到dev分支
pYYBAGMnL7GAGbbtAABt5V2raNE450.png#pic_centerpYYBAGMnL7GAT6Q9AAHNRwAYGXI750.png#pic_center

3.2 合并分支并提交

$ git checkout master //切换到主分支
$ git merge dev  -m "分支合并" //合并分支,将dev分支合并到主分支
更新 38d25e9..8873ebd
Fast-forward
 1.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 1.txt
poYBAGMnL7GAHyJTAAGDRSX_vGU885.png#pic_center
$ git add -A
$ git push origin master //将合并内容提交到主分支

  合并并且提交到主分支成功后则可删除dev分支

$ git branch -d dev 
已删除分支 dev(曾为 8873ebd)。

4.分支冲突问题

4.1 创建dev分支并提交

$ git checkout -b dev  //创建分支并切换到dev分支下
$ vim 1.txt  //打开1.txt 添加内容
git 分支测试
git 分支冲突测试
$ git add 1.txt  //添加1.txt
$ git commit -m "分支冲突测试"  
$ git push origin dev  //提交到dev分支
pYYBAGMnL7GAcSFgAABv2dYHUnI463.png#pic_center

4.2 修改主分支并提交

$ git checkout master //切换到主分支
$ vim 1.txt //修改1.txt文件
git 分支测试
主分支测试
$ git add 1.txt 
$ git commit -m "主分支提交测试"
$ git push origin master  //修改内容提交到主分支
poYBAGMnL7KAOZ7DAABj0uRXICs248.png#pic_center

4.3 合并分支

$ git merge dev -m "分支合并" //合并分支
自动合并 1.txt
冲突(内容):合并冲突于 1.txt
自动合并失败,修正冲突然后提交修正的结果。
$ git status  //查看状态
位于分支 master
您的分支与上游分支 'origin/master' 一致。

您有尚未合并的路径。
  (解决冲突并运行 "git commit")
  (使用 "git merge --abort" 终止合并)

未合并的路径:
  (使用 "git add <文件>..." 标记解决方案)

	双方修改:   1.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

  打开1.txt文件可查看到主分支和dev分支的修改内容。

pYYBAGMnL7KAam6qAAC6M5d48SM158.png#pic_center

  由于主分支和dev分支都对1.txt文字做出修改,导致分支自动合并失败,此时就需要手动解决分支冲突问题。我们打开1.txt文件就可以看到主分支和dev分支的修改状况,我们需要手动合并。

 当我们在合并分支时,遇到自动合并失败,则可以通过git status 查看状态信息,查看出现合并失败的问题文件,然后收合并分支,再次添加提交文件,编写提交说明重新提交即可。
在实际开发中,我们应该按照⼏个基本原则进⾏分⽀管理: ⾸先,master分⽀应该是⾮常稳定的,也就是仅⽤来发布新版本,平时不能在上⾯干活; 那在哪干活呢?干活都在dev分⽀上,也就是说,dev分⽀是不稳定的,到某个时候,⽐如 1.0版本发布时,再把dev分⽀合并到master上,在master分⽀发布1.0版本; 你和你的⼩伙伴们每个⼈都在dev分⽀上干活,每个⼈都有⾃⼰的分⽀,时不时地往dev分 ⽀上合并就可以了。
所以,团队合作的分⽀看起来就像这样:

pYYBAGMnL7KAWILyAADcZJ_N19Y807.png#pic_center

5.多人协作

  Git是一个开源的分布式版本控制系统,可以有效的完成版本管理和多人协作开发。要实现多人协作则需要在服务器端添加协作人员。
  在仓库管理中可以添加开发者人员,设置代码审核人员和分支合并审核。

poYBAGMnL7KABzczAAEtGyXvC8E218.png#pic_center

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制系统
    +关注

    关注

    41

    文章

    6246

    浏览量

    109688
  • 开源
    +关注

    关注

    3

    文章

    3055

    浏览量

    41834
  • Git
    Git
    +关注

    关注

    0

    文章

    195

    浏览量

    15519
收藏 人收藏

    评论

    相关推荐

    关于git的远程分支的详细介绍

    不知道大家有没有经历过,当我们切换到了一个新的分支想要提交代码的时候,总会遇到这样的错误。 我们把日志里的英文翻译过来是说,我们当前的分支没有设置任何上游分支。然后git提示我们可以运
    的头像 发表于 10-11 10:03 3088次阅读
    关于<b class='flag-5'>git</b>的远程<b class='flag-5'>分支</b>的详细介绍

    Git命令之本地分支与远程分支关联和解除

    在实际的工作生活中,往往需要将本地的分支和远程分支关联,这样我们就可以使用git pull命令来更新拉取最新的代码,并使用git push命令将自己本地的修改推送到远程仓库。但是如果此
    的头像 发表于 12-15 09:27 916次阅读
    <b class='flag-5'>Git</b>命令之本地<b class='flag-5'>分支</b>与远程<b class='flag-5'>分支</b>关联和解除

    【AD系列教程】多人PCB协作设计

    一、 前言在使用Altium Designer进行PCB工程绘制时,大家都希望可以多人协作对一个PCB工程进行设计与检查。 以往大家的做法往往是将整个PCB工程文件复制给别人,让别人在自己的电脑上进
    发表于 12-05 15:15

    git简单使用(一)

    仓库,以及如何进行分支控制:1.创建一个文件夹mkdir git-study2.初始化仓库git init3.查看下当前分支git bran
    发表于 02-17 16:18

    AD多人协作pcb设计

    AD10多人协作参数设置过程详解
    发表于 08-28 09:23

    Git分支,为何以及如何使用分支

    file.txt 之间的三个方块展示每个分支所在的位置(或者说每个分支中的最后一次提交的位置)。由于 myBranch 刚创建,提交状态与 master 分支及其对应的记为 remotes/origin
    的头像 发表于 06-11 11:08 3805次阅读

    Git Flow应该抛弃的原因

    Git-flow 是一种分支和合并方法。十年前,因为一篇名为「一个成功的 Git 分支模型」的文章,Git-flow 变得广为人知。
    的头像 发表于 03-21 13:41 1369次阅读
    <b class='flag-5'>Git</b> Flow应该抛弃的原因

    Git最佳实践,什么才是最佳工作流

    知道相比于 Svn,Git 最牛的地方在于它的分支分支很灵活,但是如果缺乏一个使用套路,又会用的乱糟糟的,特别是在团队协作中,该怎么玩 Git
    的头像 发表于 02-21 17:59 1356次阅读

    利用Learn Git Branching轻松学习Git

    托管网站,与他人协作管理推进开源项目必须要掌握的工具。 而Git中的常用操作,虽然上手难度低,但涉及到细节处尤其是多分支操作,难免会让很多新手犯糊涂,今天我就给大家推荐一个开源项目,帮助使用者在轻松游戏的过程中熟练掌握
    的头像 发表于 09-15 14:53 1296次阅读

    Git / GitHub 是什么?有什么用?

    分支Git 里很重要的概念,大家可以使用 Learning Git Branching 这个在线游戏来学习和理解分支
    发表于 12-09 09:39 789次阅读

    如何设置Git的SSH秘钥

    现在使用Git工具的人是越来越多了,许多的公司或组织都使用了Git进行代码的保存、项目管理、多人协作开发等,应用的也是越发的广泛了。我个人的使用感觉来看,以前也是用SVN进行代码托管,
    的头像 发表于 02-10 11:30 1677次阅读
    如何设置<b class='flag-5'>Git</b>的SSH秘钥

    Git分支管理

    在项目的开发过程中,很多时候都会使用Git托管工具进行项目文件或者代码的管理,方便团队成员之间的协作开发。使用Git进行项目管理目前也是越来越受到欢迎,除了Git还有很多的其他项目管理
    的头像 发表于 02-20 14:49 723次阅读
    <b class='flag-5'>Git</b>的<b class='flag-5'>分支</b>管理

    git rebase与相关git merge命令比较

    。 #概念     首先要理解的是git rebase和git merge解决了同样的问题。这两个命令都旨在将更改从一个分支集成到另一个分支 - 它们只是以不同的方式进行。试想一下当你
    的头像 发表于 05-26 16:22 500次阅读
    <b class='flag-5'>git</b> rebase与相关<b class='flag-5'>git</b> merge命令比较

    git rebase和git merge的区别

      解决冲突 git rebase和git merge的区别 分支合并 git merge是用来合并两个分支的。 比如:将 b
    的头像 发表于 07-05 09:54 462次阅读
    <b class='flag-5'>git</b> rebase和<b class='flag-5'>git</b> merge的区别

    git切换远程地址分支方式

    git remote set-url origin URL】 更换远程仓库地址,URL为新地址。
    的头像 发表于 12-18 09:35 878次阅读