• Git学习:共享仓库多人协作开发



    现在学习的Git全是命令操作,后面会使用idea进行操作,在idear中全是图形化界面的一种形式,图形化界面的话,底层都是调用的这些命令,我们无比要把命令先掌握清楚,然后再去操作图形化界面的时候,你就会知道它们每一步底层做的是什么事情,所以命令学习是非常关键的。

    1.Git仓库Clone

    共享仓库:刚开始用户A1人做项目开发,突然又加入了一个用户B,B如何把A的代码移动到自己的电脑中?(1.用U盘Copy;2.从它电脑里直接克隆;)

    Git支持我们从另外一个路径,克隆一份工程到我们的指定位置,

    在这里插入图片描述

    • 用户clone项目, 在当前目录下,clone用户1项目
      • 命令:git clone 要复制的项目路径和名称(要克隆的项目的地址),复制之后的项目路径和名称(复制到哪里,叫什么名字)
      • 示例
        • $ git clone ./user1 ./user2 (注意:user1和user2之间有空格,把当前目录的user1克隆到user2当中)
        • clone出来的项目,当中包括工作区和历史日志
    • 操作
      • 我们来到已经建好的git工程user1

    在这里插入图片描述
    - 回到user1的上一级目录,在空白处右击,选择 Git Bash Here
    在这里插入图片描述
    我们想把工程user1克隆一份,先在一台电脑中模拟多个用户,后续会使用github和gitlab
    在这里插入图片描述
    输入命令,然后回车,会发现,在uer1文件夹下面多了个user2的文件夹
    在这里插入图片描述
    在这里插入图片描述
    ,发现user1和user2的文件是一样的,区别是 user2 中没有 css 文件夹,原因是user1的 css 文件夹起初并没有添加到Git 里面,也就是clone并不是copy所有文件,而是从你的项目(user1)中拿出最后一个版本,然后复制一份,只copy被添加到Git中的文件和记录。
    在这里插入图片描述
    进入到user2的路径,通过Git Bash Here打开git窗口,查看一下user2的 git log
    在这里插入图片描述
    可以看到,最后一步操作是 合并hotBranch
    在这里插入图片描述
    现在使用的是本地克隆,后续换成远程的github仓库地址,就可以把他克隆到本地。

    2.Git共享仓库特点

    上一节介绍了如何克隆一个仓库,本节介绍共享仓库的创建。

    我们实际开发过程中,都会有一个中央仓库,中央仓库是大家共享的一个仓库,我们所有的代码都可以往共享仓库中推送。当我们有三个仓库的时候(如下图所示),我们会留一个作为共享仓库(比如仓库C),这样就不用再两个用户之间copy代码,而是通过中央仓库(中介)来copy代码,这样就避免了 B进来没来上班,而 A无法从Bcopy代码的情况。
    在这里插入图片描述
    有了共享仓库C,A和B就可以把写的代码推送到共享仓库C中,A和B每天上班的时候,就先从共享仓库中拉取最新的代码,再看一下同事的代码做了哪些修改,就可以知道最新的项目进度做到那里,就不用在A和B去互相copy了。

    共享仓库就是一个中间媒介,A和B把代码都上传到这个里面,共享仓库在Git里面创建的时候,

    共享仓库的特点:

    • 以项目名称 .git结尾
    • 看不到工作区 (只对其做代码推送和拉取工作,故看不到工作区,只用来共享,不进行修改、添加等操作)
    • 它只用来共享,不能够进行修改添加等操作 (没有工作区,看不到文件,无法进行修改、添加)
    • 从共享仓库当中 clone 下来的代码,是可以看到工作区的 (你直接进入共享仓库是看不到任何东西的,它是一个.git工程,你进去之后,是看不到工作区的,但是,我另外一个人从共享仓库clone一份工程下来的时候,clone下来的工程,是可以看到工作去区的。)

    3.Git共享仓库创建(.git结尾就是共享仓库)

    • git init --bare 仓库名称 (创建一个空的共享仓库,里面什么都没有,)
    • git clone --bare 要clone的项目路径和名称(从另外一个项目中 clone,clone 出来一个共享仓库,)

    bare是赤裸的意思,我们称bare仓库为裸仓库,只能看到 git 相关的东西,看不到工作区,
    在这里插入图片描述
    输入命令,然后回车,就有了下图红框中.git的文件夹,点击进去
    在这里插入图片描述
    看到gitCenter.git下的文件夹没有隐藏,就是给使用的,代码可以上传到共享仓库,也可以从共享仓库clone代码
    在这里插入图片描述
    把是工作区的工程当作共享仓库,先删掉上一步建的gitCenter.git仓库,然后把已有的包含工作区的仓库,当作共享仓库
    假设把user1中内容放到共享仓库里面,

    git clone --bare ./user1 共享仓库名称   #如果不写共享仓库名称,则会自动生成user1.git作为名称
    
    • 1

    在这里插入图片描述
    然后删除user1.git

    在这里插入图片描述
    双击进入gitCenter.git,看不到工作区,然而当你直接从它里面clone的时候,是可以看到工作区的,

    在这里插入图片描述
    此时,从中央仓库里面clone一个工程出来,
    在这里插入图片描述
    然后从中央仓库里面clone,新生成 user3,user3中的内容和user1是一样的,因为中央仓库gitCenter.git是从user1创建的共享仓库,它把user1的工作区也放到了共享仓库中,
    在这里插入图片描述
    虽然你双击进入gitCenter.git看不到工作区,但是工作区是存在的,在你从共享仓库clone到别的地方之后,就会显示出来。

    4.Git共享仓库上传代码

    • 在本地仓库当中添加文件,添加到本地仓库中

    • 先提交到本地仓库(commit),再推送到远程仓库

      • 这样可以保证,如果共享仓库崩了,本地仓库还有完好数据。
    • 推送命令——git push 远程仓库地址,分支名称

    • 示例

      • 假设在 user1 里面做一些操作,
        在这里插入图片描述
        创建 touch d.txt (红色表示未添加到暂存区)
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        git log 之后,想回到命令行的话,可以按 q 键。
        此时已经将d.txt提交到本地git中,但是远程仓库 gitCenter.git 中还没有,
        在这里插入图片描述
        主动把信息推送到远程仓库(当前所在位置为user1里面,写命令时要出去)
    git push ../gitCenter.git/ master(分支名称) # 分支名称前有空格
    
    • 1

    在这里插入图片描述
    此时,代码已经上传到了中央仓库的master分支中,
    然后去共享仓库中查看日志记录
    在这里插入图片描述
    在共享仓库 gitCenter.git 的日志中看到了 user1 的最新内容,说明已经将user1的代码添加到了共享仓库中。

    在这里插入图片描述

    5.Git共享仓库下拉代码

    6.Git什么情况下产生冲突

    7.Git冲突演示

    8.Git解决冲突

  • 相关阅读:
    详解Pinia和Vuex
    故障:不能打开 Office 应用程序,并指示有账户正在登录
    Dubbo+Zookeeper的简单使用---实现RPC远程调用
    gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu交叉编译Arm Linux环境下的身份证读卡器so库操作步骤
    法国博士后招聘|国家科学研究中心 (CNRS) 计算生物学
    Java版分布式微服务云开发架构 Spring Cloud+Spring Boot+Mybatis 电子招标采购系统功能清单
    zhang-suen算法提取裂缝图骨架
    Prettier插件使用
    linux如何运行c程序命令
    安卓毕业设计选题app毕业论文基于Uniapp实现的Android的餐饮管理系统
  • 原文地址:https://blog.csdn.net/weixin_46713695/article/details/126328530