Git User Guide

Git 用户指引

安装

Debian/Ubuntu

sudo apt-get install software-properties-common gpg
sudo add-apt-repository ppa:git-core/ppa

常用信息

常用路径

路径 作用
~/.gitconfig 用户 git 配置文件
%USERPROFILE%\.gitignore Windows 用户 git 配置文件

常用设置

命令/设置 作用
git config --global user.name
git config --global user.email
git config --global pull.rebase true
git config --global credential.helper cache 密码暂存
git config --local commit.template .git/COMMIT_TPL 设置项目 commit 注释模版
git config --global core.excludesfile ~/.gitignore mac / Linux 设置全局 ignore 文件
git config --global core.excludesfile %USERPROFILE%\.gitignore Windows 设置全局 ignore 文件

常用 Hook

.git/hooks/post-commit

Linux 下 post-commit 文件需要设置可执行权限。

#!/bin/sh

# 配合 commit 注释模版设置,留用最后一次 commit 注释的标题
printf "`git log -1 --pretty=%s`" > .git/COMMIT_TPL
#!/bin/sh

# 配合 commit 注释模版设置,留用最后一次 commit 的注释
printf "`git log -1 --pretty=%B`" > .git/COMMIT_TPL

常用命令

命令 作用
git clone --depth 1 URL 仅 clone 最后提交
git log --oneline --graph 查看 git 历史
git branch -a 列出所有远程本地分支
git fetch 更新远程仓库代码,checkout 新的远程分支前需要执行。
git checkout -b <分支名> origin/<分支名> Checkout 远程分支
git checkout -t origin/<分支名>
get rebase [<远程别名>/]<分支名> 同步指定分支更新到当前分支
git stash save -u 'STASH_NAME' 暂存当前工作区

重置

命令 作用
git reset --[mixed] 取消添加到 stage 到文件
git reset --hard <Commit ID> 回滚到指定提交
git reset --hard HEAD 回滚到当前分支最终提交
git reset --soft HEAD^ 取消最后 1 次提交,保留已修改源代码
git reset --soft HEAD~2 取消最后 2 次提交,保留已修改源代码
git reset --hard origin/<分支名> 回滚到远程分支最终提交
git clean -fd 清除未在版本管理的文件及文件夹

注释

命令 作用
git commit --amend -m "MSG" 修改最后提交的注释

本地库维护

命令 作用
git gc --aggressive --prune=now 回收无用缓存

子模块

命令 作用
git submodule add URL PATH 添加子模块到指定路径

发布

命令 作用
git clone --depth=1 URL 部署当前 HEAD 状态

SourceTree

Stash

使用 Stash 暂存本地变更后,展开左侧 Stashes 菜单,右键点击相应 stash 进行恢复。

Paging
Next
Prev

Git Flow

安装

# macOS
$ brew install git-flow-avh
$ brew install bash-git-prompt zsh-git-prompt

初始化 

$ git flow init -f # git flow init -d

Which branch should be used for bringing forth production releases?
   - 7.x
   - develop
Branch name for production releases: [7.x]

Which branch should be used for integration of the "next release"?
   - develop
Branch name for "next release" development: [develop]

How to name your supporting branch prefixes?
Feature branches? [feature/] feature/
Bugfix branches? [bugfix/] bugfix/
Release branches? [release] release/
Hotfix branches? [hotfix] hotfix/
Support branches? [support] support/
Version tag prefix? []

参考 

Git branching model

git-flow on Github

git-flow Cheat Sheet

https://blog.axosoft.com/gitflow/

Author: njun
njun's picture
Updated: 2021/09/21