git & Android Studio

基础命令

$ git init //初始化仓库
$ git add [文件名]
$ git commit - m"[注释]"
$ git status   //查看结果
$ git diff       //查看变化
$ git version //查看版本
$ git 命令 >> d:/diff/exportname.diff //将输出信息重定向

工作区、暂存区和版本库

工作区有一个隐藏目录 .git 是 Git 的版本库,库里存了很多东西,其中最重要的就是称为 stage(或者叫 index)的暂存区。

把文件往 Git 版本库里添加的时候,是分两步执行的:

第一步是用 git add 把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用 git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支(版本库)。

关于用户

获取名字和地址
Git config user.name
Git config user.email

本地的版本更新

git log //查看提交历史
git reflog //查看命令历史
git reset --hard HEAD~1 // 后面的数字是前面第几个
git reset --hrad [id]

$ rm test.txt //从工作区删除
$ git checkout -- test.txt //从版本库恢复到工作区
$ git rm test.txt //从版本库中删除

$ git checkout . //将工作区的所有修改丢弃,可以指定文件和文件的类型

远程库

$ git remote add origin [email protected]:CMXJteam/BanMa.git
$ git remote rm origin
$ git remote -v
用 origin 名字来代表远程库BanMa;删除;查看远程库。

$ git push -u origin master //第一次提交,将 master 分支的内容 push
$ git clone [email protected]:CMXJteam/BanMa.git
$ git pull <远程主机名> <远程分支名>:<本地分支名> //取回远程主机某个分支与本地的指定分支合并
$ git fetch <远程主机名> <远程分支名>:<本地分支名> //从远程获取最新版本到本地,不会自动merge

分支

分支是什么?原理是什么?

$ git branch //查看分支
$ git branch  //创建分支
$ git checkout  //切换分支
$ git checkout -b  //创建+切换分支
$ git merge  //合并某分支到当前分支
$ git branch -d  //删除分支
$ git diff   //查看不同分支的不同

团队合作

参考 使用Git进行团队开发

$ git branch -a //查看所有包括远程仓库的分支
$ git fetch <远程主机名> <远程分支名>:<本地分支名>
$ git merge //合并

解决冲突
git status 显示有冲突的文件,文件里面会添加像下面的冲突标识符:

<<<<<<< HEAD:file.txt
Hello world
=======
Goodbye
>>>>>>> 77976da35a11db4580b80ae27e8d65caf5208086:file.txt

编辑解决冲突,把冲突标识符删掉然后提交
git add . + git commit
如果不满意可以用 git refloggit reset 返回到合并前的版本

代码的回滚

  • Reset

可以将 HEAD/文件 指向指定的分支内容。
例如 git reset HEAD~2 会将 HEAD 指向两个提交之前的分支,这时 HEAD 之后的两个提交变成了悬挂提交,将会在 Git 执行垃圾回收的时候被删除。

Reset 的重点在于可选参数:
git reset --mixed 默认选项。缓存区变化,但工作区不受影响。
git reset --soft 缓存区和工作区都不会被改变。
git reset --hard 缓存区和工作区都同步到指定的提交,也就是说在这之后的提交再也找不回,是非常危险的操作。

如果 reset 后面接文件路径:git reset HEAD~2 MainActivity.java 会将缓存区中的指定文件回滚而工作区不变。

  • Revert

撤销一个提交的同时会创建一个新的提交。git revert HEAD~2 会在当前的 HEAD 后新增一个提交,内容则是 HEAD~2 的内容。
这也是团队合作里在公共分支常用的。

修改 Git Bash 打开的默认目录

私以为这个还是非常有必要的,不然每次都要跳转好一段路径...
找到快捷图标,属性->起始位置,修改为想要跳转的路径。
要注意在「目标」一栏,有可能会有一句 --cd-to-home ,需要删掉:

git & Android Studio_第1张图片
Git Bash

Git 保存密码

用 https 时经常需要输入密码,其实可以设置为保存密码以自动输入:

$ git config credential.helper store

.gitignore 忽略文件

在开发中有很多生成的缓存文件、日志文件等无需同步到仓库的文件,这时候一般我们通过添加 .gitignore 文件来设置忽略的规则。

除了编写 .gitignore 文件外,还可以在 .git/info/exclude 文件下编写规则,特点是只对本地的提交。

Android Studio 中使用 Git 的一些要点

  • 右键没有 Git 选项:


    git & Android Studio_第2张图片

    上图的 Git 选项有时候会莫名其妙的消失,可以在 Preferences -> Version Control 针对项目添加。


    git & Android Studio_第3张图片
  • 使用自带的图形化界面来解决冲突:
    右键文件夹/文件 -> Git -> Resolve Conficrs


    git & Android Studio_第4张图片

    因为提交、合并习惯在 Terminal 里用命令行进行,所以有时候出现了冲突并不会自动弹出图形化解决冲突的界面。
    如果用 AS 的 VCS -> Git 里的操作应当不会又这种问题。

你可能感兴趣的:(git & Android Studio)