最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 面试题|git秘籍--多人协作冲突

    正文概述 掘金(Lovi)   2021-04-19   952

    前言

    一本秘籍闯宇宙,那么这边秘籍是什么呢?那就是git秘籍,初学者对于git只知道git add .git commit -m 'commit message'git push origin main这三个招式吧!其实git的招式还有很多,足够让你去探索一番!让我们掌握这本秘籍闯宇宙去吧!

    先送大家一张git命令大全吧! 面试题|git秘籍--多人协作冲突 git通用流程图 面试题|git秘籍--多人协作冲突

    git秘籍核心--多人协作冲突

    1.什么是Git多人协同开发

    当开发一个大型项目时通常都是许多人进行合作,每个人负责项目的一部分,Git是实现多人协同开发最常见的工具,但是对于刚接触Git的人来说,多人协同开发会遇见很多问题,这篇博客的内容主要就是为了给出多人协同开发的正确步骤,并对这个过程中遇到的问题进行解释和解决。

    2.多人协作开发的准备工作

    • 新建一个仓库
    • 创建主分支,即上传项目的初始内容到master分支
    • 团队内成员进行分工(各个成员之间负责的内容用尽量不冲突)

    3.开发阶段

    • 每个成员将远程仓库主(master)分支的内容clone下来
    • 按照分工进行自己负责的工作

    4.提交阶段(冲突产生阶段)

    (1)、每个成员在完成自己的工作后,首先需要注意远程仓库的变化

    (2)、获取远程仓库的最新版本与本地进行合并

    合并时会产生冲突问题:合并冲突

    思考:那么上面3种情况中哪种会产生冲突呢?

    下面将揭晓答案:

    (3)、合并过后,就可以上传(git push)到远程仓库自己的分支

    5.审核阶段

    6.冲突解决

    1.冲突的类型

    合并时使用git rebase 和 git merge的区别

    面试题|git秘籍--多人协作冲突

    2.变基(rebase)

    git pull 与 git pull --rebase

    • git pull = git fetch + git merge

    • git pull --rebase = git fetch + git rebase

    冲突1

    冲突2

    多人基于同一个远程分支开发的时候,如果想要顺利 push 又不自动生成 merge commit,建议在每次提交都按照如下顺序操作:

    //git stash 能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。
    git stash
    git pull --rebase 
    git push
    //git stash p 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。将暂存文件取出,与pull的文件对比
    git stash p
    

    3.回滚(reset与revert)

    git reset(重置)

    其中:A B 是正常提交,而CD 是错误提交。现在,我们想把C D 回退掉。而此时,HEAD 指针指向 D 提交(5lk4er)。我们只需将 HEAD 指针移动到 B 提交(a0fvf8),就可以达到目的。

    那么命令是什么呢?那就是git reset命令

    git reset --hard a0fvf8 
    

    命令运行之后,HEAD指针就会移动到B提交下

    面试题|git秘籍--多人协作冲突 而这个时候,远程仓库的 HEAD 指针依然不变,仍在 D 提交上。所以,如果直接使用 git push 命令的话,将无法将更改推到远程仓库。此时,只能使用 -f 选项将提交强制推到远程仓库

    git push -f 
    

    采用这种方式回退代码的弊端显而易见,那就是会使 HEAD 指针往回移动,从而会失去之后的提交信息。将来如果突然发现,C D 是多么绝妙的想法,可它们已经早就消失在历史的长河里了。

    git revert(撤销)

    git revert的作用通过反做创建一个新的版本,这个版本的内容与我们要回退到的目标版本一样,但是HEAD指针是指向这个新生成的版本,而不是目标版本。

    使用 git revert 命令来实现上述例子的话,我们可以这样做:先 revert D,再 revert C (有多个提交需要回退的话需要由新到旧进行 revert):

    // 1 revert D
    git revert 5lk4er
    // 2 revert C
    git revert 76sdeb
    

    那么就会生成两个新的提交:D'C' 面试题|git秘籍--多人协作冲突 这里只有两个提交需要 revert,我们可以一个个回退。但如果有几十个呢?一个个回退肯定效率太低而且容易出错。我们可以使用以下方法进行批量回退:

    git revert OLDER_COMMIT^..NEWER_COMMIT
    

    这时,错误的提交 CD 依然保留,将来进行甩锅的时候也有依可循。而且,这样操作的话HEAD指针是往后移动的,可以直接使用 git push 命令推送到远程仓库里。而这种做法,正是企业所鼓励的。

    git指令练习网站

    可以让我了解每个命令执行后发生了什么的网站(感兴趣的可以去玩一玩) Learn Git Branching,练习git命令的网站

    网站页面显示 面试题|git秘籍--多人协作冲突 比如:练习一道题

    面试题|git秘籍--多人协作冲突 介绍git rebase 面试题|git秘籍--多人协作冲突 未执行 git rebase main
    面试题|git秘籍--多人协作冲突 执行 git rebase main 面试题|git秘籍--多人协作冲突 未执行 git rebase bugFix

    面试题|git秘籍--多人协作冲突 执行 git rebase bugFix

    面试题|git秘籍--多人协作冲突 题目问题操作提示 面试题|git秘籍--多人协作冲突 答题界面介绍 面试题|git秘籍--多人协作冲突 答案 通过输入命令我们可以观察到右边的树状图都会发生改变,可以让我们更好的理解git命令

    面试题|git秘籍--多人协作冲突 下面的大家可以根据答案去输入git命令去尝试,我就不一一为大家解答啦!有疑问可以在评论区留言!

    //新建并切换到bugFix分支
    git checkout -b bugFix 
    //提交一次
    git commit
    //切换到main分支
    git checkout main
    //提交一次
    git commit
    //再次切换到bugFix分支
    git checkout bugFix
    //rebase 到 main
    git rebase main
    

    总结

    git多人协作也是第一次去了解,毕竟还是学生没有在工作中真正的遇到这些问题。如果有问题的地方,麻烦大佬们帮忙指出,我及时修改,在此先提前感谢各位大佬们!

    上面有些图是盗来的,如果有侵权请联系我!

    本人大三正在学习前端!


    起源地下载网 » 面试题|git秘籍--多人协作冲突

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元