Fork me on GitHub

git那些事(上)

git那点事

我以前只会 git 的clone、remote、pull、add、commit、push、merge、reset、stash、这些基本操作,这里我通过learngitbranching这个网站系统了学习了一下 git 的其他操作。通过本文,您可以学到:

  1. git的常用工作流是怎样的?
  2. git rebase 怎么操作?
  3. git cherry-pick 怎么操作?
  4. git revert 是什么?
  5. git 相对引用是怎么回事?
  6. git tag 怎么使用
  7. git branch -f 和 git branch xx xxx

工作流

一般来说,git 工作流分为git-flow工作流rebase工作流

git-flow工作流是指,git里面维护了master、develop、hotfix、feature、release这些分支:新功能通过新建feature分支然后合并到develop分支,最后发布到master分支;热更通过新建hotfix分支然后合并到develop分支,最后发布到master分支等等。

rebase工作流是指,git里面只维护了master分支,所有其它的分支在完成后都需要 rebase master 分支,整理好提交信息之后再提交,这样 master 分支的提交信息就不杂乱。

注意:两种工作流不是互斥的,有的公司两种工作流都一起使用。

git rebase

git rebase 的使用场景分为两种,一种是交互式整理提交;一种是让git时间线更流畅

## 交互式整理提交
## 下面的命令会打开一个交互式vim,然后选择对之前的各个commit做一些操作,常用的操作是reword和squash
## HEAD~3 是git的相对引用,我们后面会讲
git rebase -i (HEAD~3)

## 让git时间线更流畅
## 下面的命令会把当前分支的提交作为新的提交加到master上面
git fetch
git rebase origin master
git rebase --continue
git rebase --abort

需要注意的是:

  1. git rebase 针对的是没有 push 的 commit,所以对于 commit不要轻易 push 到远程仓库
  2. git rebase 打开交互式 vim 之后,使用 i 进行修改,使用 wq 退出
  3. git rebase 会改变 git 的历史提交,所以只适用于只有你一个人维护的分支上
  4. git pull --rebase 相当于 git fetch 和 git rebase;git pull 相当于 git fetch 和 git merge
  5. git rebase 可以带第二个参数git rebase xx xxx表示在 xxx 分支上以 xx 分支为基准执行变基,并且切换到 xxx 分支。
  6. git rebase 之后,在 master 分支可以 merge,也可以 rebase,也可以 cherry-pick 你的分支,具体看喜好
posted @ 2020-11-04 23:04  馒头加梨子  阅读(183)  评论(0编辑  收藏  举报