前言
git是一个开源的分布式版本控制系统,有追踪文件的变更、实现并行开发等功能,已经是项目开发的必备软件。本文主要整理了git的文件操作、日志操作、分支管理、标签管理、版本回退等常用操作。
基础操作
基础配置
- 配置用户:
git config --global user.name <username>
- 配置邮箱:
git config --global user.email <email>
- 查看配置:
git config <要查看的字段>
- 配置ssh-key:
ssh-keygen -t rsa -C "[email protected]"
文件操作
- 添加单文件:
git add <filename>
- 添加所有修改:
git add .
- 提交修改:
commit -m 'the des of current commit'
查看日志
- 查看最近提交日志:
git log
- 优化日志输出:
git log --pretty=oneline
远程仓库
- 本地-远程仓库建立关联:
git remote add origin https://github.com/test/test.git
- 查看远程仓库的关联:
git remote -v
- 推送至远程仓库:
git push -u origin master
分支管理
分支命令
- 查看所有分支:
git branch
- 新建分支:
- 新建一个分支:
git branch <branch_name>
- 新建分支并切换到新分支:
git checkout -b <branch_name>
- 新建一个分支:
- 切换分支:
git checkout <branch_name>
- 合并分支:
git merge dev
- 分支删除:
git branch -d <branch_name>
- 抓取分支:
git pull origin dev
常用分支
master
:保持稳定,只用来发布新的版本,不要直接在master上修改dev
:进行开发工作的分支,在发布版本时再将dev上的修改合并到masterbug
:在程序出现bug时,新建一个用于修改bug的分支feature
:在程序出现新功能需求时,新建一个用于功能实现的分支
标签管理
- 创建标签:
git tag <tag_name>
- 创建带说明的标签:
git tag -a <tag_name> -m <说明内容>
- 查看所有标签:
git tag
- 查看指定标签:
git show <tag_name>
- 删除标签:
- 本地:
git tag -d <tag_name>
- 远程:删除本地后执行
git push origin :refs/tags/<tag_name>
- 本地:
- 推送标签到远程:
- 推送指定标签:
git push origin <tag_name>
- 推送所有标签:
git push origin --tags
- 推送指定标签:
其它命令
工作现场
- 保存
- 保存当前工作现场:
git stash
- 查看已存工作现场:
git stash list
- 保存当前工作现场:
- 恢复
git stash apply
:恢复时不会删除stash中的内容git stash pop
:恢复时会删除stash中的内容git stash apply stash@{n}
:指定恢复第n次存储的工作
版本回退
- 回退单个文件:
git reset commit_id <filename>
- 回退所有文件1:
git reset --hard HEAD^<HDAD_num>
- 回退指定提交并删除额外文件:
git commit --hard commit_id
- 回退提交历史但保留暂存区2:
git commit --soft commit_id
- 保留工作目录并清空暂存区:
git commit --mixed commit_id
- 删除暂存区文件:
git checkout -- <filename>
在合并提交时,因为存在一个以上的父级,意味着至少有两条路径可以选择。对于3路合并(两条分支合并为一体),第一父级在你执行合并命令时所在的分支,第二父级在你传入
git merge
命令的那个分支上。~
字符将在第一父级上追踪,^
字符将在其它父级上进行追踪,比如追踪第二父级:git show HEAD^2
,追踪第二父级的HEAD的祖父级:git show HEAD^2^1
参考
-
这是上帝的杰作. Git系列之Refs 与 Reflog. segmentfault. [2017-01-03] ↩︎
-
carway. Git Reset 三种模式. carway. [2019-01-11] ↩︎