Skip to content
0

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 stash

Git Flow

git-flow备忘清单

一、初始化项目

shell
git flow init

配置按需要(或默认)即可。

二、开发新功能

  1. 创建功能分支并推送到服务端

    shell
    git flow feature start <feature_name>
    # 以 user 功能分支为例
    git flow feature start user

    这将在本地创建一个以当前所在分支(通常应该是 develop 分支)为父分支的子分支 feature/user 。推送到服务端:

    shell
    git flow feature publish user
  2. 修改功能分支 开发中可随时修改此分支,操作流程同 git 常用命令。

    shell
    git add .
    git commit -m ""
    
    git push origin feature/user # 此步骤也可使用如下命令
    git flow feature publish user
  3. 完成功能开发和测试之后,发布该功能

    shell
    git flow feature finish user

    此命令的会做如下操作:

    • 将本地的 feature/user 分支合并到本地的 develop 分支;
    • 删除本地和服务端的 feature/user 分支。
  4. 解决冲突

  5. 推送到服务端

    git push origin develop

三、发布新版本

版本号采用 X.X.X 格式:

  • 第一位代表主版本号,当发生不兼容的更新时修改。
  • 第二位代表功能号,当添加新功能时修改。
  • 第三位代表修复号,当修复Bug时修改。
  1. 创建发行版本

    shell
    git flow release start 0.1.0

    这将在本地创建一个 release/0.1.0 分支。

  2. 推送发行版本到服务端,但如果要直接上线,可跳过此步骤。

    shell
    git flow release publish 0.1.0
  3. 完成发行版本

    shell
    git flow release finish 0.1.0

    此命令将执行以下操作:

    • 将本地的 release/0.1.0 分支合并到本机的 masterdevelop 分支;
    • 本地打标签tag,版本为 0.1.0
    • 删除本地和服务端的 release/0.1.0 分支。
  4. 推送到服务端

    shell
    git push origin 0.1.0  # 推送tag
    git push origin master
    git push origin develop

四、修复Bug

  1. 创建修复分支,版本号通常是发行版本的第三位数字加1。

    shell
    git flow hotfix start 0.1.1
  2. 常规Git流程

  3. 完成修复

    shell
    git flow hotfix finish 0.1.1

    这将执行以下操作:

    • 将本机的 hotfix/0.1.1 分支合并到本机的 masterdevelop 分支;
    • 删除本地和服务端的 hotfix/0.1.1 分支。
  4. 推送修复分支到服务端

    shell
    git 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