搬砖小抄

git 小抄

字数统计: 522阅读时长: 2 min
2019/03/22 Share

git 练级过程中的必备基础技能,比如:

  • 全局配置
  • 本地打包
  • 分支(branch)操作
  • 子模块操作
  • 合并提交历史

全局配置

全局配置信息保存在~/.gitconfig

个人信息

1
2
git config --global user.email "you@example.com"
git config --global user.name "Your Name"

编辑器

1
2
# 设置成vi
git config core.editor vi

保存登录凭据

1
2
# 保存明文密码,默认存在 .git-credentials 文件中
git config --global credential.helper store

仓库配置

更换服务端的url

1
git remote set-url remote_name new_url

本地打包

1
git archive --format zip --output d:/master.zip master

分支(branch)操作

列出分支

1
git branch

可以加参数 -a所有分支,-r 远程分支

新建分支(本地),并且切换到该分支(-b 选项)

1
git checkout -b new_branch_name

从从服务器拉取远程,并且切换到该分支(-b 选项)

1
2
git fetch origin
git checkout -b branch_name origin/branch_name

仅获取最新版和两个历史版本,即最后3个版本

1
git clone xxx --depth=2

clone某个分支

1
git clone -b [branch-name] --single-branch  [url]

提交本地分支到服务器

1
git push -u origin branch_name

删除本地分支

1
git branch -d branch_name

删除服务端分支(1.7+)

1
git push <remote_name> --delete <branch_name>

标签(tag)操作

1
2
3
# 含附注的标签
git tag -a v1.4 -m 'my version 1.4'
git push origin v1.4

子模块操作

迁出一个项目,包含其子模块

1
git clone --recursive <url>

更新(pull)所有子模块(1.8.2 +)

1
git submodule update --recursive --remote

删除某个子模块

1
2
3
4
5
# submodule-name 是子模块的名称,一般就是子模块的目录名称
git submodule deinit <submodule-name>
git rm <submodule-name>
git rm --cached <submodule-name>
rm -rf .git/modules/<submodule-name>

指定子模块的上游分支

1
2
3
cd your-submodule
git branch -u <origin>/<branch> <branch>
git checkout -b <branch>

see:

合并提交历史

合并2个提交历史(包含HEAD),交互方式

1
git rebase -i HEAD~2

参考资料

CATALOG
  1. 1. 全局配置
  2. 2. 仓库配置
  3. 3. 本地打包
  4. 4. 分支(branch)操作
  5. 5. 标签(tag)操作
  6. 6. 子模块操作
  7. 7. 合并提交历史