git使用
Git是一个开源的分布式的版本控制系统,可以有效高速的处理从小到大的项目管理工具
Git是世界上最先进的分布式版本控制工具
什么是版本控制工具:就是开发过程中一个软件使用技巧,可以确保不同人所编辑的代码都是统一的 并且可以再多人之间进行代码的传递与合并
透过文档来进行记录 哪些地方改动了会给每次的改动进行一个标记 方便下次回退到当前版本
现在市面上存在的版本控制工具分为集中式和分布式
其中SVN是集中式版本控制工具的代表
集中式:就是版本库集中的存放在中央服务器中,而且工作的时候需要把自己的电脑从中央服务器中拉取代码,干完活之后还需要把代码推送到中央服务器中
Git是分布式版本控制工具的代表
分布式:没有了中央服务器的概念,每个人电脑上面都是一个完整的版本库,在工作的时候就不需要联网因为版本库就在我们的电脑当中 其实在分布式的版本控制过程中也有一个类似于中央服务器的东西,但是这个东西仅仅是方便大家交换代码上的修改
优缺点:
集中式最大的问题就是需要联网才可以工作,在局域网中可以直接快速的链接(带宽大,速度快)在互联网上访问服务器可能就会因为自身网速问题 耽误开发进度
分布式 安全性高 因为每个人电脑上都有一个完整的版本库,如果其中某一个人电脑坏了那么随便找一个人复制一下版本库就可以了 但是集中式如果中央服务器出了问题那么所有人都没有办法干活了
git使用
首先自行去官网下载—安装
安装完成后 在需要的文件夹右键就会出现git bash 的选项 打开 就会出现一个命令行一样的窗口 就说明可以直接使用git了
基本命令
初始化 :git init 完成初始化
查看文件夹的内容:ls -a
认识git三层结构
1.工作区(就是你们写代码的地方)
2.暂存区(存储到一个临时位置)
3.版本库(代码版本的最终存储区域)
查看工作区文件是否被追踪:git status
设置文件的追踪 把文件从工作区传递到暂存区 git add 文件名
上面这种方式只能一次设置一个文件的追踪 如果有很多个文件那么就可以使用
设置所有文件被追踪:git add .
设置文件从暂存区到版本库:git commit -m “你的提交信息”
查看提交信息 git log
但是注意 :很多人如果是安装完git没有使用 又或者是第一次使用git是没有办法进行提交的
会报个这个错误 Place tell me who are you
那我们就需要设置当前的用户信息
Git config --global user.name “你的名字”
Git config --global user.email“你的邮箱”
查看当前的配置信息:git config --list
git状态
modified状态
untracked状态 文件没有被追踪
把文件从工作区提交到版本库:git commit -am “提交信息” (前提文件必须是被正常提交过一次才可以使用这个指令 git add . 与git commit -m 组合技巧)
Git 撤销操作 git reset HEAD 文件名
修改最后一次提交到版本库的信息 git commit --amend
会进入到linx的一个界面交做vim界面 我们就可以直接修改 修改完成想退出只需要输入 :wq 回车即可推出
Git 回退操作
拉取版本库的文件到暂存区:git reset commitid
拉取暂存区的文件到工作区 git checkout – 。
拉取指定版本库的内容替换工作区
git reset --hard commitid
查看所有日志目录 git reflog
删除操作
暂存区删除内容:Git rm --cache 文件名
重命名对工作区的文件重命名 mv 旧名字 新名字
Git 分支
git的分支就是git的必杀技 每个版本控制工具都会支持分支。使用分支可以让我们从开发的主线上分离出来,然后在不影响主线工作的同时 继续工作
git的分支切换的时候非常的快
查看分支:git branch
下图中红色下划线所标明的内容就是你当前所处的分支
新建分支
git branch 新的分支名
切换分支 git checkout 你要切换的分支名
新增加切换 git checkout -b 新的分支名
分支的删除 git branch -d 删除的分支名
注意:在删除分支的时候必须切换到其他分支之后才能删除自身
注意:使用-d 的这种删除操作 只有在合并分支之后才可以删除 没有合并分支不能删除(就是保证大家不会误删除)
使用-D 这种删除操作(了解就好) 可以随意删除分支哪怕没有合并过也可以删除
修改分支名 git branch -m 要修改的分支名 新名字
重要的分支合并与冲突解决
分支合并:git merge 要合并的分支名 (注意 要向主分支中合并的话必须先切换到主分支中Git checkout master
)
在分支合并的过程中可能会出现冲突(两个分支中在相同位置写了不同的内容就会出现分支上的冲突)