Git
Git: 十分简单!!!Github版本控制
版本控制(Revision control)是一种在开发中的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便于恢复以前的版本的软件工程技术
- 实现扩区域多人协同开发、
- 追踪和记录一个或者多个文件的历史记录
- 组织和保护你的源代码和文档
- 统计工作量
- 并行开发,提高开发效率
- 跟踪记录整个软件的开发过程
- 减轻开发人员的负担,节省时间同时降低人为错误
简单的说就是用于管理多人协同开发项目的技术
没有进行版本控制或者版本控制本身缺乏正确的流程管理,在开发软件的过程中会引入很多的问题,如软件代码的一致性,软件内容的冗余,软件过程的事物性,软件开发过程中的并发性,软件源代码的安全性,以及软件的整合等问题
解决方案1
解决方案2
解决方案3
解决方案4
最终方案1
最终方案2
最终方案3
最终方案4
…
无论是工作还是学习,都经过这样一个阶段! 我们迫切需要一个版本控制工具
多人开发必须要使用版本控制,不然的话可能会花比较大的代价
常见的版本控制工具
我们学习的东西一般都是当下最流行的
主流的版本控制器,有一下的这些:
- Git
- SVN(Subversion)
- CVS(Concurrent Version System)
- VSS(Micorosoft Visual SourceSafe)
- TFS(Team Foundation Server)
- Visual Studio Online
版本控制的产品非常的多(Perforce)等
最大的好处就是分布式版本控制
GIt和SVN的区别
git是分布式的版本控制
svn是集中式的版本控制
Git可以直接看到更新了那些代码和文件操作Git是目前最新进的版本控制
Git环境配置
所有东西下载慢的话一般都可以去找镜像
下载地址:http://npm.taobao.org/mirrors/git-for-windows
卸载Git
1.直接反安装即可 清理环境变量
2.卸载
安装
无脑下一步即可
启动Git
Git Bash:Unix与linux风格的命令行,使用最多推荐最多
Git CMD:windows风格的命令行
Git GUI:图形界面的Git 不建议初学者使用,尽量先熟悉常用的命令
Git基本的linux命令学习 平时一定要多使用这些基础的命令
- cd : 改变目录
- cd … :回退到上一级目录
- pwd : 显示当前所在的目录
- ls(ll):都是列出当前目录中的所有文件只不过后面的列出的内容更为详细
- touch: 新建一个文件,如touch index.js 就会在当前目录下新建一个index.js文件
- rm: 删除一个文件 如 rm index.js
- mkdir: 新建一个目录,就是新建一个文件夹
- rm -r: 删除一个文件夹
- mv: 移动文件
- reset: 重新初始化终端
- clear : 清屏
- history: 查看历史命令
- help:帮助
- exit: 退出 # 表示注释
- rm -rf / 切勿在linux里面尝试 删除电脑的全部文件
Git配置 环境变量只是为了全局使用而已 默认会帮你配置
所有的配置文件其实都保存在本地
查看配置git config -l
系统的配置git config --system --list
查看本地的配置git config --global --list
配置邮箱 必须要配置的
git config --global user.name "Timous"
git config --global user.email "1844736251@qq.com"
Git理论(所有的时间都要源于这个理论)
工作区域
Git本地有三个工作区域: 工作目录, 暂存区,资源库。如果在加上远程的Git仓库,就可以分为四个工作区域,文件在这四个区域之间的转换关系如下:
工作路径: 写代码的空间
暂存区: 就是一些文件,基本看不到
Repository: 本地的代码库
Remote: 远程仓库
- github
- gitee
.git隐藏文件夹
Git项目搭建
创建工作目录与常用的指令
工作目录一般就是你希望Git帮助你管理的文件夹,可以是你的项目的目录,也可以是一个空的目录,建议不要有中文,日常只需要记住以下的6个命令
本地仓库搭建
创建本地仓库的方法有两种,一种是创建全新的仓库,另一种是克隆远程仓库
1.创建全新的仓库,需要Git管理的根目录执行
# 在当前目录创建一个新的Git代码库
$ git init
Initialized empty Git repository in D:/environment/gitcode/.git/
2.克隆一个远程的仓库到本地
git clone [url] # 克隆一个远程的地址的
Cloning into 'openclass'...
remote: Enumerating objects: 272, done.
remote: Counting objects: 100% (272/272), done.
remote: Compressing objects: 100% (182/182), done.
remote: Total 272 (delta 98), reused 119 (delta 68), pack-reused 0
Receiving objects: 100% (272/272), 13.41 MiB | 1.54 MiB/s, done.
Resolving deltas: 100% (98/98), done.
这个文件夹就是我们的远程的仓库克隆下来的地址
查看文件的状态
文件有四种状态,通过下面的命令可以有
git add . # 添加所以文件到暂存区
git status [filename] # 查看文件的状态
git commit -m "要备注的信息" # 提交暂存区的内容到本地仓库 -m 提交信息
忽略文件
前端项目的总npm_moudels
有些时候我们不想把某些文件纳入版本控制中,如数据库文件,临时文件,设计文件等
在主目录下建立.gitignore文件,此文件有如下的规则:
- 忽略文件中的空行或者以#开始的行会被忽略
- 使用linux通配符,例如*代表任意多个字符 ?代表一个字符 []代表可选字符范围{} 代表可选字符串范围
- 如果名称的最前面有一个!,表示例外规则,将不被忽略
- 如果名称前面是一个/表示要忽略的文件在此目录下,而子目录中的文件不被忽略
- 如果名称的后面是一个/表示忽略的是此目录下该名称的子目录,而非文件
# 为注释
*.txt # 忽略所有.txt结尾的文件
!lib.txt # 但lib.txt除外
/temp # 仅忽略项目根目录下的TODO文件,不包括其他的temp
build/ # 忽略build/目录下的所有文件
doc/*.txt # 会忽略 doc/*.txt 但是不包括 doc/server/arch.txt
.gitignore文件
*.class
*.log
*.lock
# Package Files #
*.jar
*.war
*.ear
target/
#idea
.idea/
*.iml
*velocity.log*
### STS ###
.apt_generated
.factorypath
.springBeans
### Intellij IDEA ###
*.iml
*.ipr
*.iws
*.idea
.classpath
.project
.settings/
bin/
*.log
tmp/
#rebel
*rebel.xml*
使用码云
github是有墙的,比较慢,在国内的话一般使用gitee gitlab
未来找工作的个人东西
设置本机绑定ssh公钥,实现免密登录
进入 ssh-keygen -t rsa
使用码云创建自己的仓库
许可证开源是否可以随意转载 ,开源不能商业使用,不能转载,限制
git clone https://gitee.com/timou_top/java-project.git
克隆到本地
使用IDEA集成Git
1.新建项目,绑定git
- 将我们的远程git文件目录拷贝到项目中即可
2.修改文件使用idea操作git
- 添加到暂存区
- commit提交
- push到远程仓库
3.提交测试
上面都是单个人的操作
说明:Git分支
# 查看所有的分支
git branch
# 查看远程所有的分支
git branch -r
# 新建一个分支,但是依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 合并指定分支到当前分支
git merge [branch]
# 删除远程仓库分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]
我们多个分支如果并行执行,会导致我们代码不冲突,也就是同时存在多个版本!!!!
web-api A(Restful.xxxx())
web-admin B 可能调用A 修改了A的代码
web-app C 可能会调用B和A的代码
冲突了协商即可
如果在同一个文件在合并分支的时候都被修改了,则会引起冲突:解决的办法就是我们可以修改冲突文件后重新提交!
master主分支应该非常稳定,用来发布新的版本,一般情况下不允许直接在上面工作,工作上的一般建立在dev上面,工作完之后,比如要发布,,或者说dev分支代码稳定之后可以合并到master上面来。
注意:找人一起搭建一个远程仓库,联系git,两个人或者是三个人都可以练习
团队很重要
寻找小伙伴