Fork me on GitHub

Git的基本使用

此次仿真试验主要集中于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分支修改同一变量,最终合并时具体保留哪个版本的这一冲突问题),此时就应该对其进行修改,择其一进行保留!

   B同学在终端进行了如下命令操作:

    git add app                                           // 将app提交到本地缓存

              git commit -m "B同学首次提交"           //  提交至本地仓库

              git push origin devB                             //  然后在远程仓库看到如下详情

此时,对应的本地:

    远程仓库:

                此时,A同学准备修改B同学的a值,将a的值修改为250!

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

    3.1  A首先需要切换到该分支;     git checkout devB

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

 

    魔鬼细节此时倘若A同学想再切换到devA分支,会怎样?没错,会出现如下错误:

          虚晃一下?明明修改了devB的内容,又不提交,那这个修改岂不没起到任何作用??所以,当修改了代码之后必须提交

(先提交至缓存区,再提交至本地仓库,若需要远程仓库维护,还需要提交至远程仓库)

    

            3.3  提交到远程仓库

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

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

                   git push origin devB    // 此时,出现冲突

 本地出现这些红色问题:(选择保留合适的版本信息,这里对应就是a的不同数值,将其余重复冲突内容删除!

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

记得,一定一定得重新提交,否则会出问题,在远程看不到修改的结果!!

 至此,冲突解决,A如愿修改了B中对应的a的值!!!

 (这部分至此over!!)

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

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

       ④ 合并,先看主分支master对应的代码,会发现对应的a=000,而此时又已知devB中的a=250,那么合并devB至master会发生什么?

git checkout master    //  首先,应当从当前分支切换至master主分支 

git merge devB           //  将devB分支合并至当前主分支master上

 此时,不论切换到devB还是master分支,会发现本地的a = 250,可是远程仍然还是最初的a=000,为啥呢?

 那当然是没有提交至远程仓库呗!所以合并完想在远程看到合并的效果,务必进行代码的远程提交!!

本地的不论是devB分支还是master分支,a的值皆是250,具体如下:

 

 红线圈起的地方也提醒需要远程提交,这样才能看到效果!!!

 git push  //  由于已经在主分支了,所以这样远程提交就行!(发现对应的远程仓库的master分支的a=250啦)

 

   记得!有变化(包括修改、合并)就得重新提交!!

补充: ① 删除远程分支

            git push origin --delete + 要删除的分支名        // 也可以直接在gitee远程仓库进行删除

            ② 获取最新远程仓库信息到本地仓库

    git fetch           //git fetch命令用于从远程仓库获取最新的提交记录,但是并不会将这些提交记录合并到本地代码库中。它相当于是将远程仓库的最新变化下载到本地仓库,但是并不会修改本地代码库的状态。这个命令会将远程仓库的分支和标签更新至本地仓库。

 

            ③ 拉取

            git pull  // 简单地,也可以根据它直接拉取,有冲突解决冲突(择优选择保留)

 

posted @ 2023-08-11 18:36  余ོ笙ꦿ℘゜এ  阅读(7)  评论(0编辑  收藏  举报
Live2D