为了账号安全,请及时绑定邮箱和手机立即绑定

Git 使用大全(持续更新)

标签:
Git

Git 使用大全

用户配置

配置个人的用户名称和电子邮箱地址:

# 系统设置
$ git config --system user.name "userName"
$ git config --system user.email "user@email.com"
# 全局设置(当前用户)
$ git config --global user.name "userName"
$ git config --global user.email "user@email.com"
# 仓库设置(当前仓库)
$ git config --local user.name "userName"
$ git config --local user.email "user@email.com"

文本编辑器

# 设置一个叫 emacs 的默认文本编辑器
$ git config --global core.editor emacs

差异分析工具

# 设置一个叫 vimdiff 的默认差异化分析工具
$ git config --global merge.tool vimdiff

查看配置信息

# 全部
$ git config --list
# 局部
$ git config --local --list
# 查看某个变量
$ git config user.name

基本概念

  • 工作区:就是项目工程的目录
  • 暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库

关系图

Git 创建仓库

# 初始化,该命令会在当前文件夹生成一个 .git 目录
$ git init
# 指定一个目录作为初始化
$ git init newTest

添加修改或增加的内容到本地版本库

$ git add *.c
$ git add README
$ git commit -m "第一次提交"

克隆

# 参数说明:repo:Git 仓库 directory:本地目录
$ git clone <repo>
$ git clone <repo> <directory>

git status

# git status 以查看在你上次提交之后是否有修改
$ git status
# -s 参数,以获得简短的结果输出
$ git  status -s

git diff

# 尚未缓存的改动,多个文件比较
$ git diff
# 查看已缓存的改动
$ git diff --cached
# 查看已缓存的与未缓存的所有改动
$ git diff HEAD
# 显示摘要而非整个 diff
$ git diff --stat
# 将工作区中的文件和暂存区文件进行比较
$ git diff <文件名>
# 将工作区的文件和本地库历史版本进行比较
$ git diff <本地库版本><文件名>

git commit

$ git commit -m '第一次版本提交'

git reset HEAD

# git reset HEAD** 命令用于取消已缓存的内容
$ git reset HEAD hello.php 

删除

# 正常移除
$ git rm <file>
# 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
$ git rm -f <file>
# 文件从暂存区域移除
$ git rm --cached <file>

git mv

移动或重命名文件

Git 分支管理

# 创建分支
$ git branch <branch name>
# 切换分支
$ git checkout <branch name>
# 合并到当前分支
$ git merge <branch name>
# 删除分支
$ git branch -d <branch name>
# 查看分支
$ git branch -v or git branch 

合并冲突

# 解决完冲突后,执行以下命令
$ git add .
$ git commit

Git 查看提交历史

# 最完整显示
$ git log
# 简洁显示历史
$ git log --oneline
# 开启了拓扑图
$ git log --graph
# 逆向显示日志
$ git log --reverse --oneline
# 查找指定用户日志, -5 是显示 5 条记录的意思
$ git log --author=<name> --oneline -5
# 指定日期查询, --no-merges 选项以隐藏合并提交,可以执行几个选项:--since 和 --before,但是你也可以用 --until 和 --after
$ git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
# 以漂亮的格式显示历史提交信息
$ git log --pretty=oneline
# 多了指针显示
$ git reflog

Git 标签

# 带注解的标签
$ git tag -a v1.0.0
# 查看标签
$ git tag
# 指定标签信息命令
$ git tag -a <tagname> -m "标签"
# PGP签名标签命令
$ git tag -s <tagname> -m "标签"

Git 远程仓库

# 要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用
$ git remote add <shortname> <url>
# 查看当前的远程库
$ git remote
# 执行时加上 -v 参数,你还可以看到每个别名的实际链接地址
$ git remote -v

提取远程仓库

# 从远程仓库下载新分支与数据,命令执行完后需要执行git merge 远程分支到你所在的分支
$ git fetch
# 从远端仓库提取数据并尝试合并到当前分支
$ git merge

推送到远程仓库

$ git push <alias> <branch>

删除远程仓库

$ git remote rm [别名]

版本回退

$ git reset --hard <局部索引值>
# 只能往后退 ^ 向后退一个版本,^ 有几个就退几个版本
$ git reset --hard HEAD
$ git reset --hard HEAD^
$ git reset --hard HEAD^^
$ git reset --hard HEAD^^^
# 后退一个版本
$ git reset --hard HEAD~1 
# 后退两个版本 
$ git reset --hard HEAD~2
# reset 命令的三个参数对比
# --soft 仅仅在本地库移动 HEAD 指针
# --mixed 在本地库移动 HEAD 指针,重置暂存区
# --Hard 在本地库移动 HEAD 指针,重置暂存区,重置工作区

本地库与远程库交互

# 查询有哪些远程库
$ git remote -v
# 添加远程仓库和别名
$ git remote add origin <远程仓库地址>
# 推送本地库到远程库
$ git push origin master
# 克隆
$ git clone <远程仓库地址>
# 抓取远程仓库 origin 地址别名 master 远程仓库主要分支
$ git fetch origin master
# 切换远程仓库的 master
$ git checkout 'origin/master'
# 远程的 master 合并到本地的 master
$ git merge 'origin/master'
# git pull == git fetch + git merge
# 冲突解决 

SSH

$ ssh-keygen -t ras -C <用户名>

Git 工作流

Git 工作流

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
0
获赞与收藏
1

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消