飞行日志
常用链接
韭菜搞钱
三省吾身
无问东西
知行合一
⛲实践指南-017-git使用进阶
type
status
date
slug
summary
tags
category
icon
password
本篇文章不是介绍 git 使用方法的文章,在熟练掌握基本命令之后,可以学习本文章。
几个原则
- 除了上传源码,尽量不要使用 git add *
- 要忽略的文件可以编写 .gitignore 文件
- 别人已经提交的记录,不要 rebase
- 想保留空文件夹,可以在这个文件夹下创建一个文件,比如 .gitkeep
常用配置
配置优先级
- /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 –system 选项,读写的就是这个文件。
- ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 –global 选项,读写的就是这个文件。
- 当前项目的 git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
- 优先级:项目本身 > global > system
常用配置
进阶技巧
取消跟踪
暂存提交
- git stash 可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug, 先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。
- 进阶:git stash save "work in progress for foo feature“
- git stash list 查看暂存列表,’git stash apply stash@{1}’就可以将你指定版本号为stash@{1}的工作取出来
- git stash clear 清空栈
二分查找
现如今有一项目,在提交 5d14c34b 和 d577ce4 之间出现了问题,现在需要找出具体是哪个提交造成的问题。其中,5d14c34b 和 HEAD 均为有问题提交。
查看与上次提交差异
git diff –cached 命令。
Git 1.6.1 及更高版本还允许使用 git diff –staged
分支操作
添加远程仓库:git remote add teamone git://git.team1.ourcompany.com
跟踪远程分支:git checkout –track origin/serverfix
强制覆盖本地文件
补充提交
- 提交之后,忘记某个文件
- 将提交的文件撤出缓冲区
- 撤销上一次提交
与上游保持同步
删除未跟踪文件
如何删除 git tag
如何回退到某个历史提交(本地)
cherry-pick 的用法
克隆仓库出现 504 Gateway Time-out 的问题
如何删除某个 commit 之前的所有提交
假设目前有如下分支 master:
A-B-C-D-E-F-G
假设目前只想要保留 D-E-F-G,找到 C 提交 2e6bc408:
手动解决补丁冲突
当 git am 应用失败时,使用 git apply –reject 导出冲突,此时失败的应用文件会以 .rej 结尾,此文件表示希望合入的代码。
使用 vim -O 打开此文件和源文件,会形成命令行的对比。此时掌握几个命令可以帮助快速合并:
- ctrl+双w:左右界面切换;
- /+字符串:在此文件搜索字符串匹配
- shift+v:全选行;
- shift+v,上下键:选多行
- y:复制
- p:粘贴
- dd:删除行