本文涉及到的命令
# 用户信息配置
$git config --global user.name "zhang"
$git config --global user.email zhang @example.com
# 查看配置信息
$git config --list
$git config --global user.name
# 在工作目录初始化新仓库
$git init
# 从现有仓库克隆
$git clone [url]
# 将项目添加至远程仓库
$git remote add [shortname] [url]
# 查看文件状态
$git status
# 跟踪文件、将文件添加到暂存区
$git add
# 提交命令,进入文本编辑器方式
$git commit
# 提交命令,简化
$git commit -m ""
# 查看提交历史
$git log
1. 安装 Git
去官网下载安装最新版。
2. 初次运行 Git 前用户信息的配置
需要配置用户名和电子邮箱地址。每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,会随更新内容一起被永久纳入历史记录:
$git config --global user.name "zhang"
$git config --global user.email zhang@example.com
查看配置信息:
$git config --list
查看某项配置信息:
$git config --global user.name
git config --global 更改的配置文件就是位于你用户主目录下的 .gitconfig 文件:
[user]
name = zhang
email = zhang@example.com
[http]
postBuffer = 157286400
lowSpeedLimit = 0
lowSpeedTime = 999999
[credential "https://gitee.com"]
provider = generic
3. 创建代码仓库
仓库(repository)是用于保存版本管理所需信息的地方,所有本地提交的代码都会被提交到代码仓库中。
3.1 在工作目录中初始化新仓库
给新建的 Test 项目建立一个代码仓库。先进入Test 目录下,输入:
$git init
这样就完成了创建代码仓库的操作:

这时会在 Test 目录的根目录下生成一个隐藏的 .git 目录。
如果想要删除本地仓库,只要删除这个目录就行了。
3.2 从现有仓库克隆
从远程仓库克隆项目:
$git clone [url]
比如从 GitHub 克隆项目,随便找到一个项目:
输入命令克隆该项目到本地:
$git clone https://github.com/facebook/react-native.git
3.3 添加远程仓库
使用命令将本地项目添加到远程仓库:
$git remote add [shortname] [url]
- <shortname>:是你为远程仓库指定的简写名称,通常默认为 origin,但你可以根据自己的需求来设定。
- <url>:是远程仓库的地址,可以是HTTP/HTTPS协议的URL,也可以是SSH协议的URL。
可以使用下列命令将项目添加到 Gitee 远程仓库:
$git remote add origin https://gitee.com/username/repository.git
4. 提交更新到仓库
4.1 工作目录中文件的状态
工作目录下文件的两种状态:已跟踪和未跟踪。
- 已跟踪文件:指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是:
- 未更新
- 已修改
- 已放入暂存区
- 未跟踪文件:所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区域。(理解为新建的文件)。
使用命令确定文件处于什么状态:
$git status
克隆仓库初次打开项目:

新建一个 Test.java 文件,再次检查状态,显示该文件未跟踪:

4.2 跟踪新文件
使用命令跟踪新文件:
$git add app/src/main/java/com/example/Test.java
add 后指明要跟踪的文件或目录路径,可以理解为将目标文件快照放入暂存区域。 再次检查状态,此时文件已被跟踪,只要在 “Changes to be committed” 这行下面的,就说明是已暂存状态。:

4.3 将修改后文件加入暂存区
修改已跟踪文件 User.java,再次查看状态:

文件 User.java 出现在 “Changes not staged for commit” 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区。
要暂存这次更新,需要运行 git add 命令(根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等)。
现在使用 git add 将 User.java 放到暂存区,然后再查看状态:

4.4 提交暂存区中文件
将暂存区域提交之前,一定要通过 git status 确认是否有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。然后再运行提交命令:
$git commit
会进入到文本编辑器页面vim:
vim 基本操作:
- 启动 vim 时,默认进入的是正常模式。
- 按下
i键进入 INSERT 模式,可以在开头输入你的提交说明。 - 然后按下
Ctrl + C键,可以从 INSERT 模式回到正常模式。 - 接着按
:进入命令模式,输入wq并按下回车,可以保存你的更改并退出vim。
保存更改并退出 vim 后:

可以简化上述步骤,使用一行命令直接提交:
$git commit -m "first commit"
在 "" 中填入提交信息,就可以直接提交。
5. 忽略某些文件
Git 提供了一种可配性很强的机制,如果用户不想将一些文件或目录纳入版本控制范围,允许用户将这些排除在版本控制之外。
Git 会检查代码仓库的目录下是否存在一个.gitignore 文件,若存在,就一行行读取这个文件中的内容,并把每一行指定的文件或目录排除在版本控制之外。
配置 .gitignore 文件,为了避免提交一些无用的文件。
.gitignore 只能忽略那些原来没有被追踪(tracked)的文件,若某些文件已经被纳入了版本管理中,则修改 .gitignore 是无效的。
创建项目时会自动创建两个 .gitignore 文件,一个在根目录下,一个在 app 模块下。
比如,app 模块下的所有测试文件都是给我自己使用的,并不想把他们添加到版本控制中,就可以修改 app/.gitignore 文件中内容:
/build
/src/test
/src/androidTest
.gitignore 中可以使用通配符“*”。
常见例子:
# 忽略所有的 .bin 文件
*.bin
# 不忽略目录下的 a.bin
!a.bin
# 不忽略 obj 目录下的 a.bin
!/obj/a.bin
# 忽略某目录 .txt, 不包括子目录 .txt
doc/*.txt
# 忽略某目录 .txt, 包括子目录 .txt
doc/**/*.txt
# 忽略当前目录.c,不忽略子目录.c
/*.c
# 忽略当前路径下的 Proj 文件夹,该文件夹下的所有内容都会被忽略
Proj/
# 忽略 Proj 文件夹子目录 Obj 文件夹里的所有文件
Proj/Obj/
# 忽略根目录下的 bin 文件。
/bin:
# 忽略/foo, a/foo, a/b/foo 等文件
**/foo:
# 忽略当前路径的 config.php 文件
config.php:
6. 查看提交历史
查看提交历史:
$git log
默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面。每次更新都有一个 SHA-1 校验和、作者的名字和电子邮件地址、提交时间,最后缩进一个段落显示提交说明。
