git基础手册

前言

git是一个开源的分布式版本控制系统,有追踪文件的变更、实现并行开发等功能,已经是项目开发的必备软件。本文主要整理了git的文件操作、日志操作、分支管理、标签管理、版本回退等常用操作。

基础操作

基础配置

  1. 配置用户:git config --global user.name <username>
  2. 配置邮箱:git config --global user.email <email>
  3. 查看配置:git config <要查看的字段>
  4. 配置ssh-key:ssh-keygen -t rsa -C "[email protected]"

文件操作

  1. 添加单文件:git add <filename>
  2. 添加所有修改:git add .
  3. 提交修改:commit -m 'the des of current commit'

查看日志

  1. 查看最近提交日志:git log
  2. 优化日志输出:git log --pretty=oneline

远程仓库

  1. 本地-远程仓库建立关联:git remote add origin https://github.com/test/test.git
  2. 查看远程仓库的关联:git remote -v
  3. 推送至远程仓库:git push -u origin master

分支管理

分支命令

  1. 查看所有分支:git branch
  2. 新建分支:
    1. 新建一个分支:git branch <branch_name>
    2. 新建分支并切换到新分支:git checkout -b <branch_name>
  3. 切换分支:git checkout <branch_name>
  4. 合并分支:git merge dev
  5. 分支删除:git branch -d <branch_name>
  6. 抓取分支:git pull origin dev

常用分支

  1. master:保持稳定,只用来发布新的版本,不要直接在master上修改
  2. dev:进行开发工作的分支,在发布版本时再将dev上的修改合并到master
  3. bug:在程序出现bug时,新建一个用于修改bug的分支
  4. feature:在程序出现新功能需求时,新建一个用于功能实现的分支

标签管理

  1. 创建标签:git tag <tag_name>
  2. 创建带说明的标签:git tag -a <tag_name> -m <说明内容>
  3. 查看所有标签:git tag
  4. 查看指定标签:git show <tag_name>
  5. 删除标签:
    1. 本地:git tag -d <tag_name>
    2. 远程:删除本地后执行git push origin :refs/tags/<tag_name>
  6. 推送标签到远程:
    1. 推送指定标签:git push origin <tag_name>
    2. 推送所有标签:git push origin --tags

其它命令

工作现场

  1. 保存
    1. 保存当前工作现场:git stash
    2. 查看已存工作现场:git stash list
  2. 恢复
    1. git stash apply:恢复时不会删除stash中的内容
    2. git stash pop:恢复时会删除stash中的内容
    3. git stash apply stash@{n}:指定恢复第n次存储的工作

版本回退

  1. 回退单个文件:git reset commit_id <filename>
  2. 回退所有文件1git reset --hard HEAD^<HDAD_num>
  3. 回退指定提交并删除额外文件:git commit --hard commit_id
  4. 回退提交历史但保留暂存区2git commit --soft commit_id
  5. 保留工作目录并清空暂存区:git commit --mixed commit_id
  6. 删除暂存区文件:git checkout -- <filename>
    https://cdn.jsdelivr.net/gh/wefantasy/FileCloud/img/202108151817983.png

在合并提交时,因为存在一个以上的父级,意味着至少有两条路径可以选择。对于3路合并(两条分支合并为一体),第一父级在你执行合并命令时所在的分支,第二父级在你传入git merge命令的那个分支上。~字符将在第一父级上追踪,^字符将在其它父级上进行追踪,比如追踪第二父级:git show HEAD^2,追踪第二父级的HEAD的祖父级:git show HEAD^2^1

参考


  1. 这是上帝的杰作. Git系列之Refs 与 Reflog. segmentfault. [2017-01-03] ↩︎

  2. carway. Git Reset 三种模式. carway. [2019-01-11] ↩︎