Git关注点

Overview

记录一下自己常用的一些Git功能

rebase

  • 合并master上的commit
    1. git rebase -i HEAD~3,然后从展示的交互页面中选定要取,要留。一般是第一个改为p,其余都改为s(commit log是越新越底)
    2. git add .,如果交互没有报错
    3. git rebase --continue
    4. git push -f,一般情况会跟origin-master有冲突,所以要force push
  • 提交dev分支前使用rebase,可以把master上的最新commit前插到本次dev的最旧commit

stash

暂存一些内容。比如现在在开发feature1,突然有一个叫feature2的需求过来,此时我们希望依然在原master的基础上开发feature2(因为feature1还没开发完merge到master)。

此时我们不希望删掉所有feature1已经开发的代码,即git checkout . && git clean -fd && git status

而是希望可以保存已经modify的所有内容,此时就可以用stash。

stash@{id}, id最小是0,0表示为栈顶元素,即最近一次stash save

# CRUD
# 存储已有modify
git stash save "your work in progress for feature1"

# 查看
## 查看现有stash
git stash list
## 查看具体详情
git stash show stash@{0}

# 应用
## 应用(但不删除)
git stash apply stash@{0}
## 取出栈顶(并删除)
git stash pop

# 删除
## 单个删除 
git stash drop stash@{0}
## 全部删除
git stash clear

# 新开一个分支来应用某个stash
git stash branch your_feature1_branch_name stash@{0}

Reference