GIT简介
git是目前世界上最先进的分布式版本控制系统(没有之一),它是用来管理源代码的,为了方便多人协同开发,方便个人管理代码,方便版本的控制,是由Linux之父开发的。
工作区暂存区仓库区
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o6BJXPa5-1579414476654)(C:\Users\admin\AppData\Local\Temp\1579402120977.png)]
工作区
这里每一个区都是一些文件的集合,工作区就是对文件的所有操作都会一开始发生在工作区内。
暂存区
每当完成一部分工作的时候,需要把文件进行暂存,那么怎么暂存,就是通过git add命令,这个命令就是把文件或者目录从工作区添加的暂存区去,也可以使用git rm或者git checkout 把文件从暂存区去掉。
仓库区
仓库区就是我们的代码仓库了,所有最后想要保存下的代码或者说是文件都要加到仓库中去才可以,使用git commit命令把暂存区的文件加入到仓库区,可以使用git status查看文件当前的状态
总结:
关于这几个分区的问题,其实很好理解,这些就是为了管理文件所划分出来的区域,在进行管理的时候,就是文件在这些区之间的切换。所以理解了这些,也就知道应该怎么进行版本控制了,再掌握基本命令,就掌握git了。
操作
git的单人操作
单人操作就是个人对个人代码的管理,或者在团队中,个人应该怎么去进行操作。
在Linux下安装或者在Windows下安装git是非常简单的,Linux下一条命令搞定:
sudo apt-get install git
接下来可以使用git配置好个人信息:
git config user.name '张三'
git config user.email 'zhangsan@163.com'
然后就可以使用这个账户去创建仓库:
比如新建一个test文件夹,然后进入:
git init
创建本地仓库后会有一个.git的目录,这样test就是我门的一个新仓库了。
然后可以新建一个文件1.c
git add->git commit -m “描述信息” ->git log(查看版本历史)
那么如果想要回退版本怎么办:
-
方案一:
-
HEAD
表示当前最新版本 -
HEAD^
表示当前最新版本的前一个版本 -
HEAD^^
表示当前最新版本的前两个版本,以此类推… -
HEAD~1
表示当前最新版本的前一个版本 -
HEAD~10
表示当前最新版本的前10个版本,以此类推… -
git reset --hard HEAD^
-
-
方案二:
git reset --hard 版本号
撤销修改:撤销修改只能撤销工作区和暂存区的,因为仓库里的是版本,就相当于回滚版本了
撤销工作区的代码:
git checkout 文件名
撤销暂存区的代码:
# 第一步:将暂存区代码撤销到工作区
git reset HEAD 文件名
# 第二步:撤销工作区代码
git checkout 文件名
大体来说个人就是这么多的操作。
团队操作
这时候就相当于我们的仓库在其他机器上,我们需要远程仓库,远程提交代码,远程拉取代码,仅此而已。
假设我们的远程仓库在github上,创建号仓库以后,我们可以把仓库的地址拿到,然后把仓库克隆到本地来
比如现在我是一个经理:
这就是我的操作
cd Desktop/manager/
git clone https://github.com/zhangxiaochuZXC/test007.git
然后配置经理的个人信息
cd Desktop/manager/test007/
git config user.name '经理'
git config user.email 'manager@163.com'
接下来就是创建项目,也就是创建文件夹:
# 工作区添加到暂存区
git add .
# 暂存区提交到仓库区
git commit -m '立项'
# 推送到远程仓库
git push
然后可以设置记住密码:
设置记住密码(默认15分钟):
git config --global credential.helper cache
如果想自己设置时间,可以这样做(1小时后失效):
git config credential.helper 'cache --timeout=3600'
长期存储密码:
git config --global credential.helper store
对于个人张三来说:
先去克隆项目到本地:
cd Desktop/zhangsan/
git clone https://github.com/zhangxiaochuZXC/test007.git
配置个人信息:
cd Desktop/zhangsan/test007/
git config user.name '张三'
git config user.email 'zhangsan@163.com'
接下来就可以协同开发这个项目了:
1.模拟张三先编辑login.c
文件代码
- 进入张三本地仓库:
cd Desktop/zhangsan/test007
- 编辑代码:
num1 = 10
- 本地仓库记录版本:
git commit -am '第一个变量'
- 推送到远程仓库:
git push
2.模拟经理后编辑login.c
文件代码
- 进入经理本地仓库:
cd Desktop/manager/test007/
- 经理同步服务器代码:
git pull
- 编辑代码:
num2 = 20
- 本地仓库记录版本:
git commit -am '第二个变量'
- 推送到远程仓库:
git push
这时候张三又可以同步经理的操作了,通过pull操作即可。
总之:
- 要使用git命令操作仓库,需要进入到仓库内部
- 要同步服务器代码就执行:
git pull
- 本地仓库记录版本就执行:
git commit -am '版本描述'
- 推送代码到服务器就执行:
git push
- 编辑代码前要先
pull
,编辑完再commit
,最后推送是push
附上常用命令:
单人操作:
1.sudo apt-get intall git ,安装git ,并创建git密码
2.git, 查看安装结果,有提示则证明安装成功
3.git init , 创建本地仓库
4.git config user.name ‘张三’, 配置git提交的用户名
5.git config user.email ‘123@qq.com’, 配置git提交的邮箱
6.git status, 查看工作区的文件状态
7.git add 文件名, 添加指定文件名到暂存区
8.git add . 添加所有的改动文件到暂存区
9.git commit -m ‘版本信息描述’, 添加当前版本说明
10.git commit -am ‘版本信息’, 直接添加到暂存区并提交到git仓库
11.git log, 查看详情历史版本
12.git reflog, 查看简单历史版本
13.git reset --hard HEAD^ 回退到上个版本
14.git reset --hard HEAD~1回到上个版本
15.git reset --hard 版本号, 跳转到指定的版本号
16.git checkout 文件名, 撤销指定文件的修改,工作区
17.git reset HEAD 文件名, 撤销暂存区的代码
19.git diff HEAD HEAD^ – 文件名,对比版本库
20.rm 文件名, 删除文件,通过下面21行命令撤销
21.git checkout – 文件名, 撤销删除
22.git rm 文件名, 删除本地文件, 并提交,通过下面的23行命令撤销
23. git reset --hard HEAD^,撤销
多人开发:
23.git clone 地址, 克隆远程的代码到本地
24.git push, 推送到远程仓库
25.git config --global credential.helper cache 十五分钟有效期
26.git config credential.helper ‘cache --timeout==3600’ 一个小时有效期
27.git config --global credential.helper store 长期有效
28.git pull ,拉取远程代码到本地目录
标签
29.git tag -a 标签名 -m ‘标签描述v1.0’, 本地标签
30.git push origin 标签名, 将本地标签版本推送到远程端
31.git tag -d 标签名, 删除本地标签
32.git push origin --delete tag 标签名, 删除远端的标签名
分支
33.git branch, 查看当前分支
34.git checkout -b 分支名, 切换到指定分支
35.git push -u origin 分支名, 推送本地分支跟踪远程分支
36.git checkout master/dev 切换到master主分支/子分支
37.git merge 分支A, 合并指定分支A到主分支中