GIT
git简介
- linus用c语言编写
- 2005年诞生
- 分布式版本管理系统
- 速度快,适合大规模,跨地区多人协同开发
git生态
- git 分布式版本管理系统
- gitlab git私库解决方案
- github git共有库解决方案
git安装
- 不建议用yum install git,安装的是1.8版本,生产环境2.7以上
- yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker epel-release
- wget https://github.com/git/git/archive/v2.7.4.zip
- unzip v2.7.4.zip
- make prefix=/usr/local/git all
- make prefix=/usr/local/git install
- rm -fr /usr/bin/git
- ln -s /usr/local/git/bin/git /usr/bin/git
- git --version
git配置
- 设置与配置 git config
- 帮助命令 git help
- 初始化
- [root@localhost test]# git init 该目录受版本库控制
- [root@localhost test]# git config --global user.name "joker" 谁操作
- [root@localhost test]# git config --global user.email "joker@126.com" 操作者邮箱
- [root@localhost test]# git config --list
- user.name=joker
- user.email=joker@126.com
- core.repositoryformatversion=0
- core.filemode=true
- core.bare=false
- core.logallrefupdates=true
- 获取
- git clone http://xxx.git
四个区域
- 给我们的直觉,本地仓库,暂存区域,工作目录就是我们初始化的目录
四种状态
- 工作目录新放入的文件叫做为追踪的文件untracked(这个新文件只能说是放到文件里面了,和git库没有任何关联)
- git add 直接推送暂存区域staged
- commit 存成一个版本,变成未被修改的状态unmodified,放到了本地仓库
- 通过修改这个文件 就会从未被修改的状态变成修改的状态Modifed,那修改的文件会从本地仓库重新拉回到工作目录里面来
- git add 放到了暂存区域staged
- commit 存成一个版本,放到本地仓库里面
常用命令
- git add 加入暂存(索引区)
- git status 查看状态
- git commit -m "" 提交更新
- git rm 从版本库中移除
- git rm --cached filename 从暂存区中移除
- git mv 相当于 git rm git add 二个命令
文件命令
- git diff 本地目录与暂存区是否一致
- git diff --cached filename 暂存区与本地仓库是否一致
- git checkout filename 误操作导致工作目录文件清空了,使用最后一次提交至暂存区的内容覆盖本地工作目录文件
- git reset HEAD filename 误操作导致工作目录文件清空,还提交到了暂存区,那就只能使用最近一次本地版本库的内容覆盖暂存区,再用上面checkout到工作目录恢复了
- git reset --hard commit ID 回退到某个版本
- git log --oneline 查看commit ID
- git reflog 当你回到某个版本后,git log只能显示回到的某个版本的提交记录,而reflog显示是全的
分支管理
- 每次切换分支,也就是指针变动的时候
分支命令
- git branch
- git branch branchname 创建分支
- git checkout branchname 切换分支
- git merge branchname 合并分支
- git branch -d branchname 删除分支
冲突一般是在合并分支的时候,有相同的文件,而文件内容在同一行有不同的内容,就会冲突,要手动解决冲突
标签管理
标签
- git tag 不加任务参数,表示显示标签,并且按时间
- git tag 标签名,默认是给最近的一次提交打标签
- git tag -a 标签名 -m '描述' 描述打标签,建议
- git tag 标签名 commitid 给相应的提交打上标签
- git tag -a 标签名 commitid -m '描述' 给相应的提交打上标签
- git show 标签名 用于显示跟该标签相关的那次提交的相关信息
- git tag -d 标签名 删除标签名,不会删除提交
- git push origin 标签名 把某个标签(必须是本地存在的,否则推送失败)推送到远程服务器
删除远程标签的步骤
- 删除本地标签 git tag -d v1.0
- 再删除远程的 git push origin :refs/tags/v1.0
- 标签跟commit挂钩,只要commit存在于多个分支,那么这几个分支就都能看到这个标签
远程仓库
远程命令
- git clone https://github.com/jokerbj/cmdb.git
- git pull 拉下来,合并
- git fetch 拉下来,手动合并
- git push origin master 上传
- git remote 查看远程分支
- git remote –v 查看远程地址
- git remote add origin http://xxx 添加远程地址
- git remote show origin
- git remote rename oldname newname 变更远程地址名字
- git push origin dev 添加远程分支
- git push origin --delete dev 删除远程分支