深入了解Git

2017-04-05  本文已影响63人  茗涙

git基本命令还可以参考Pro Git;
以下是mac系统终端操作,常用命令可以参考http://www.jianshu.com/p/3291de46f3ff

** 附上方便操作的终端快捷键**

Command + K 清屏
Command + T 新建标签
Command +W 关闭当前标签页
Command + S 保存终端输出
Command + D 垂直分隔当前标签页
Command + Shift + D 水平分隔当前标签页
Command + shift + {或}向左/向右切换标签

git基本操作流程

  1. 创建测试文件夹,名字我命名为JHGit;
mkdir JHGit
目录下的文件

2.切换到JHGit文件夹下

cd JHGit

3.初始化git

git init
初始化后的文件夹目录

4.先查看下.git文件内容

vi .git   //或者  
cd .git
vim编辑器下的内容

也可以使用tree命令!
温馨提示:mac下默认是没有 tree命令!!!
下面几个方法可以试试

1.可以使用find命令模拟出tree命令的效果

find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'

2.手动alias一下,在你的.bash_profile或者.zshrc中添加:(前提你已经安装了oh-my-zash)

alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"

3.可以使用 homebrew 安装 tree 命令行:

brew install tree
Paste_Image.png

5.HEAD

当前所在分支

6.查看下config里面的东西:设置了一些默认的参数之类的

cat .git/config
config

7.description是描述文件

对当前库的描述

8.根据HEAD打印的路径提示找到refs/heads/下

HEAD路径

9.hooks(脚本文件夹),具体了解可以参考GIt Hooks

Paste_Image.png

10.info里面的exclude objects里面的info和pack目前都是空文件

11.和远程仓库建议联系

 git remote add origin https://github.com/Shenjinghao/JHGit

** 注意:连接简历后,可以正常git pull代码,但是如果不做修改,是无法git push提交代码,原因是此时的master的分支不指向任何commit。**

其实这里也可以通过git clone命令跳过和远程仓库连接这一步!

git clone https://github.com/Shenjinghao/JHGit.git

连接后config内容变为下图


连接后的config内容

12.使用touch命令创建个test1文件,工作区会提示,通过命令

git add test1

将test1添加到暂存区,也可以跳过add阶段,既跳过使用暂存区域,直接把已经跟踪的文件暂存起来一起提交。

git commit -am“xx”  ||   git commit -a -m“xx”
创建commit 添加暂存区 提交commit

然后此时的.git变化如下

变化后的.git 变化的.git

使用log命令可以看到最近的log日志

git log
git log .git的新增内容 对应关系

从上面几幅图可以看出,提交的commit消息,最新的commit id和origin的commit id都会被保存

下面引入git的主要工作方式

三个区域
Three Sections
index 一堆乱码

使用

hexdump -C index 
index内部数据

具体数据代表的意义可以参考git index data format

总结

先打印log

git log

通过命令

git cat-file -p <commit id>
git cat-file
通过以上数据可以发现git所有功能都基于三棵树。

综上所述,git的实现都是通过比较遮三棵树而进行工作的。

git-firegit-fire

References

  1. Git 官方文档
  2. Git man page
  3. A Little Of Git's Internals
  4. sed编辑二进制文件
  5. git index data format
上一篇 下一篇

猜你喜欢

热点阅读