Git
git
版本控制
版本控制是一种在开发的过程中用于管理我们对文件目录或工程等内容的修改历史方便查看更改历史记录,备份以便恢复以前的版本的软件工程的技术。简单的来说就是管理多人协同开发项目的技术。
- 实现跨区域多人开发
- 追踪和记载一个或多个文件的历史记录
- 组织和保护你的源代码和文档
- 统计工作量
- 并行开发,提高开发效率
- 跟踪记录整个软件的开发过程
- 减轻开发人员的负担,节省时间,同时降低人为错误
分布式版本控制
每个人都有全部的代码
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时pust到相应的服务器或其他用户那里。由于那里保存的都是所有版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
(不会应为服务器的损坏或网络问题造成不能工作的情况)
git和svn的区别
SVN是集中版本控制系统,版本库是集中放在中央服务器的,而工作的时候都是用自己的电脑所以首先要从中央服务器得到最新的版本然后工作,完成后需要推送到中央服务器上。集中版本控制系统需联网才能工作对网络要求较高。
git是分布式版本控制没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网,因为版本都在自己的电脑上。
基本linux命令
- cd:改变目录
- cd..:回退到上一个目录
- pwd:显示当前所在的目录路径
- ls(ll):都是列出目录中的所有文件,ll更加详细
- touch:新建一个文件
- rm:删除一个文件
- mkdir:新建一个目录
- rm -r:删除一个文件夹
- mv:移动文件
- reset:重新初始化终端
- clear:清屏
- history:查看命令历史
- help:帮助
- exit:退出
-
:表示注释
git配置
git所有配置都保存在本地
查看不同级别的配置文件:
#查看系统的config
git config --global --list
java
#查看当前用户配置
git config --global --list
设置用户名和邮箱:
git config --global user.name "XXXX"
git config --global user.email XXXX@XXX.com
git基本理论
git本地有三个工作区域:工作目录(Working Directory)暂存区(Stage/Index)资源库(Repository);
加上远程仓库git仓库(Remote Directory);文件在这四个区域之间相互转换;
Working Directory------git add files---->Stage/Index------git commit---->History------git pust--->Remote Directory;
Remote Directory-----git pull--->History---git reset-->Stage/Index-----git checkout--->Working Directory
- Workspace:工作区,就是代码存放的地方
- Index/Stage:暂存区,用于临时存放你的改动。事实上算是一个文件,保存即将提交的文件列表信息
- Repository:仓库区,就是安全存放数据的位置,这里面有你提交的所有版本,其中HEAD指向最新放入仓库的版本
- Remote:远程仓库,托管代码的服务器。
创建仓库
创建全新的仓库:
#在当前目录新建一个git代码库
git init
克隆远程仓库
#克隆一个项目和它的整个版本信息
git clone url
git文件操作
文件的状态
-
Untracked:未跟踪,此文件夹中,但并没有加入git库中不参与版本控制,通过git add状态变为Staged。
-
Unmodify:文件已经入库但未修改版本快照完全一致这种类型的文件有两种去除如果被修改变为Modified
如果使用git rm则成为Untracked文件
-
Modifled:文件已修改,仅是修改并没有其他操作,有两种去处通过git add进入暂存staged状态使用
git checkout则丢弃修改过返回Unmodify这个git checkout 即从库中取出文件覆盖当前修改
-
Staged:暂存状态,执行git commit则将同步到库中,这是库中的文件和本地文件变为一致,文件为Unmodify状态,执行git reset HEAD filename 取消暂存文件状态为Modified。
查看文件状态
#查看指定文件状态
git status 【filername】
#查看所有文件状态
git status
# git add 添加所有文件到暂存区
# git commit -m 提交暂存区中的内容到本地仓库-m提交信息
忽略文件
有些时候不想将某些文件纳入版本库中例如数据库文件,临时文件设计文件等
在主目录下建立“.gitgnore”文件,文件规则:
-
忽略文件中的空行以(#)开始的行将会被忽略
-
如果名称的最前面有一个(!)表示例外规则,将不被忽略。
-
如果名称的最前面有一个(/)表示要忽略的文件在此目录下,而子目录中的文件不忽略
-
如果名称的最后面有一个(/)表示要忽略的是此目录下该名称的子目录,而非文件。
-
可使用linux通配符。例如:(*)代表任意多个字符,(?)代表一个字符,方括号([abc])代表可选字符范围,({string1,string2,。。。。})代表可选字符串等。
#为注释
*.txt #忽略所有.txt结尾的文件
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其他目录temp
build/ #忽略build/目录下的所有文件
git分支
git分支常用命令:
#列出所有分支
git branch
#列出远程分支
git branch -r
#新建一个分支,但依然停留在当前分支
git branch [branch-name]
#新建一个分支并切入分支
git branch -b [branch-name]
#删除分支
git branch -d[branch-name]
#删除远程分支
git push origin --delete [branch-name]\
git branch -dr [remote/branch]