实践指南-017-git使用进阶

type
status
date
slug
summary
tags
category
icon
password
本篇文章不是介绍 git 使用方法的文章,在熟练掌握基本命令之后,可以学习本文章。

几个原则

  1. 除了上传源码,尽量不要使用 git add *
  1. 要忽略的文件可以编写 .gitignore 文件
  1. 别人已经提交的记录,不要 rebase
  1. 想保留空文件夹,可以在这个文件夹下创建一个文件,比如 .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:删除行
实践指南-016-黑科技实践指南-018-创建本地源
飞行日志
常用链接
韭菜搞钱
三省吾身
无问东西
知行合一