主题
Git使用手册
常用开发命令
克隆代码
shell
git clone -b dev https://github.com/username/project.git
指定克隆 dev
分支,如果省略 -b
参数,则默认克隆主分支。
分支管理
shell
# 以当前所处分支为父分支在本地创建一个分支并切换到该分支
git checkout -b branch_name
# 切换分支
git checkout branch_name
# 查看本地分支
git branch
# 查看远程分支
git branch -r
# 删除本地分支
git branch -D branch_name
# 删除远程分支
git push origin --delete branch_name
文件添加到本地暂存区
git add <args>
,常用参数args如下:
.
:添加当前目录下的所有修改、删除、新建的文件。-u
:添加修改、删除的文件;不包括新建的文件。-A
:添加整个项目下所有修改、删除、新建的文件,可指定特定文件夹路径下的文件。
将暂存区的文件提交到本地版本库
shell
git commit -m ""
推送到远程服务端
shell
git push origin branch_name
保存修改到堆栈
Git Flow
一、初始化项目
shell
git flow init
配置按需要(或默认)即可。
二、开发新功能
创建功能分支并推送到服务端
shellgit flow feature start <feature_name> # 以 user 功能分支为例 git flow feature start user
这将在本地创建一个以当前所在分支(通常应该是
develop
分支)为父分支的子分支feature/user
。推送到服务端:shellgit flow feature publish user
修改功能分支 开发中可随时修改此分支,操作流程同 git 常用命令。
shellgit add . git commit -m "" git push origin feature/user # 此步骤也可使用如下命令 git flow feature publish user
完成功能开发和测试之后,发布该功能
shellgit flow feature finish user
此命令的会做如下操作:
- 将本地的
feature/user
分支合并到本地的develop
分支; - 删除本地和服务端的
feature/user
分支。
- 将本地的
解决冲突
推送到服务端
git push origin develop
三、发布新版本
版本号采用 X.X.X
格式:
- 第一位代表主版本号,当发生不兼容的更新时修改。
- 第二位代表功能号,当添加新功能时修改。
- 第三位代表修复号,当修复Bug时修改。
创建发行版本
shellgit flow release start 0.1.0
这将在本地创建一个
release/0.1.0
分支。推送发行版本到服务端,但如果要直接上线,可跳过此步骤。
shellgit flow release publish 0.1.0
完成发行版本
shellgit flow release finish 0.1.0
此命令将执行以下操作:
- 将本地的
release/0.1.0
分支合并到本机的master
和develop
分支; - 本地打标签tag,版本为
0.1.0
。 - 删除本地和服务端的
release/0.1.0
分支。
- 将本地的
推送到服务端
shellgit push origin 0.1.0 # 推送tag git push origin master git push origin develop
四、修复Bug
创建修复分支,版本号通常是发行版本的第三位数字加1。
shellgit flow hotfix start 0.1.1
常规Git流程
完成修复
shellgit flow hotfix finish 0.1.1
这将执行以下操作:
- 将本机的
hotfix/0.1.1
分支合并到本机的master
和develop
分支; - 删除本地和服务端的
hotfix/0.1.1
分支。
- 将本机的
推送修复分支到服务端
shellgit push origin develop master 0.1.1
.gitignore文件
本文件存放 Git 忽略的目录和文件。
- 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
- 可以使用标准的 glob 模式匹配。
- 匹配模式最后跟斜杠(/)说明要忽略的是目录。
- 要忽略指定模式以外的文件或目录,可以在模式前加上感叹号(!)进行取反。
glob模式
*
:星号匹配零个或多个任意字符。[]
:匹配任何一个列在方括号中的字符,如[ab]
匹配 a 或者匹配 b。?
:匹配一个任意字符。[n-m]
:匹配所有在这两个字符范围内的字符,如[0-9]
表示匹配所有0到9的数字
示例:
logs/
:忽略当前路径下的 logs 目录,包含 logs 下的所有子目录和文件。/logs.txt
:忽略根目录下的 logs.txt 文件。*.class
:忽略所有后缀为 .class 的文件。!/classes/a.class
:不忽略 classes 目录下的 a.class 文件。tmp/*.txt
:只忽略 tmp 目录下的 .txt 文件。**/foo
:可以忽略 /foo、a/foo、a/b/foo 等。
需要注意先后顺序,Git 是按文件从上到下来执行的。比如:!/classes/a.class
在 *.class
前面,则前者会失效。
常见问题
Git-Bash乱码
shell
git config --global core.quotepath false