小布老师Git视频
1、Git中的文件不是增量保存的 而是每个都存一份(原因:硬盘已经不是制约程序的因素)2、Git采用的算法是SHA13、MD5跟SHA1已经被王小云在04、05年破解4、作者:linux之父 Linus Torvalds5、安装Git Bash (命令行中用到的是linux中的命令)6、ls -la 显示隐藏文件 (windows or linux 目录前面加个.默认是隐藏文件)7、使用git init 初始化(该文件夹下面会生成一个.Git的隐藏目录)8、配置git
git config --global user.name 'liyang'git config --global user.email 'liyangfd@163.com'cd (到默认目录)pwd (显示当前目录)ls -la 查看目录列表 注意.gitconfigcat .gitconfig 这个会覆盖全局的切换回aaa目录 cat .git/configgit config user.name 'liyang'git config user.email 'liyangfd@163.com'9、Git:Three AreaRepository 仓库 默认.gitWorking directory 工作目录 Staging area/Index
Staging area 在.git 目录下的index中演示:1、在d:/temp/gitdemo中创建文件bbbmkdir bbbvi main.cgit add main.cgit commit -m 'this is one commit'rm -f main.cgit checkout -f HEAD 从.git中拿回来 备份时只要吧.git 压缩备份走就行了ls 查看 main.c又回来了The Git Object(就像是一个树blob是节点,tree是目录)blob: is used to store file data--it is generally a filetree: is basically like a directory -- it references a bunch of other threes and/or blobscommit: points to a single tree,markng it as what the project looked like at a certain point in timeBlob OjbectThe Blob object Generally stores the contents of a file演示:cd .. (即:gitdemo目录)mkdir ccccd ccccp ../bbb/main.c . (拷贝文件到当前目录)cat main.cgit hash-object main.cgit initgit add .find .git/objects/ -type f 列出这个目录下面所有普通文件git show 59c0 显示文件内容 59c0是刚才哈希的值 40个字节取前几个就行 了git cat-file -t 文件名 显示文件类型(commit ,tree,blob)Tree Objectgit ls-tree 文件名git show -s --pretty=raw 文件名 (commit的文件名)
演示mkdir dddcd dddmkdir libcd libmkdir inccd incvi trick.ccd ..vi mylib.ccd ..vi readmegit initgit add . (把当前目录下所有东西添加进去)git commit -m 'this is first my commit'find .git/objects/ -type fgit cat-file -t 文件名称Object&References1、Branches2、HEAD3、Remote
全面演示:mkdir fffcd fffmkdir libvi init.rbcd libmkdir basevi my_plugin.rbcd basevi base_include.rbcd 到fffgit initgit add .git commit -m '1 commit'find .git/objects/ -type f find .git/objects/ -type f |wc -l 此时个数为7cd /lib/basevi base_include.rb (添加一句话)cd ..cd ..git commit -a -m 'second commit'find .git/objects/ -type ffind .git/objects/ -type f |wc -l 此时个数为12 底层发生变化 它上层全部变化--下面开始添加Tagls -l .git/refs/tags git tag v1.0 (轻量级Tag)ls -l .git/refs/tags cat .git/refs/tags/v1.0git cat-file -t 79d7find .git/objects/ -type f |wc -l 此时个数为12 轻量级Tag并不占文件 所以还是12git tag -a milestone1.0 -m 'This is the first stable version'find .git/objects/ -type f |wc -l 此时个数为13 此时Tag占用一个文件ls -l .git/refs/tags cat .git/refs/tags/milestone1.0git cat-file -t (milestone1.0内容的名字) 返回tagvi init.rbgit commit -a -m 'this is third commit'find .git/objects/ -type f |wc -l 此时个数为16cat .git/headcat .git/refs/heads/mastercat .git/refs/tags/v1.0git cat-file -t 文件git archeive --format=tar --prefix=fff/ v1.0 | gzip>fff1.0.tar.gz 提取文件压缩(根据tag提取)tar zxvf fff1.0.tar.gz 解压文件
六、Git核心功能 分支合并git branch 查看分支git branch testing 创建分支git checkout testing 切换分支命令介绍:git --version 查看版本git init 初始化命令(下面将配置写在家目录的.gitconfig文件中)git config --global user.name 'liyang'git config --global user.email 'liyangfd@163.com'(下面将配置写在家目录的.git/config文件中)git config user.name 'liyang'git config user.email 'liyangfd@163.com'git add (将文件从working directory 放到 staging area)git commit(将文件从staging area 放到repository中)git commit -m 'Init Project' git checkout -f HEADgit hash-object main.c 计算main.c的哈希值git show -s --pretty=raw 文件名 (commit的文件名)git commit -a -m 'second commit' (-a 凡是这个目录下修改的文件自动添加进去)git archeive --format=tar --prefix=fff/ v1.0 | gzip>fff1.0.tar.gz (提取文件并压缩)tar zxvf fff1.0.tar.gz 解压文件git branch 查看分支git branch 查看分支git branch 分支名称git checkout 分支名称git branch -D testing 删除分支合并分支切换到主的分支 testing是分支名字git merge testing