首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Git之旅

Android Git之旅

作者头像
晨曦_LLW
发布2022-07-12 17:04:39
5560
发布2022-07-12 17:04:39
举报

Android Git之旅

前言

  作为一个程序员,你保存代码的方式是什么?更新代码的方式是什么?你还在用拷贝的方式保存代码吗?U盘?移动硬盘?还是网盘?

正文

  以上的一些方式你可能在刚开始学习或工作的时候会用到,但不是长久之计,因此你需要学会使用git。git的用法虽然不难,但是精通不易,如果不是经常使用,容易看了就忘记,特别是一些指令的使用,这里做一个记录,从头开始了解git。

一、安装Git

  点击Git进入官网。

在这里插入图片描述
在这里插入图片描述

  官网会根据你的电脑系统为你推荐最新的Git版本,这里你会看到2.37.0,Windows安装版本,点击Download for Windows进入下载页面。

在这里插入图片描述
在这里插入图片描述

  点击下载符合你电脑的.exe程序,我是windows11,我下载的是64-bit Git for Windows Setup,下载过程慢慢等待即可。下载好之后双击exe进行安装,安装过程没啥好说的,前面一顿点击Next,碰到Install点击即可。安装完成之后我们在Android Studio中配置Git。

在这里插入图片描述
在这里插入图片描述

  点击Android Studio导航栏File → Settings → Version Control → Git ,然后点击文件夹图标选择Git安装路径下的git.exe,之后点击Test,会出现你所安装的Git的版本,表明你安装的Git没有问题,配置完成。

二、准备工作

  为了方便演示,我们通过Android Studio创建一个项目来进行git的了解,创建一个名为GitStudy的项目。

在这里插入图片描述
在这里插入图片描述

  创建好之后就可以开始提交代码了,我们需要确认提交代码的平台,目前最火热的当然是GitHub(有时候访问不了,可能需要翻墙),然后是Gitee(码云,稳定)、GitLab。

GitHub

Gitee

GitLab

  你要在那个代码托管平台保存自己的代码就去那个平台注册账号。

  作为开源爱好者,我选择的是GitHub,账号注册这些环节就没有啥好说的,下面要做的就是把代码提交的GitHub上。那么我们可以在Android Studio中配置我们的Git账号,点击导航栏File → Settings → Version Control → GitHub。

在这里插入图片描述
在这里插入图片描述

  点击Add account进行账号添加,会出现一个弹窗。

在这里插入图片描述
在这里插入图片描述

  这里我们选择使用使用Token进行登录,点击 Log In with Token…,会出现一个弹窗。

在这里插入图片描述
在这里插入图片描述

  这里我们需要输入Token,点击右侧的**Generate…**按钮去GitHub中构建Token。

在这里插入图片描述
在这里插入图片描述

  这里需要你验证一下,输入密码之后点击Confrim password。身份验证通过之后进入Token创建页面。

在这里插入图片描述
在这里插入图片描述

  这里Token的有效期是30天,你可以设置时间更长,其他的地方不用设置,滑动到页面底部。

在这里插入图片描述
在这里插入图片描述

  点击Generate token按钮,Token的创建好了。

在这里插入图片描述
在这里插入图片描述

  点击右侧的复制按钮,将Token复制一下,然后再回到Android Studio中,将token粘贴到输入框中。

在这里插入图片描述
在这里插入图片描述

  点击Add Account即可完成GitHub账户添加,添加后就能看到账户的信息。

在这里插入图片描述
在这里插入图片描述

  点击弹窗右下角的Apply进行账户应用,此时右上角的Reset就会消失,再点击OK关闭弹窗。

三、旅行开始

首先看一下我的GitHub主页。

在这里插入图片描述
在这里插入图片描述

  现在是91个代码仓库,下面我们来提交第92个。首先我们在GitHub上创建一个新的仓库。

在这里插入图片描述
在这里插入图片描述

  这里输入仓库的名称和描述,勾选Add a README file,这会在创建仓库的时候添加一个README.md文件,这个仓库默认是public公有的,表示任何人都可以看到,private则是私有的,仅自己和仓库成员可见。然后我们滑动到页面底部,点击Create repository 按钮,完成仓库的创建。

在这里插入图片描述
在这里插入图片描述

  仓库创建成功,现在里面就只有一个md文件,下面我们要将自己的项目代码提交到这个仓库中。

  回到我们刚才创建的项目,点击Android Studio底部导航栏的Terminal。

在这里插入图片描述
在这里插入图片描述

会自动进入当前项目的所在目录。

  要提交代码首先需要创建一个本地代码仓库,有这个仓库才能去提交代码。

① git init

git init

在输入前我们先看一下当前项目的文件夹。

在这里插入图片描述
在这里插入图片描述

下面在Terminal中输入git init 然后回车,如下图所示。

在这里插入图片描述
在这里插入图片描述

  初始化一个空的git仓库,此时你会发现你的项目的文件夹下多了一个.git文件夹。

在这里插入图片描述
在这里插入图片描述

它是一个隐藏文件,如果看不到,就需要设置一下查看方式。

在这里插入图片描述
在这里插入图片描述

② git add .

然后我们需要将所有的文件拷贝到暂存区。

git add .

  通过这个命令就可以提交当前目录下所有的文件,注意这个命令后面有一个点,不要省略空格。在Terminal中输入git add .然后回车,如下图所示。

在这里插入图片描述
在这里插入图片描述

  这里就是把所有的文件添加到git中,你会发现你的MainActivity.kt这个文件名的颜色变成了绿色,这也是一个小细节,如果你看到的是红色,那么你在重新打开一下看看,就会变成绿色,有时候Android Studio的检查机制没有那么及时。

③ git commit

  文件添加到暂存区之后,我们就可以将暂存区内容添加到本地仓库中。

git commit -m "第一次提交"

  这个命令稍微有一些长,在 Git 中,每次提交代码,都要写 Commit message(提交说明),否则就不允许提交。上面代码的-m参数,就是用来指定 commit mesage 的。你得让别人之后你这一次提交的代码是什么意思,当然也方便你以后查询。

  下面我们在Terminal中输入git commit -m "第一次提交"指令,然后回车,如下图所示。

在这里插入图片描述
在这里插入图片描述

  失败了,为什么呢?因为在执行这一步时需要知道提交的人是谁,另外这个信息里面也告诉你该怎么做了。

  我们需要输入这两条指令,一条设置邮箱,一条设置名称。

  例如我的邮箱是lonelyholiday@qq.com,名称是llw。

④ git config

git config --global user.email "lonelyholiday@qq.com"
git config --global user.name "llw"

  下面在Terminal中就可以这么输入,先输入第一条,然后回车。

在这里插入图片描述
在这里插入图片描述

  再输入第二条,然后回车。

在这里插入图片描述
在这里插入图片描述

  你会发现似乎没有什么变化,实际上变化是有的。怎么查看这个变化呢?

通过

git config --global user.email

git config --global user.name

  这两条指令和之前的区别就是没有设置值,下面我们执行回车看一下有什么变化。

在这里插入图片描述
在这里插入图片描述

  这个变化是很明显的,现在解决提交人的信息问题,我们继续执行之前的未完成的git commit指令。

  你有没有觉得每一条命令都要一个一个的敲很麻烦,实际上你刚才敲过的指令可以通过键盘的上下键进行切换,试试看吧。

  现在我切换回git commit -m “第一次提交”,再回车一次。

在这里插入图片描述
在这里插入图片描述

  这一次执行成功了。

⑤ git remote

  因为要提交到GitHub中创建GitStudy上,所以我们需要将本地仓库提交到远程仓库并关联。关联需要一个重要的内容那就是远程仓库的地址。

在这里插入图片描述
在这里插入图片描述

  复制仓库地址之后需要通过一个命令去关联。

git remote add origin "https://github.com/lilongweidev/GitStudy.git"

  这里的仓库地址请使用自己的,你用我的肯定是提交不上去的,在Terminal中输入指令,回车。似乎没有打印什么内容,但是指令已经生效了。

⑥ git push

  最后推送上去

git push origin main

  上面命令表示,将本地的main分支推送到origin主机的main分支。如果main不存在,则会被新建。这个main是从哪里来的呢?

在这里插入图片描述
在这里插入图片描述

  推送之前要注意推送的分支是哪一个。在Terminal中下面执行命令,回车。

在这里插入图片描述
在这里插入图片描述

  然后就报错了,这里的报错是因为分支不同。

⑦ git branch

  通过命令来查看当前的分支,

git branch

  在Terminal中输入指令回车,来看看有什么不同。

在这里插入图片描述
在这里插入图片描述

  原来本地的分支默认是master,而GitHub上创建的分支默认是main。分支需要统一,所以将本地的master改成main。

git branch -m master main

  在Terminal中执行这个命令,回车。然后再查看当前分支,确认有没有改成功。

在这里插入图片描述
在这里插入图片描述

  这里改好了,那么我们再来push。

在这里插入图片描述
在这里插入图片描述

  哦豁,又有问题!是不是很烦呢?这是连接重置,国内访问GitHub有时候会这样,再来一次,我的原则就是不服输。

在这里插入图片描述
在这里插入图片描述

  人麻了,又报错了,这个错误还有一点不太一样,这个错误的根源在哪里呢?经过我的百度了解之后,预测是远程仓库里面的README.md文件导致的,我们这样提交代码,可能会导致它丢失。这个颜色的字体是警告,我们无视它,执行。

git push --force

  再回车看看。

在这里插入图片描述
在这里插入图片描述

  没想到吧,还是不行,为什么不行呢?百度上说是因为本地当前分支没有和远端的分支进行相关联。但是我之前明明关联了,那么这又是闹哪样呢? 难道是改了本地分支名的原因吗?

  这里其实还有一句话,告诉我们需要关联的执行下面这一行指令。

git push --set-upstream origin main

  试试呗。

在这里插入图片描述
在这里插入图片描述

  还是没有什么用,现在是不是心态崩了呢?莫慌,再尝试别的方式。

⑧ git pull

  刚才我们一直是提交,但是因为远程仓库里面有一个README.md导致本地库和远程库有差异,所以我们反向操作一下,先把远程库的内容拉取到本地,试试看。

git pull --rebase origin main

执行

在这里插入图片描述
在这里插入图片描述

  拉取成功了,我们再提交看看。

git push origin main
在这里插入图片描述
在这里插入图片描述

  妈耶,终于成功了!我们看看GitHub上,这个库有没有变化。

在这里插入图片描述
在这里插入图片描述

  来人,奏乐,这不得庆祝一下吗?嗯?

  现在代码提交成功了,那我们修改一下AndroidStudio中的代码,然后再提交一次看看,这也是我们下班关闭电脑前要做的事情,保存代码。例如我们刚才写的指令都写到README.md中,代码如下:

# GitStudy
Git学习

git init 

git add .

git commit -m "第一次提交"

git config --global user.email 

git config --global user.name 

git remote add origin "https://github.com/lilongweidev/GitStudy.git"

git push origin main

git push --force

git push --set-upstream origin main

git branch

git branch -m master main

git pull --rebase origin main

git push origin main
在这里插入图片描述
在这里插入图片描述

你看到这个README.md文件名称变成了蓝色,这说明文件有改动,提交的时候就会把这个改动提交上去。

这里只需要先后执行。

git add .
git commit -m "修改README.md"
git push origin main

既可,如图所示:

在这里插入图片描述
在这里插入图片描述

我们再看看GitHub上的变化。

在这里插入图片描述
在这里插入图片描述

  这个文件提交上来了,有时候我们会去查询之前提交的内容。

⑨ git log

  可以通过git log进行查询。

git log

  在Terminal中执行,回车。

在这里插入图片描述
在这里插入图片描述

  注意看,这里的修改记录是按时间排序的,最近的一次修改在最上面,也就是修改修改README.md。

如果要查询当前最新的commit呢?

⑩ git show

git show

执行回车

在这里插入图片描述
在这里插入图片描述

  这里就是查看当前最新的commit,这个日志中带有 绿色 + 号的表示是本次提交中新增的内容,我们滑动到最底下,你会看到光标没有结束,回车一下。

在这里插入图片描述
在这里插入图片描述

  这里会看到我们的提交内容,你注意看,@@ -1,2 +1,29 @@表示之前是第1行到第2行,现在是到第29行。你就一直回车,直到看到End。

在这里插入图片描述
在这里插入图片描述

如果不需要查看了。

在这里插入图片描述
在这里插入图片描述

点击左上角的关闭按钮,关闭Local窗口。

  有时候有这种情况,我们提交了一个commit之后发现好像还漏掉了什么内容,比如请求动态权限时忘记在AndroidManifest.xml中注册静态权限了,这时候我们需要将之前的commit改成本次的commit。也就是合并commit,我们来演示一下。修改一下MainActivity中的代码,如下所示:

class MainActivity : AppCompatActivity() {

    private val requestCamera =
        registerForActivityResult(ActivityResultContracts.RequestPermission()) {
            Toast.makeText(this, if (it) "权限授予" else "未授予", Toast.LENGTH_SHORT).show()
        }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        requestCamera.launch(Manifest.permission.CAMERA)
    }
}

  这里的代码很简单,就是动态权限的申请。这种运行起来肯定是不会请求权限的,因为你没有注册静态权限,所以连那个询问用户权限是否开启的弹窗都不会出现,但是我们现在需要提交了。

在这里插入图片描述
在这里插入图片描述

  这时候我们发现没有注册静态权限。现在去AndroidManifest.xml中注册静态权限。

<uses-permission android:name="android.permission.CAMERA"/>

⑪ git commit --amend

执行

git add .
git commit --amend -m "添加静态权限。"
在这里插入图片描述
在这里插入图片描述

然后推送上去。

在这里插入图片描述
在这里插入图片描述

再查看commit日志。

在这里插入图片描述
在这里插入图片描述

这样就避免出现两次commit了。

  有时候我们开发项目,会有多个环境的项目,例如正式版,测试版,通常用不同的分支进行管理,现在我们只有一个main分支,那么我们可以通过命令去创建分支。首先我们会用到创建分支的指令。

git branch develop

  这里的develop就是我们要创建的分支名称,意思是开发,下面执行一下,然后再查看分支。

在这里插入图片描述
在这里插入图片描述

  可以看到这里有两个分支了,你会发现main分支前面有一个*号,同时是绿色的,这表示当前分支。

⑫ git checkout

  那么如果要让develop变成当前分支呢?

执行

git checkout develop

然后我们再查看所有分支。

在这里插入图片描述
在这里插入图片描述

  切换成功了,不过develop分支还没有内容的,为了让develop和main分支的内容不一样,我们com.llw.gitstudy包下创建一个ToastUtils.kt文件。

然后你会看到弹出一个窗口。

在这里插入图片描述
在这里插入图片描述

  就是在询问你,是否要将此文件添加到git上,你会发现此时文件名是红色,当你点击了Add按钮就会变成绿色,如果你不希望每次创建文件时都询问你,就选中弹窗左下角的Don‘t ask again即可,现在我们点击Add。

然后我们在ToastUtils中写入如下代码:

import android.content.Context
import android.widget.Toast

fun String.showToast(context: Context) =
    Toast.makeText(context, this, Toast.LENGTH_SHORT).show()

fun String.showLongToast(context: Context) =
    Toast.makeText(context, this, Toast.LENGTH_LONG).show()

然后我们在MainActivity中使用它。

private val requestCamera =
        registerForActivityResult(ActivityResultContracts.RequestPermission()) {
            if (it) "权限授予" else "未授予".showToast(this)
        }

下面我们将刚才所写的代码提交,还记得是什么指令吗?

在这里插入图片描述
在这里插入图片描述

最后我们推送当前的develop到服务器上,推送的时候可能会出现。

在这里插入图片描述
在这里插入图片描述

这样的异常,没事的,多试几次,总能推送上去,实在不行就更换网络再尝试。

在这里插入图片描述
在这里插入图片描述

  这里我们就推送上去了,可以看到当服务器上没有这个分支的时候就会创建这个分支,下面我们去GitHub上看看。

在这里插入图片描述
在这里插入图片描述

  分支提交成功。现在服务器加上本地就有四个分支了,我们可以通过命令查看一下。

执行

git branch -a
在这里插入图片描述
在这里插入图片描述

-a就是-all,表示全部。红色的就是服务器上的分支,四个分支没错。

  现在develop分支代码和main分支不一致,当我们在develop分支中验证代码没有问题之后,将它合并到main分支中,首先要切换分支到main。

git checkout main
在这里插入图片描述
在这里插入图片描述

切换成功,下面进行合并

⑬ git merge

git merge --no-ff develop

–no-ff 在这的作用是禁止快进式合并。

在这里插入图片描述
在这里插入图片描述

然后打开GitHub,切换到develop分支,你会看到

在这里插入图片描述
在这里插入图片描述

点击Contribute会出现一个弹窗。

在这里插入图片描述
在这里插入图片描述

  点击左边的Compare表示比较代码,点击右边的Open pull request表示同意这一次的分支请求,因为我已经知道我在develop中添加了什么内容,因此就无需比较了,直接点击右边Open pull request

在这里插入图片描述
在这里插入图片描述

添加描述后点击Create pull request按钮。

在这里插入图片描述
在这里插入图片描述

  由于之前操作过快,忘记截图了,所以这里我回退了一下,重新搞了一次,上面的Test不重要,你注意下面这个Merge pull request按钮,点击它。

在这里插入图片描述
在这里插入图片描述

再点击Confirm merge。

在这里插入图片描述
在这里插入图片描述

  最后写入描述,然后点击Comment按钮,然后你观察main分支中,就会发现那里有了之前没有的ToastUtils。

那么现在develop分支就没有什么用了,因此我们可以删除这个分支。

git branch -d develop

我们在删除前查看一下分支,然后执行删除,删除后再查看一下:

在这里插入图片描述
在这里插入图片描述

  -d表示删除标识,要删除的不能是当前显示分支,同时不能包含未合并的更改和未提交的推送。

现在远程仓库中还有两个分支,我们也可以将远程仓库的分支删除掉。

git push origin -d develop

执行之前查看所有分支,执行删除,删除之后再查看所有分支。

在这里插入图片描述
在这里插入图片描述

  很多时候我们会参考别的的代码,框架。会先运行别人的源码看看效果,这里就需要用到克隆。

  例如我可能自己的项目到当前电脑指定文件夹下,项目地址是:Android12Bluetooth

在这里插入图片描述
在这里插入图片描述

点击Code按钮。

在这里插入图片描述
在这里插入图片描述

点击复制按钮,然后我们进入一个指定目录。

在这里插入图片描述
在这里插入图片描述

克隆指令如下

⑭ git clone

git clone https://github.com/lilongweidev/Android12Bluetooth.git

进入PowerShell,先进入到指定文件夹下,然后克隆。

在这里插入图片描述
在这里插入图片描述

然后再看文件夹。

在这里插入图片描述
在这里插入图片描述

克隆成功。

四、结束

  Git的使用需要经常使用才能印象深刻,关于git的使用网络上有很多很多,遇到问题解决的方法也有很多,遇到问题不要慌,要坚定自己能解决这个问题,加油奥里给!!!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Android Git之旅
  • 前言
  • 正文
    • 一、安装Git
      • 二、准备工作
        • 三、旅行开始
          • ① git init
          • ② git add .
          • ③ git commit
          • ④ git config
          • ⑤ git remote
          • ⑥ git push
          • ⑦ git branch
          • ⑧ git pull
          • ⑨ git log
          • ⑩ git show
          • ⑪ git commit --amend
          • ⑫ git checkout
          • ⑬ git merge
          • ⑭ git clone
        • 四、结束
        相关产品与服务
        代码托管
        CODING 代码托管(CODING Code Repositories,CODING-CR)是为开发者打造的云端便捷代码管理工具,旨在为更多的开发者带去便捷、高效的开发体验,全面支持 Git/SVN 代码托管,包括代码评审、分支管理、超大仓库等功能。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档