Git的基本使用

发布时间 2023-08-11 18:44:25作者: 余ོ笙ꦿ℘゜এ

此次仿真试验主要集中于gitee上进行

1、单人项目开发

     git add .                               // 表示将所有代码提交至暂存区
          git commit -m "提交信息"    // 将代码提交至本地仓库,注意提交的附加信息不可或缺
          git push                               // 提交至远程仓库(gitee)  

     需要注意的是: 

2、多人协同开发(重点)

       1) 创建分支是基础,必不可少,此次创建了devA分支以及devB分支(此时,加上master主分支,共三个分支)

    假设起始是在master主分支

    git branch devA                  // 创建本地分支devA (但此时分支仍定位在master主分支上)

         git branch                           //  查看当前所处分支情况 

         git branch -r                       // 查看远程仓库分支情况

           git checkout -b   devC       // 创建本地分支devC,会发现该创建方式会切换至该分支

                                                   // 同时发现它并不影响远程仓库的分支情况

                   git branch -d devC     // 表示删除本地devC分支,需要注意的是不能所在的分支,

                                                     // 也即当前在本地devC分支不能删除它,需要切换至其他分支才能删除

                   git checkout devA      // 表示切换至本地devA分支

        

         

       2) ① 首先,检查主分支master的代码,发现a最终为a = 000(本地切换至master分支后的图示)

            ②   在master主分支上提交代码至远程仓库

                 1.1 提交所有文件至本地缓存区:    git add .

                 1.2 本地缓存提交至本地仓库   :    git commit -m "主分支提交"

                 1.3 提交至远程仓库                       git push

            此外,可以观察到远程仓库gitee内容也随之发生变化

               ③  一般不允许在主分支master上进行开发,所以此次创建了两个分支,A同学操作分支devA,B操作分支devB

               正常开发流程中,A、B很有可能对同一文件进行操作,而且可能出现不同的修改结果,这在最终合并到主分支时必然会出现冲突问题!

               为了复现该过程,对部分内容进行了简化,但原理都差不多。具体为:B操作修改了MainActivity.java中的变量a的值,将a=000

               修改为a=520,并提交至远程仓库。此时,倘若A想要在devB分支修改a=250时必然会发生冲突(模拟的是A、B分支修改同一变量,最终

                合并时具体保留哪个版本的这一冲突问题),此时就应该对其进行修改,择其一进行保留!!

 此时,对应的本地:

    远程仓库:

 注: 由于devA于devB皆为A多次修改(并解决了相应冲突),导致远程仓库数据devA和devB皆为A用户,为了便于说明,

         B同学新建了devC分支(本地新建分支,提交至远程仓库就会新生成对应分支,无需专门去远程仓库进行建立),

          并提交至了远程仓库。

    查看远程仓库中B操作后的代码以及提交记录(发现B同学操作的a = 4):

 

 

      那A如何将B操作的a值进行修改呢?

    3.1  A首先需要在本地创建devC分支,并切换到该分支;     git checkout -b devC

              3.2  然后手动修改代码中a的值,将其修改成:a=250

            3.3  提交到远程仓库

                   git add .               // 提交至本地缓存

                   git commit -m "我是A,我修改了B在devC分支中的a的值"    // 提交至本地仓库

                   git push origin devC    // 此时,理应出现冲突,好像由于自己手动删除了devC库,居然不发生冲突!!

                 

git pull origin devC // 出现冲突,拉取回来,解决冲突,择优选择保留!!

git  merge  devA  // 假设当前在master分支,那么就是合并devA到master分支去,合并完成后,一定按照提交本地缓存、本地仓库、远程仓库的

  // 方式进行提交,否则无法在远程仓库看到合并后的结果,也即无法看到merge主分支上有devA对应的a值详情,也即devA并未实际合并到merge!!