Git是什么?
Git是目前世界上最先进的分布式版本控制系统。
Git有什么特点?
简单易用
可查找记录
高效
什么是分布式版本控制系统?
当前电脑存储备份,服务器也存储备份。当你和你的同事,只修改了部分代码时,此时可以和同事互相传给对方进行修改,这样既提高了效率,又不用网络连接。大大提高开发效率,而且还管理得井井有条。
Git安装
Linux:git
Ubuntu: sudo apt-get install git
Window: 可以直接到官网去下载。https://git-scm.com/
Git使用
1.初始化仓库git init(在该目录下生成一个.git文件)
2.查看仓库状态git status
3.查看修改内容git diff
4.提交修改git add / .表示当前目录下全部文件
5.提交并设置修改记录 git commit -m “”
版本回退
1.查看版本记录 git log / 简化日志显示--pretty=oneline
2.选择回退的版本 git reset --hard
选择以往的回退记录,如果还想回到之前的记录,窗口不要关闭,记录 哈希值,进行返回即可。
注意:如果要回退多个版本时,记得把之前的哈希值,进行记录。避免操作失误的情况发生。
git版本回退原理:
由于git是利用修改指针的指向进行回退版本,所以在回退时的速度是非常快的。
工作区和暂存区
工作区:平常写代码的文件
暂存区:.git文件里的内容。
当第一次提交git add ‘read.md’时,就会生成head文件,此时head文件指向first。
执行git commit -m ‘first’时,利用二进制形式把文件储存在.git里。
撤销修改:如果回退错误的使用 git checkout -- readme.txt 回到最近一次修改的文件
在git里文件删除后,想要恢复的方式
1.git reset HEAD
2.git checkout --
远程仓库的配置
1.创建ssh key。 在客户端里创建ssh密钥,windows利用 git bash执行 ssh-keygen -t rsa -C ‘邮箱’来生成密钥。
2.在git里复制公钥到github进行ssh的配置。
本地关联github仓库
git remote add origin
origin 这个远程库的默认名字,修改后要记住,用来提交项目时使用。
推送文件到github仓库
git push -u origin master
由于远程仓库是空的,我们第一次推送master分支时, 加上了-u参数,git会把本地仓库和github仓库的master分支进行关联。
在以后的推送中可以不加此次参数。
github克隆 git clone
分支管理
git分支管理
合并原理:
git里有 Head 和主分支master。head一直指向master分支。
根据版本的增加,master分支一直指向最新的记录,当在次创建一个env分支。如果env分支内容写完后,想和master分支合并,此时 head的指针指向env分支,同时master分支的指针也会指向env。
红线代表重新指向
1.创建分支
git branch 创建分支,不选择该分支
git checkout -b 创建分支并选择该分支
2.切换分支
git checkout
3.查看所有分支
git branch
4.合并分支
在新创建的分支写完代码时,此时需要合并分支,所有要切换回master分支,让指针重新指向mster分支。
git merge
5.删除分支
合并后就可以安心的删除副分支了
git branch -d
6.查看分支图git log --graph
分支策略
在实际开发中,我们一般用master是用于稳定版本的发布。而dev分支用于开发不稳定阶段。所以开发阶段我们一直使用的是dev分支。
由于git默认使用的是Fast forward模式,这种模式下删除分支后,会丢掉分支信息。
如果加了 --no-ff,就开启普通模式。删除分支后,会保留分支信息,以备再次恢复。
git merge --no-ff -m ‘’dev
Bug分支
git提供了bug分支,在出现bug分支的可以使用stash来进行保护现场。以备以后来修复该分支。
然后创建一个临时分支进行修改该bug。等修复完成后合并这两个分支。最后删除那个修改bug的分支
查看储藏列表
git stash list
应用该储藏分支
git stash apply
Feature分支
当遇到删除分支失败时git branch -d
使用强制删除分支
git branch -D
由于国外的网站上传速度较慢如果想使用国内的仓库时(码云等),如何同时既推送github又推送国内的仓库呢?
git remote addguonei
git pushguoneimaster
git remote addgithub
git pushgithubmaster
搭建git服务器,用于客户端和服务端及时更新
服务端:
1.安装git sudo apt-get install git
2.创建git用户 sudo adduser git
3.创建证书登录 把公钥导入/home/git/.ssh/authorized_keys里,一行一个。
4.初始化仓库 sudo git init --bare sample.git
Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:
sudo chown -R git:git sample.git
5.禁用shell登录
出于安全考虑,第二步创建的git用户不允许登录shell,可通过编辑/etc/passwd文件完成。
找到
git:x:1001:1001:,,,:/home/git:/bin/bash
改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们指定的git-shell每次一登录就自动退出。
6.克隆远程仓库:
git clone
领取专属 10元无门槛券
私享最新 技术干货