Gitlib Gitlib
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)

Ravior

以梦为马,莫负韶华
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)
  • 操作系统

  • 计算机网络

  • 数据结构和算法

  • MySQL

  • Redis

  • Nginx

  • MongoDB

  • 其他

    • 阿里开源ETL工具:dataX上手指南
    • 常见的 POST 提交数据方式
    • 大型网站架构设计总结
    • SSL证书分类与选择指南
    • Times33哈希算法
    • Unicode,ASCII,UTF-8的区别
    • Git使用总结
      • 基本概念
      • 配置相关
        • 配置全局账户
        • 配置局部账户
        • 查看相关配置情况
      • 本地基本操作
        • 基本操作
        • 比较差异
        • 暂存区与⼯作区之间回滚
        • 其他
        • 加塞临时任务处理
      • 日志
      • 分支
        • 创建新分⽀支
        • 列出分⽀
        • 删除分⽀
      • 修改分支历史
      • 两分支之间的集成
      • 标签
      • 远程仓库操作
    • GitFlow在团队协作中的实践
    • 服务器进程管理利器-Supervisor
  • 计算机基础
  • 其他
Ravior
2013-01-27
目录

Git使用总结

# 基本概念

我们先来理解下 Git 工作区、暂存区和版本库概念:

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

下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:

git

  • 图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage/index),标记为 "master" 的是 master 分支所代表的目录树。
  • 图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。

# 配置相关

如果首次使⽤Git,那刚开始首先是需要配置身份信息。

# 配置全局账户

全局账户就是该账户对所有的 Git 仓库都有效

git config --global user.name '你的账户名称' 
git config --global user.email '你的 Email'
1
2

# 配置局部账户

局部账户也就是该账户只对当前Git仓库有效

git config --local user.name '你的账户名称' 
git config --local user.email '你的 Email'
1
2

# 查看相关配置情况

  • 查看全局的配置情况
git config --global --list
1
  • 查看某个仓库下的配置情况
git config --local --list
1

# 本地基本操作

git

# 基本操作

  • 初始化Git仓库
git init
1
  • 拷贝项目
git clone <repo> <directory> // repo: Git仓库,directory: 本地目录,默认为当前目录
1
  • 查看变更情况
git status
1
  • 查看当前⼯工作在哪个分⽀上
git branch -v
1
  • 切换到指定分⽀
git checkout 分⽀的名称
1
  • 把当前⽬录及其子目录下所有变更都加⼊到暂存区
git add . 
1
  • 把仓库内所有变更都假如到暂存区
git add *
1
  • 把指定⽂件添加到暂存区
git add ⽂文件1 ⽂文件2 ... ⽂文件n
1
  • 创建正式的 commit,也就是把当前的数据提交上去
git commit
1

# 比较差异

  • 比较某文件⼯作区和暂存区的差异
git diff 某⽂文件
1
  • 比较某文件暂存区和HEAD的差异
git diff --cache 某⽂文件
1
  • 比较⼯作区和暂存区的所有差异
git diff
1
  • 比较暂存区和HEAD的所有差异
git diff --cache
1

# 暂存区与⼯作区之间回滚

  • 把工作区指定⽂件恢复成和暂存区⼀样
git checkout 文件1 ⽂件2 ... 文件n
1
  • 把暂存区指定⽂件回复和HEAD一样
git reset ⽂件1 ⽂件2 ... 文件n
1
  • 把暂存区和工作区所有文件恢复成和HEAD一样
git reset --hard
1
  • ⽤difftool比较任意两个commit的差异
git difftool commit1 commit2
1

注意: 从工作区回滚到暂存区则⽤checkout,否则⽤reset

# 其他

  • 查看哪些⽂件没有被Git管控
git ls-files --others
1

# 加塞临时任务处理

  • 把未处理理完的变更先保存到stash中
git stash
1
  • 临时任务处理完后继续之前的⼯工作
git stash pop // pop 相当于栈的出栈和⼊入栈⼀一样,把之前的任务弹出来
git stash apply // 和 pop 不不同的是, apply 相当于从栈顶把任务取出来,但是不不过从栈中把任 务移除
1
2
  • 查看所有的stash
git stash list
1
  • 取回某次 stash 的变更
git stash pop stash @{数字n}
1

# 日志

  • 查看commit日志, ⽤一⾏显示
git log --oneline
1
  • 显示最近的n个commit
git log -n
1
  • ⽤图示显示所有的分⽀历史
git log --oneline --graph --all
1
  • 查看涉及到某⽂件变更更的所有
commit git log 某⽂文件
1
  • 查看指定文件的修改记录
git blame <file>
1

# 分支

# 创建新分⽀支

  • 基于当前分⽀支创建新分⽀
git branch 新分⽀支
1
  • 基于指定分⽀支创建新分⽀
git branch 新分⽀支 已有分⽀
1
  • 基于某个commit创建分⽀
git branch 新分⽀支 某个commit的id
1
  • 创建分⽀支并且切换到该分⽀
git chechout -b 新分⽀
1

# 列出分⽀

  • 列出本地分⽀
git branch -v
1
  • 列出本地和远端分⽀
git branch -av
1
  • 列出远端所有分⽀
git branch -rv
1
  • 列出名称符号某样式的远端分⽀
git branch -rv -l '某样式'
1

# 删除分⽀

  • 安全删除本地某分⽀
git branch -d 要删除的分⽀
1
  • 强⾏删除本地分⽀
git branch -D 要删除的分⽀支 
1
  • 删除已合并到 master 分⽀的所有本地分⽀
git branch --merged master | grep -v '^\*\| master' | xargs -n 1 git branch -d
1
  • 删除远端 origin 已不不存在的所有本地分⽀
git remote prune origin
1

# 修改分支历史

我们的仓库的内容每次变更执⾏commit的时候,都会⽣成一个新的commit,不过有时候,我们不想产⽣新的commit,⽽是想要通过修改之前的commit来变更仓库的内容,那么就可以使⽤用如下命令了。

  • 修改最后一次commit
git add
git commit --amend
1
2
  • 修改中间的commit(假设代号为X)
gt rebase -i X  // 前面的⼀个commit的id 
git add
git rebase --contiue
1
2
3

# 两分支之间的集成

  • 把A分支合入到当前分⽀,且为merge创建commit
git merge A分⽀支
1
  • 把A分⽀合⼊到B分⽀,且为Merge创建commit
git merge A分⽀支 B分⽀支
1
  • 把当前分⽀支基于B分⽀支做 rebase,以便便把B分⽀支合⼊入到当前分⽀支
git rebase B分⽀支
1
  • 把A分⽀支基于B分⽀支做rebase,以便便把B分⽀支合⼊入到A分⽀支
git rebase B分⽀支 A分⽀支
1

# 标签

  • 打标签
git tag 标签名
1
  • 从commit打上标签
git tag 标签名 commit的id 
1
  • 查看已有标签
git tag
1
  • 查看标签版本所修改的内容
git show 标签名
1
  • 删除标签
git tag -d 标签名
1

# 远程仓库操作

  • 列出所有的远程仓库
git remote -v
1
  • 增加远程仓库版本
git remote add [shortname] [url]
1

示例:

git remote add origin git@github.com:tianqixin/runoob-git-test.git
git push -u origin master
1
2
  • 删除远程仓库
git remote rm name 
1
  • 修改远程仓库名
git remote rename old_name new_name
1
#Git
上次更新: 2022/12/01, 11:09:34
Unicode,ASCII,UTF-8的区别
GitFlow在团队协作中的实践

← Unicode,ASCII,UTF-8的区别 GitFlow在团队协作中的实践→

最近更新
01
常用游戏反外挂技术总结
11-27
02
Golang开发实践万字总结
11-11
03
Redis万字总结
10-30
更多文章>
Theme by Vdoing | Copyright © 2011-2022 Ravior | 粤ICP备17060229号-3 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式