git使用
https://git-scm.com/book/zh/v2
三种状态
好,请注意。 如果你希望后面的学习更顺利,记住下面这些关于 Git 的概念。 Git 有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。 已提交表示数据已经安全的保存在本地数据库中。 已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域。
安装-----Google it
为每一台电脑配置身份信息
- $ ssh-keygen -t rsa -C "email" //public key for push
- git remote add nickName gitUrl // conn remote
- git push -u remoteBranch localBranch
查看分支
创建分支
合并分支
一定要切换到被合并的分支上去合并
比如说A要合并A1
那么先要切换到A1,然后在A1上面执行merge
find .get/objects -type f 查询object是下面所有的文件
git hash-object -w xxx 放到git数据库并且返回hash值 add操作?
git 对象
- Blob 对象
- tree对象
- commit对象
首次提交,提交一个简单的文件 a.txt ,commit 之后的图如下
如图所示,生成了 3 个对象,一个 commit 对象,一个 tree 对象,一个 blob 对象。图上蓝底是 commit 对象,灰底的是 tree 对象,白底的是 blob 对象,每个对象节点的标题是对象的 key (SHA 摘要)缩略表示。 对于 commit 对象,tree 内容表示这个 commit 对应根目录的 tree 对象,parent 表示父 commit 节点,通常commit 只有一个父节点,也可能没有(首次提交时 parent 为空),也可能有多个(合并节点),commit 对象还保存了 commit message 等信息。 对于 tree 对象,里面的内容包含了文件名,文件对应的 blob 对象的 key,或者是目录名和目录对应 tree 对象的 key。 对于 blob 对象,表示一个实际文件对象的内容,但不包括文件名,文件名是在 tree 对象里存的。
通过 git log 命令获取最新 commit 的 key
通过 git cat-file -p <object key> 获取 key 对应 object 的内容,根据 object 里的内容,继续探索,就可以访问到所有关联 object.
HEAD 为什么要通过 refs/heads/master 中转一下,而不是直接指向 master 分支的提交?
HEAD 可以直接指向提交吗?
分支指针切换
远程仓库
基于文件共享(nfs)
linux ssh
装好git yum install git
git地址:username@ip:/dir
密码
gitlab
https://about.gitlab.com/installation/#centos-7
传上去
gitlab-ce-10.8.2-ce.0.el7.x86_64.rpm
安装 rpm -ivh /home/tools/gitlab-ce-10.8.2-ce.0.el7.x86_64.rpm
gitlab-ctl start 启动gitlab
访问gitlab http://ip:port
设置密码
对git与svn进行区别总结:svn是对文件的一个操作,而git是对元数据的操作。如果是两个文件一模一样,但是名字不一样,对于svn来说会存储两个文件,但是对于git来说是两条分支(commit对象指向tree对象再指向blob对象)
路神:https://shimo.im/docs/ERE3UoWQa2gwH20w/read