Git常用命令

init

毫无疑问,这是学习git使用的第一个命令。在本地初始化git仓库。

1
2
cd Demo
git init

表示切换到Demo目录并在该目录初始化git仓库。会生成.git文件夹。

如图,是一个Android初始工程目录,创建git仓库后多出.git文件夹。

status

查看仓库中文件状态。

1
git status

图中表示全部文件均未添加至仓库,无需要提交至仓库文件。

有些不需要提交至仓库的文件,可以添加到.gitignore文件中。

.gitignore文件内容:

.idea
.gradle
gradle
gradlew
gradlew.bat
local.properties
build
*.iml

add

添加文件至仓库。

1
2
3
4
git add <file> # 添加一个文件至仓库
git add <file1> <file2>... # 添加多个文件至仓库
git add . # 添加全部文件至仓库
git add -f <file> # 强制将已忽略的文件添加至仓库

可以每次只添加一个文件(夹),也可以每次添加多个文件(夹)。甚至可以使用git add . 添加全部文件(夹)至仓库。

最新添加至仓库的文件(夹)会有new file标记。

在未commit之前,修改文件,也能看见修改标记。

commit

提交文件至仓库。

1
2
git commit -m 描述 #提交已在仓中的文件,不包括修改的内容
git commit -am 描述 #提交已在仓库中的文件,包括修改的内容

创建三种场景:

  1. 三个新文件。
  2. 其中一个文件修改过。
  3. 还有个文件夹未添加至版本库。

执行commit命令之后,再次查看提交前后的状态发现,修改的文件和为添加至版本库的文件没有提交。准确说,修改文件中的修改内容未提交至版本库。

log

提交记录

1
2
git log # 查看提交记录
git log --pretty=oneline # 查看精简后的提交记录

每条提交记录都对应一条40字节的id,该id在后面有很大用途。

branch

分支管理

1
2
3
4
5
git branch # 查看全部分支,当前分支会有标记
git branch name # 创建名称为name的分支
git checkout name # 将分支切换到name
git checkout -b name # 创建并切换到name分支
git branch -d name # 删除name分支

图中依次显示了上述指令用法。需要注意,删除指定分支时,不可以删除被checkout的分支。

tag

标签管理

1
2
3
4
5
6
git tag # 查看全部标签
git tag name # 创建name标签
git tag name -m 描述 # 创建name标签,并指定描述
git tag name id # 在指定的提交id上创建标签,id 只需要写前几位
git tag -d name # 删除name标签

演示了创建标签,在指定id上创建标签,查看标签,删除标签。

查看标签信息。

查看自定义描述的标签信息。

remote

1
2
3
4
5
6
7
8
# 将本地仓库关联到远程库
# 远程库名称 origin
# git@github.com:user/project.git表示远程仓库地址。
git remote add origin git@github.com:user/project.git
# 查看本地仓库关联的远程仓库
git remote -v
# 删除远程仓库
git remote rm origin

如果需要同时关联多个远程仓库,如 GitHub 和 码云。

1
2
3
4
# 远程仓库名 github 关联到 github 仓库
git remote add github git@github.com:user/project.git
# 远程仓库名 gitee 关联到 gitee 仓库
git remote add gitee git@gitee.com:user/project.git

push

1
2
git push origin master # 将 master 分支推送到远程库
git push --tags # 推送标签到远程服务

pull

1
2
// 拉取远程分支 branch1 到本地分支 branch2
git pull origin branch1:branch2
Author: flueky
Link: http://example.com/002/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.