git config

git config存在三个地方 :
1./.git/config 项目级别
2.~/.gitconfig 用户级别
3./etc/gitconfig 系统级别

git config -e 查看项目级别的配置
git config -e --global 查看用户级别的配置
git config -e --system 查看系统级别的配置

添加git用户配置
git config user.name “test”
git config user.email “test@gmail.com”

添加别名配置
git config --global alias.st status
git config --global alias.ci commit

删除配置
git config --unset user.name

查看配置
git config user.name

-------------
git log 查看提交日志

git log --pretty=oneline 按行显示提交日志

工作区 暂存区stage 版本库

git diff 查看工作区与暂存区之间的差异
got diff HEAD 查看工作区与HEAD(当前版本库的头指针)进行比较
git diff master 查看工作区与某分支进行比较

git diff --cached 查看提交暂存区和版本库中文件的差异
git diff --staged 同上

git status 查看文件状态
git status -s 查看文件状态的精简格式
注意M的位置和颜色..如果M前有空格则是未add到暂存区.如果无空格已经add到暂存区.如果有两个MM代表之前提交过到暂存区,同时还有没有提交到暂存区的内容

当执行 git status 或者git diff 扫描工作区改动的时候 先根据.git/index文件中记录的时间戳,长度等信息判断工作区文件是否改变,如果工作区的文件时间戳或者长度改变了,需要打开文件读取文件内容与更改前的原始文件相比较判断文件内容是否被更改.若未改变则将该文件新的时间戳和长度记录到index文件中

git add执行时,暂存区的目录树将被更新,同时工作区修改的文件内容会被写到对象库中的一个新对象中.该对象的ID会被记录在暂存区的索引中

git commit 执行时,暂存区的目录树会写到对象库中,master分支会做相应的更新,即master最新指向的目录树就是刚刚写入的暂存区目录树

git reset HEAD 暂存区的目录树会被重写,被当前分支指向的目录树所替换

git rm --cached <file>会直接从暂存区删除文件,工作区不作出改变

git checkout . 或者git checkout -- <file>会用暂存区全部的文件或指定的文件替换工作区的文件.这个操作很危险,会清除工作区中未添加到暂存区的改动.

git checkout HEAD . git checkout HEAD <file> 会用HEAD指向的master分支中的全部或部分文件替换暂存区和工作区中的文件.极危险.会同时清除工作区中未提交的改动和清除暂存区中未提交的改动

.git/index 文件索引目录树,记录文件名和文件的状态信息
.git/objects 存储文件的内容
.git/refs 保存引用的命名空间其中heads目录下的引用又称为分支

git branch 查看当前的工作分支 * 表明当前分支

git log -l HEAD
git log -l master
git log -l refs/heads/master
上面三个返回值是一样的..

find .git -name HEAD -o -name master
.git/HEAD
.git/logs/HEAD
.git/log/refs/heads/master
.git/refs/heads/master

HEAD指向当前分支.
refs/heads/master 里面保存了最后一次提交的哈希值.
通过哈希值..可以找到 tree parent 的哈希值
git cat-file -p xxxxxxx

找到tree.能找到具体文件..
找到parent,能找到上一次提交.一直往前找.直到没有parent

git reset --hard HEAD^ 重置master到上一个提交.HEAD^代表上一次提交,会改变ref/heads/master中的commit哈希值到为上一次提交的哈希值.并改变工作区

这样使用会很危险,会彻底的丢弃历史.

如何恢复呢?
使用reflog查看日志文件.
git reflog show master | head -5
然后恢复到想要的历史
git reset --hard master@{1}

HEAD也是一个指针,可以指向分支或者任何一次commit

git checkout 会重写工作区

git checkout branch 迁出branch分支,更新HEAD以指向branch分支,以及用branch指向的树更新暂存区和工作区

git checkout 汇总工作区/暂存区和HEAD的差异
git checkout HEAD 同上
git checkout -- filename 用暂存区中filename文件来覆盖工作区中的filename文件.相当于取消上次执行git add filename以来的本地修改

git checkout branch --filename 维持HEAD指向不变.用branch所指向的提交中的filename替换暂存区和工作区相应的文件.注意会降暂存区和工作区中的filename直接覆盖.

git checkout -- . git checkout .会取消所有本地的修改..相当于用暂存区的所有文件直接覆盖本地文件,不给用户任何确认的机会.

git 的一些笔记的更多相关文章

  1. Git Pro读书笔记

    本文为Git Pro读书笔记,所有内容均来自Git Pro 1 Git基础 1.1 记录每次更新到仓库 在Git里,文件有4种状态,modified, staged, commited, 还有一种状态 ...

  2. git的学习笔记(二):git远程操作

    1.创建ssh key ssh-keygen -t rsa -C "your_email@example.com" 执行命令后会在用户的家目录生成.ssh的隐藏文件夹,文件夹里有公 ...

  3. git tag 常用笔记

    git tag 常用笔记 查看 tag 列出现有 tag git tag 列出 v1.4.2 相关的 tag git tag -l "v1.4.2" 查看指定 tag 的信息 gi ...

  4. git学习小结 (笔记)

    Modesty helps one to go forward, whereas conceit makes one lag behind. "虚心使人进步,骄傲使人落后" 注:本 ...

  5. HIT2019春软件构造->Git&Github学习笔记

    由于软件构造课程需要,学习使用git,以下作为学习笔记. 一.Git初始化及仓库创建和操作  1.基本信息设置(设置签名)  命令        项目级别/仓库级别:仅在当前本地库范围内有效 git ...

  6. git的学习笔记整理

    Git学习较好的网址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373 ...

  7. git常用操作笔记

    这是我看了廖雪峰的git教程,写的笔记,仅作为一个学习的记录 一.大多数我们面临的是已经有一个进行中的项目了,我们只需克隆下来就可以了 1.安装git,安装完后,可输入git,回车,查看是否已安装 2 ...

  8. Git源代码管理笔记

    很早之前也学过git但是没有详细的记录,这次是做个复习,巩固 若有不对的地方请您指出 目录 Git和SVN有什么区别? 什么是Git? github仓库 Star和Fork Pull request ...

  9. 版本控制工具Git的学习笔记

    在网上看到一个很不错的Git教程,学习后果断要做一下总结. 教程地址:http://www.liaoxuefeng.com/ 总结要点: 安装Git因为我个人的开发主要是基于windows环境下,所以 ...

  10. 代码管理工具 --- git的学习笔记二《git的工作原理》

    通过几个问题来学习代码管理工具之git 一.git是什么?为什么要用它?使用它的好处?它与svn的区别,在Mac上,比较好用的git图形界面客户端有 git 是分布式的代码管理工具,使用它是因为,它便 ...

随机推荐

  1. 网页采集(通过HtmlAgilityPack+XPath)

    有HtmlAgilityPack这个类库可以更方便地对HTML内容进行分析和提取.因此今天特别学习和实践了一下HtmlAgilityPack和XPath,并作下笔记. 1.下载HtmlAgilityP ...

  2. 虚机启动失败-Event 1069

    Failover cluster中的一台虚机启动失败. 报错如下: 文字信息关键字如下: Event 1069; Event 21502; 0x80004005; Cluster resource ' ...

  3. JDK 1.7版本的 新特性

    摘自: http://yanguz123.iteye.com/blog/1934766 Jdk1.7的新特性: 1,switch中可以使用字串 Java代码: String s = "tes ...

  4. Maven核心概念之仓库,生命周期与插件

    宏观图 一.仓库 统一存储全部Maven项目共享的构建的位置就是仓库. 仓库分为本地仓库和远程仓库.远程仓库又分为中央仓库(中央仓库是Maven核心自带的远程仓库),伺服(还有一种特殊的远程仓库,为节 ...

  5. vi命令整理

    vi命令整理 u 撤销上一次操作 ctrl+r 恢复上一次操作 : 跳转至第1行 :$ 跳转至最后一行 ctrl+f 向文章末尾翻页 ctrl+b 向文章开始翻页 yy 复制一行 p 粘贴刚刚复制第一 ...

  6. HUD Text 学习

    使用版本 NGUI_HUD_Text_v1.11 .英语水平差,难免有很多不足之处,忘批评指正.本文为鬼脸苹果原创 HUD Text 的其中一个用途是,涉及到非战斗场景时,你能通过在角色头顶显示文本行 ...

  7. 获取ArcGIS安装路径

    在要素类进行符号化时,使用axSymbologyControl需要安装路径下的Style文件路径,在AE9.3+VS2008中是这样的: Microsoft.Win32.RegistryKey reg ...

  8. iOS 本地通知 操作

    iOS 本地通知 操作 1:配置通知:然后退出程序: UILocalNotification *localNotif = [[UILocalNotification alloc] init]; loc ...

  9. (step6.1.1)hdu 1879(继续畅通工程——最小生成树、kruscal)

    题目大意:输入一个整数n,表示有n个村庄.在接下来的n(n-1)/2行中,每行有4个整数begin  end  weight  flag.分别表示从begin到end之间可以连通 ,他们之间的费用为w ...

  10. [Exception JavaWeb 1] - Cause: com.microsoft.sqlserver.jdbc.SQLServerException: '@P2' 附近有语法错误。

    严重: Servlet.service() for servlet [springMVC] in context with path [/ExceptionManageSystem] threw ex ...