Git:Android用小白教程

一、本地仓库操作

配置身份:
git config --global user.name "SkyZhang007"
git config --global user.email "[email protected]"
查看当前用户身份:

将上方代码后面的用户名和邮箱删掉即可查询。

创建仓库:
  1. cd到你要创建仓库的项目的目录下,比如cd D:/Doc/ASWorkspace/ActivitySkipTest
  2. 输入命令 git init。这样会在该目录下生成一个隐藏的.git文件夹,用来记录所有git操作。如果想删除本地仓库,删除这个文件夹即可。
Git:Android用小白教程_第1张图片
ls -al命令查看信息.png
添加本地代码到本地仓库,add只是添加到暂存区,commit才是提交到本地仓库
  • 添加某个文件git add build.gradle
  • 添加某个目录git add app
  • 添加所有文件git add .
  • 提交代码到本地仓库git commit -m "First commit"
  • commit 的 -m 后面必须添加信息描述,不然会被认为不合法。
忽略文件

项目的目录下git init之后会自动生成一个.gitignore文件,它记录和说明了在上传到git仓库过程中不需要上传的文件。

Git:Android用小白教程_第2张图片
.gitignore.png

通配符*表示所有这个类型的文件都不会提交,例如上图的.iml文件都不会提交。其它的标记的一些文件和目录不会提交。
再来看app文件夹下的.gitignore,新建的默认只有一个 /build目录,表示这个文件夹忽略掉。如果想增加忽略文件夹,可以手动添加。比如 /src/test就可以忽略src文件夹下的test文件夹下的所有内容。
Git:Android用小白教程_第3张图片
手动忽略.png

查看修改内容
  • 查看文件修改情况git status:这个命令可以查看上次提交之后本地文件修改情况;
  • 查看文件修改的内容git diff
  • 如果想查看某个文件具体的修改内容,可以这么来输命令:
    git diff app/src/main/java/com/sky/activityskiptest/MainActivity.java
    输出结果减号代表删除的部分,加号代表添加的部分。

例:上次提交(commit -m"xxx")之后,我在MainActivity添加了一行参数

...
intent.putExtra("data",5);
...

然后输入git status查看输出结果,红色文字表示有两个文件被修改了并且未add到暂存区绿色代表已修改并add过了,MainActivity.java被修改是正常的。看图可以发现.idea/workspace.xml文件也被修改了,但是我的.gitignore文件已经声明忽略这个文件了。查了下发现我先add了所有文件,又去copy的.gitignore,所以它的.gitignore不起作用了。使用git rm --cached .idea/workspace.xml来把这个文件移出暂存区,就不会再提示它的更新了。

Git:Android用小白教程_第4张图片
git status.png

接下来看MainActivity已经被修改了,如果想看具体的修改内容,可以在git里复制MainActivity的路径,然后输入命令
git diff app/src/main/java/com/sky/activityskiptest/MainActivity.java看结果:

Git:Android用小白教程_第5张图片
git diff.png

很明显地看到绿绿的,左边有个+号,表示是我们新增的行数。要理解现在的所有文件对比都是跟 上次提交之后做对比,如果把新增的这行删掉,就会提示没有什么更新。

撤销修改
  • 在文件add到暂存区之前:git checkout可以撤销修改。

例如git checkout app/src/main/java/com/sky/activityskiptest/MainActivity.java撤销MainActivity.java。

  • 文件add到暂存区之后:先git reset移出暂存区,再使用git checkout来撤销修改。

例如:git reset HEAD app/src/main/java/com/sky/activityskiptest/MainActivity.javaHEAD表示git自建分支master的一个指针。然后再使用上方的撤销。

查看Git记录
  • 查看log:git log
Git:Android用小白教程_第6张图片
git log.png

黄色的一串代表Log的ID,其余都是记录的一些信息,最下方是commit提交时输入的记录。

  • 查询某条记录:git log 5986f43107a08211094924a950439ff50d8a91c7 -1-1表示只看一条log。
  • 查询某条记录具体修改内容:git log 5986f43107a08211094924a950439ff50d8a91c7 -1 -p
分支:

简单的说,发布1.0版本的时候新建分支,发布之后不管他然后切换到主分支做1.1版本。
1.0出现bug需要修改就切到1.0去修改,修好后发布并及时合并到主分支。
1.1做好以后需要发布,1.0的bug也修复了代码也是最新的,直接发布就好。

分支相关命令:
  • 查看所有分支:git branch
  • 创建分支:git branch XXX(e.g.:Version1.0)
  • 切换分支:git checkout XXX
  • 合并分支:首先切换到master分支git checkout master然后git merge XXX就可以把XXX分支上的内容合并到master分支上。
  • 删除分支:git branch -D XXX
Tips:
  1. 查看分支时前面有个 * 并且字体是绿色的代表当前分支;
  2. 无法删除你当前所使用的分支。

二、远程版本库操作(Github等)

  • 克隆远程版本项目:git clone ...
    如果我想从github克隆一个项目到本地,先cd到想保存到的目录,比如cd D:/Doc/ASWorkspace然后再git clone https://github.com/SkyZhang007/coolweathertest.git后面的url是github上面复制来的Path。
    Git:Android用小白教程_第7张图片
    git clone.png
  • 更新本地代码同步到远程版本:git push origin master
    origin 表示推送到远程版本,master是远程版本的分支。
  • 远程版本的修改同步到本地:git fetch origin master
    这个命令表示同步远程代码并单独保存到本地的origin/master分支上,git diff origin/master可以查看远程版本修改的内容。最后使用git merge origin/master将刚刚同步来的代码合并到本地的当前分支中。
  • 同步到本地后直接合并:git pull origin master
    这个命令直接做了两个上方fetch和merge的事情。

三、本地项目上传到GitHub

3.1 GitHub注册并创建项目

Sign up for GitHub来注册并创建账户,接下来可以选择个人(免费)、私有(收费)计划。再接下来会让你填个问卷,跳过就行。
接下来就可以创建一个新的repository(代码仓库)了,看图:

Git:Android用小白教程_第8张图片
New Repository.png

**填入项目Name,以及Description(介绍),勾选 Initialize this repository with a README(创建一个README项目介绍文件),选择一个license(许可证),这里选Apache License2.0就行。点击Create就可以看到自动生成的 LICENSE和 README.md文件还有仓库的git地址了。

3.2 本地项目上传
  1. cd到本地项目目录,本地的项目init、add、并且commit之后,就可以准备上传了。
  2. Copy一下刚才GitHub创建的仓库的地址,命令git remote add origin https://github.com/SkyZhang007/ActivitySkipTest.git将本地的项目与git仓库作关联。
  3. 重要:命令git pull --rebase origin master貌似是与远程仓库作合并和协调。
  4. 执行git push -u origin master将本地代码push到GitHub。然而我用git push origin master也可以,不知道有啥大区别没。这个过程会让你输入GitHub的账号和密码,忽然蹦出来的图像化对话框感觉好感动...输入账号密码即可。然后等一会儿吧,这个过程可能比较慢。

Git:Android用小白教程_第9张图片
push origin master.png

出现类似上述页面并可以继续输入命令行表示成功了,以后再更新的话只需要 add. commitgit push origin master就可以了。

参考资料:

《第一行代码(第二版)》

你可能感兴趣的:(Git:Android用小白教程)