fast-forward
- 如果可能,合并分支时Git会使用fast-forward模式
- 在这种模式下,删除分支时会丢掉分支信息
- 合并时加上--no-ff参数会禁用fast-forward,这样会多出一个commit id
- git merge --no-ff dev
- 查看log git log --graph
git 回退版本
- git reset --hard HEAD^ (回退到上一个版本)
- git reset --hard HEAD~1 (回退到上一个版本)
- git reset --hard commit_id (回退到某一个提交) 可以通过下面这个命令查看需要回退的commit_id
- git reflog(可以查看到所有的历史提交版本)
保存工作现场
- 保存现场
- git stash
- git stash list
- 恢复现场
- git stash apply (stash内容并不擅长,需要通过git stash drop stash@{0}手动擅长)
- git stash pop(恢复的同时也将stash内容删除)
- git stash apply stash@{0} git stash 命令是跨分支的,在一个分支上git stash,可以在另外一个分支上git stash apply
git 标签
- 新建标签,标签有两种:轻量级标签(lightweight)与带有附注的标签(annotated)
- 创建一个轻量级标签
- git tag v1.0.1
- 创建一个带有附注的标签
- git tag -a v1.0.2 -m 'release version'
- 删除标签
- git tag -d tag_name
git blame filename 查看文件更改的详细信息
git diff
- git diff: 比较的是暂存区与工作区文件之间的差别
- git diff HEAD: 比较的是最新提交与工作区文件之间的差别。
- git diff -cached: 比较的是最新提交与暂存区文件之间的差别。
远程推送
- git pull(拉取,同时会执行合并merge,pull == fetch+merge)
- git push (推送)
- git remote add origin github.com/ningcg/lear…
origin代表远程,origin是约定俗成的名字,上面这个命令就是用origin来代表远程地址(github.com/ningcg/lear… - git push -u origin master
把master分支和origin关联,在master分支上执行push会直接推送到远程
git remote show git remote show origin
* remote origin
Fetch URL: https://github.com/ningcg/learngit.git
Push URL: https://github.com/ningcg/learngit.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
- git branch -av 查看所有分支
基于git分支的开发模型
- develop分支(频繁变化的一个分支)
- test分支(供测试和产品使用的一个分支,变化不是特别频繁)
- master分支(生产发布分支,变化非常不频繁的一个分支)
- bugfix(hotfix)分支(生产系统当中出现了紧急bug,用于修复的分支)