git 入门及进阶

131 阅读2分钟

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,用于修复的分支)