git 入门
在github.com上创建自己的一个仓库
打开网址https://github.com/new
输入Repository name(仓库名)
点击Create repository即可
上传开发密钥之后可以获取写入权限
>>>cd ~/.ssh
>>>ssh-keygen –t rsa –b 1024 #一路回车即可
>>>cd ~/.ssh
>>>cat id_rsa.pub #将密钥复制到git->settings->Deploy keys->key里面
Git文件的两种类型、三种状态、三个工作区
两种类型
- 已跟踪
- 未跟踪
三种状态
- 已提交(committed)
- 已修改(modified)-
- 已暂存(staged)
三个工作区
- Git仓库(本地的.git目录)
- 工作目录(本地的temp目录)
- 暂存区域(stash)
Git工作流程
在工作目录中增、删、改文件
暂存文件,将文件的快照放入暂存区域
提交更新,找到暂存区域的文件,将快照永久存储到Git仓库目录
Git帐户配置
获取Git帮助
获取Git仓库
将操作加入到版本控制
在Git中文件有两种类型:已跟踪/未跟踪。
已跟踪文件是指那些被纳入了版本控制的文件。
未跟踪文件是指已跟踪之外的文件,他们即不存在于上次快照的记录中,也没有放入到暂存区。
检查当前文件状态
忽略不需要的文件
将工作区文件加入到暂存区,即跟踪此文件
查看工作区、暂存区、仓库区间的改动
Git中移除文件
Git中移动文件
如何查看提交历史
Git撤消操作
Git还原指定分支
比如删除了几个文件,新加了几个文件,提交之后发现删除了,要还原.
远程仓库的使用
打标签
像其他版本控制系统(VCS)一样,Git可以给历史中的某一个提交打上标签,以示重要。比较有代表性的是使用此功能来标记发布结点(V1.0等等)。
列出标签
创建标签
附注标签
Git中的分支操作
在使用git init初始化仓库之后,并不存在master分支,需要提交一些数据之后才会出现master分支。
在初始化仓库之后如果想立刻创建一个新分支会报错:fatal: 不是一个有效的对象名:'master'
合并分支
快进(fast-forward)是指Git指针只是简单的将指针向前移动。可以理解为它的直接上游。这种合并一并是没有冲突的。
非快进全并分支容易造成冲突,此时需要手动解决冲突然后加入到暂存区即可。
拉取分支
git fetch 命令是从服务器上抓取本地没有的数据,它并不会修改工作目录中的内容。它只会获取数据然后让你自己合并。
在大多数情况下:git pull 等于git fetch 加 get merge两条命令。
推送分支
跟踪分支
删除远程分支
Git使用技巧
中断保护
ssh-add
git怎样删除未监视的文件untracked files
HEAD DETACHED 问题
How to fix git HEAD detached from a branch
HEAD是一个头指针,通常情况下指向不同的分支,每个分支对应一个commit( 准确的说,每个分支对应多个commit,但是只有一个顶层的commit,而commit之间是简单的线性关系。)
git checkout 其实是修改HEAD文件的内容,让它指向不同的分支。
(HEAD detached from 96e6312)
Ubuntu服务器配置Gitlab
配置域名 /etc/gitlab/gitlab.rb
添加附加nginx配置文件
重新生成gitlab配置
遇到的一些坑
常用命令
gitlab 使用现有 nginx 服务器
gitlab集成了nginx服务器,而且在操作上有许多中转,所以最后决定使用现有的nginx服务器
gitlab 安装自带 nginx,如果想利用原有 nginx,可按如下操作:
nginx 增加虚拟主机配置
vim /etc/nginx/sites-enabled/gitlab.rjyxz.com
禁用自带 nginx
vim /etc/gitlab/gitlab.rb
重启 nginx, 重启gitlab
权限配置
访问会报502。原本是 nginx 用户无法访问gitlab用户的 socket 文件,用户权限配置,因人而异。粗暴地: