Git
一、什么是Git
Git是目前世界上最先进的分布式版本控制系统。简单说,就是团队开发时,管理代码的软件
二、SVN与Git的最主要的区别?
(1)SVN
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,干活的时候个人电脑先从中央服务器拿到最新版本,然后操作,操作完以后,又推送回中央服务器。必须联网才能工作。svn服务器要是坏了的话 ,那就是真的坏了
(2)Git
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库。所以,工作的时候就不需要联网了。服务器的数据丢了没有关系,换一台就好了,因为本地已经保存了一份
三、安装Git
1、mac安装
brew install git
2、windows安装
官网下载,直接安装:https://git-scm.com/downloads
四、Git配置及使用
- 工作区:开发者的工作目录
- 暂存区:修改过,但未被录入版本库的区域,
git add
表示添加到暂存区 - 版本库:就是本地仓库,记录日志及版本信息,
git commit
表示添加到版本库
1、进入指定的盘的文件夹中
cd d: # 进入d盘
cd ttt # 进入d盘的ttt文件夹
2、git的配置
- 最好先配置,否则,后期可能报错是因为没有配置
$ git config --global user.name '任意用户名'
$ git config --global user.email '邮箱'
3、git目录的创建
$ mkdir test # 在test文件中创建test文件
或者去d盘ttt文件中手动创建test文件
4、初始化
$ git init
初始化以后,目录后悔多一个(master),表示捕获
5、新建一个文件
$ vim a.py
或者,直接手动建文件
6、管理文件
$ ls # 查看当前文件夹下的文件
$ vim a.py
# 按 i 进入编辑模式,
# 按 esc退出编辑模式
# 按 shift + :进入命令行模式
# 按 wq 保存并退出
或者
去文件夹下手动创建文件
7、查看本地仓库的状态
$ git status
如果现实下图,说明 a.py 没有被管理,可能是修改过或者新建的文件,没有被提交本地仓库
8、添加文件
$ git add a.py(文件名)
$ git add . # 添加所有文件
9、再查看一次
$ git status
添加过以后,再次查看,会显示下图,说明文件到了缓存区,准备提交
10、提交到本地的仓库
$ git commit -m '注释的内容' a.py(文件名)
11、查看本地仓库中的文件
$ git ls-files
12、再查看一次
$ git status
如图,表示,所有的文件已经被提交到本地仓库中
13、删除本地仓库的文件
$ git rm a.py(文件名)
# 如果不用git ,再本地仓库中不会删除
14、修改过后提交
$ git commit
# 或者
$ git commit -m '添加abc文件' a.py b.py c.py
回车以后,会直接进入编辑模式,然后将注释去掉,按esc
,并且wq
保存并退出即可
五、添加到远程仓库
1、配置
$ git remote add origin(远程地址的别名,一般为origin) https://gitee.com/ljtyllr/test.git(远程仓库项目地址)
2、把远程代码拉到本地
保证本地是最新的代码
$ git pull origin master(分支的名字)
3、本地代码推到远程仓库
将本地最新的代码提交到远程服务器
$ git push origin master(分支的名字)
六、团队开发管理
1、从远程仓库获取最新代码
$ git clone https://gitee.com/ljtyllr/test.git(远程仓库项目地址)
2、冲突解决方案(谨慎更改他人代码)
改动别人的文件,容易发生冲突
(1)提交全部文件
$ git commit -a
冲突解决完了,保存退出后,(master|MERGING)就会变成(master)
(2)不提交全部文件
$ git commit file/to/path -i -m "merge"
七、查看修改日志
$ git log # 查看项目日志
$ git reflog # 查看详细信息
越上面版本越新
八、版本的切换
$ git reset --hard "head^" # 一个脱字符表示退到上一层,两个^表示推到上两个版本
$ git reset --hard 5b34fe4 # 跳到指定的版本
丢弃之前的改变
$ git checkout a.py(文件名) # 丢弃之前的改变
九、分支管理
每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。一般从远程仓库中拉到代码,就创建分支,在分支上对代码进行操作
1、查看分支
$ git branch
2、创建分支
$ git branch dev(分支名字)
3、切换分支
切换到分支上,会自动将master上的代码带过来
$ git checkout dev(分支名字)
4、合并分支(一般有大哥操作)
将子分支上(dev)的代码合并到主分支(master)上
$ git checkout master # 先切换到主分支
$ git merge div # 将子分支上的代码合并到主分支
十、公钥登录
push代码的时候,老是需要输入用户名和密码,非常不方便。
因此,配置公钥,可以避免频繁的输入用户名和密码
1、配置ssh格式的远程仓库
$ git remote add 远程仓库名 远程仓库地址
2、创建SSH公钥
$ ssh-keygen -t rsa -C 'your_email@example.com'(邮箱)
一直回车,不用输入密码,完成之后,可以再主目录里找到.ssh文件夹,内有id_rsa
和id_rsa.pub
两个文件, id_rsa
是私钥,id_rsa.pub
是公钥