各种对象的引用方法
**引用的方式可以是
完整的校验码 full sha-1
长于6位,唯一标识当前对象的可以 partial sha-1
日期规格 date spec
特殊符号
carrot parent 秃子符 引用上一级的指针
tree pointer 树指针
**
一般使用 6位5位
日期的特殊表示方式
倒数第5次
秃子符表示master分支的,最近一次提交的,副提交的副提交
波浪线表示第二个
秃子符是当前一次提交的上一次提交
再往前一次,可以理解成第二个副提交
可能还有第三个,看你有几个分支
^1表示当前分支的副提交
^2表示第二个分支的副提交
$3表示第三个分支上的副提交
可以理解为副提交的副提交,上一代的上一代
想要表示第二个分支 上一代的上一代
当前分支上一代的上一代的第二个分支的副提交
第一个提交,下一个副提交,下一个副提交,2第二个分支的副提交
走的路是一样的,表达方式不同
两个提交之间的所有提交
从这次提交以后的所有提交
副提交的副提交的副提交的,到第二个分支的副提交
对应的提交的引用方式可以灵活引用,谁和谁比较都可以用这种非绝对路径的表示法
这就是提交的引用方式
如何去对应git的工作流了,branch工作流
**normal development 正常的开发方式
want to try an idea 试一个新的注意
have to do a hotfix 热修复分支
merge idea into development 如何将多个开发人员的结果合并一起
push to production
**
看一下branch ,切换到branch showbranch 显示分支所有的关系的
这是同一个级别 的
c0之后又两个分支 ,develop和story 95
创建一个idea的新分支,并切换到idea分支
热修复怎么做,修改后直接提交,并加标签
如果想把多个研发人员的主意合并在一起
而后把merge的生产结果推送的生产环境中去
两种不同的合并逻辑
如果生产环境尝试把多个合并
流行的工作流又哪些
集中仓库模型,都使用一个shared repository
开发人员各自使用本地的仓库开发自己的功能
一个稳定版的集中仓库,每个开发负责其中一个模块,每个人把仓库克隆到自己主机上来,然后再自己主机上开发研发
第一个研发上传了,第二个研发需要fetch再merge
但是这种模式久了会乱套的,所以就需要专门的人来合并
dictator; 发号施令者
每一个人实现研发之前,从blessed拿到本地开始开发,开发完以后i推给能访问的仓库,lieutenant,
dictator fetch到本地,merge 合并之后统一推到blessed、
第三种方式,专门用来负责合并的
每个开发需要先克隆blessed稳定版本,然后对应放到远程仓库中去
管理员用fetch和rebase或merge的方式来合并,合并之后再上传到仓库
如何实现有这么一个公共仓库
应该放在一个服务器上,这个服务器应该是局域网或互联网(开源程序才能直接放到互联网上,)的
真正使用这个服务器的方法有两种,
开源软件放到互联网中,
1.访问代码需要验证,不能匿名访问
2.放到公司内部网络中,作为一个代码仓库服务器
远程代码服务器的仓库,想用急需要克隆到本地再本地进行修改再push上去,所以远程服务器上是不需要工作目录的
假设本地有一个
myproject的项目目录,远程服务器不需要目录,直接把.git当作一个功开的目录,名字叫做myproject.git
可以指定一个裸仓库,是没有工作目录的
git init会创建一个隐藏的.git目录–bare创建一个裸仓库,没有工作目录,直接指明仓库名即可
但是远程仓库如何输出给别人来访问
1.把这个仓库所在路径作为一个http协议的url(http协议很容易get,想要push如何,需要put操作,并且认证,建议https)2.使用ssh,再远程主机给每个使用的人创建远程账号,再各自的本地主机生产一对密钥,把公钥部分放到远程服务器上家目录的,有了密钥认证,推送就可以使用ssh协议即可
可以使用ssh推,https往下拉,使用ssh认证更加安全
git有专门实现仓库共享的协议 Git服务器:只能拉不能推
协议:本地协议(local)、HTTP/HTTPS协议、SSH协议、Git协议;
本地协议:最原始的方式(同一个主机有多个用户,可以彼此之间克隆)
URL:
/path/to/repo.git 路径,每一次克隆可能是基于硬链接创建的
file:///path/to/repo.git 协议,每一次克隆都是直接复制的
Git协议
由git-daemon程序提供,监听在tcp的9418端口;仅支持“读”操作,无任何认证功能;
URL:
git://host/path/to/repo.git
git://host/~user/path/to/repo.git
SSH协议
URL
ssh://[USER@]host[:port]/path/to/repo.git
ssh://[USER@]host[:port]/~USERNAME/path/to/repo.git
URL2
[USER@]hostpath/to/repo.git
HTTP/HTTPS协议
1.6.5-:哑http协议
1.6.6+:智能http协议
智能协议支持 读/写/认证
URL:
http://host/path/to/repo.git
我们应该使用智能https协议来使用远程仓库
github可以给你提供公共托管服务
如果有些文件不像被跟踪,可以创建.gitignore文件
readme文件不想被追踪,就直接写readme即可
版本
点击创建就好了
可以用gitremote 命令添加一个远程仓库
ssh没配置现在只能用https
** 代表所有分支,现在就已经把本地仓库和远程仓库建立了关联关系,现在可以往上推了*
推的时候指明 repositoory和指明引用的refspec),来完成推送
指定推哪个分支
把本地的myproject推送的远程仓库中去,输入用户名和密码
提示二者不能兼容,两个文件到底覆盖不覆盖,不确定
git pull 直接取回来自动合并
提交为0.4.1
现在就提交好了,现在已经push到本地来了
可以把本地的push到远程仓库上
这样可以把本地的内容推送到远程仓库上了
删除了,也可以克隆,把远程仓库的内容到本地
能看到以前的每一次提交
也可以推的时候打标签,因为标签是我们方便引用的标识符
git tag打标签
如果在github上想要使用ssh协议
ssh密钥
创建的密钥的方法
生成后添加
生成一对密钥,公钥放在github
把看到的文件内容复制
现在就可以了
现在就可以使用ssh了
删除几行
完成以后可以直接往上推
先把远程的仓库删除了,刚才是删除了再git clone的所以目录名改变了
现在的url和fetch已经是ssh协议路径了,
删掉几行
推送到远程主机上
这就是如何使用github集中式的托管仓库的
也有专门写代码文章的htt ps://www.gitbook.com
如果不想使用github,就需要自己创建一个托管服务器
可以使用gitlab
是开源的自己去建立代码托管服务器
有两种版本
使用ruby语言研发,组件非常多,依赖postgresql,redis,安装配置极为复杂
好在提供了ce,版本,里面有初始化脚本