Git自学笔记001_Real(版本控制、版本迭代)
一、版本控制概述
版本控制(Revision Control)是一种在开发过程中用于管理我们对文件,目录或工程等内容的修改历史,方便查看更改历史记录。备份以便恢复以前版本内容的软件工程技术。
- 实现跨区域多人协同开发
- 追踪和记载一个或多个文件的历史记录
- 组织和保护你的源代码和文档
- 统计工作量
- 并行开发,提高开发效率
- 追踪记录整个软件的开发过程
- 减轻开发人员的负担,节省时间,同时降低人为错误
二、版本控制的分类
1、本地版本控制 记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人使用。 2、集中版本控制 SVN 所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。 3、分布式版本控制系统 Git 所有的版本信息仓库都同步到本地的每个用户,这样就可以在本地查询所有历史版本,可以离线在本地提交,只需要在联网的时候Push到相应的服务器或者其他用户那里,由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题,就可以恢复所有的数据,但是增加了本地存储空间的占用。(每个人都有公司的全部代码)
Git和SVN最主要的区别:
1、SVN是集中版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的是自己的电脑,所以首先要从中央处理器得到最新的版本,然后工作,完成工作后,需要把自己完成的工作推送到中央服务器,集中式版本控制系统是必须联网的才能工作的,对网络带宽要求较高。 2、Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网,因为版本都在自己的电脑上。
安装之后出现的Git含义
Git Bash:Unix和Linux风格的命令行,使用最多,推荐最多 Git CMD:Windows风格的命令行 Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉命令行
三、基本的Linux系统的命令:
1、cd:改变目录 2、cd…:回到上一级目录,直接cd进入默认目录 3、pwd:显示当前所在的目录路径 4、ls/ll:两个命令都是列出当前目录中的所有文件,只不过ll列出的命令更加详细 5、touch:新建一个文件 如touch index.js,就是在当前目录下面新建一个index.js的文件 6、rm:删除一个文件,如rm index.js是将index.js文件删除 7、mkdir:新建一个目录,相当于新建一个文件夹 8、rm -r:删除一个文件夹,rm -r src删除src目录 9、mv:移动文件,mv index.html src 的意思是将该目录下的index.html移动到src文件夹下面,但是当前文件夹必须和src文件夹,在同一目录下面 10、reset:重新初始化终端/清屏 11、clear:清屏 12、history:查看命令历史 13、help:帮助 14、exit:退出 15、#:表示注释
四、Git的配置
1、查看配置:git config -l
2、查看系统配置:git config --system --list 3、查看本地配置:git config --global --list 4、设置用户名和邮箱: git config --global user.name 用户名 git config --global user.email 邮箱名
5、查看文件版本日志:
git log
git reflog
6、回滚快照
git reset head~
git reset head~~
git reset head~10
reset参数选择: (1)–hard:回退版本库、暂存区、工作区。(因此我们修改过的代码就没有了,所以要慎重使用) (2)–mixed:回退版本库、暂存区。将快照回滚到暂存区域,他还将暂存区域的文件还原到工作目录 (3)–soft:回退到版本库。
五、Git基本理论(核心)
Git有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository)或Git Directory,如果在加上远程的Git仓库(Remote Directory)就可以分成四个工作区域。文件在这四个区域之间的转换关系如下: workspace:工作区,就是平时村方项目代码的地方。 index / Stage:暂存区,用于临时村方本地的改动,事实上他只是一个文件,保存即将提交的文件列表信息。 Repository:仓库区(或本地仓库),就是安全村方数据的位置,这里面有提交的所有的版本数据,其中HEAD指向最新放入仓库的版本。 Remote:远程仓库,托管代码的服务器,可以简单的认为项目组中的一台电脑用于远程数据交换。
Git的一般工作流程:
1、在工作目录中添加,修改文件; 2、将需要要进行版本管理的文件放入暂存区域中;(git add …) 3、将暂存区域中的文件教导Git仓库;(git commit) 因此,Git股那里的文件有三种状态:已修改(modified),已缓存(staged),已提交(committed)
六、Git项目搭建
1、创建工作目录域常用命令
工作目录(WOrkSpace)一般就是希望Git帮助管理的文件夹,可以是项目的目录,也可以是一个空目录,建议不要用中文。
2、本地创建仓库
创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库 (1)创建全新的仓库,需要用Git管理的项目的根目录执行
git init
执行之后就可以看到,在项目目录里面多出来一个.git目录,关于版本等所有的信息都在这个目录里面 (2)克隆远程仓库
git clone[url] https://gitee.com/kuangstudy/kuang_livenote.git
Git文件操作
1、文件的4种状态
版本控制就是文件的版本控制,要对文件进行修改,提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者需要提交的文件没提交上去。 (1)Untracked:为追踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制,通过git add 状态变为staged (2)Unmodify:文件已经入库,未修改,即版本库中的文件快照内容与文件夹中有两个去处,如果它被修改,而变为Modified ,如果使用git rm 移出版本库,则成为了Untracked 文件 (3)Modified:文件已修改,仅仅是修改,并没有进行其他的操作,这个文件也有两个去处,通过git add ,可进入暂存staged 状态,使用git checkout 则丢弃修改过,返回到unmodify 状态,这个git checkout 即从库中取出文件,覆盖当前修改 (4)Staged:暂存状态,执行git commit 则将修改同步到库中,这时候库中的文件和本地的文件右边为一致,文件为unmodify 状态,执行git reset HEAD filename 取消暂存,文件状态为Modified
2、查看文件状态
git status [filename]
git status
git add .
git commit -m “消息内容”
3、忽略文件
有些时候我们不想把一下文件纳入到版本控制中去,比如数据库文件,临时文件,设计文件等等。 在主目录下面建立“.gitignore”文件,此文件有如下规则: (1)忽略文件中的空行或井号(#)开始的行将会被忽略; (2)可以使用lLinux通配符。例如:星号(*)代表任意多个字符,问好(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1, string2, …})代表可选的字符串等; (3)如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略; (4)如果名称的最前面有一个路径分隔符(/),表示要忽略的文件在此目录下面,而子目录中的文件将不被忽略。 (5)如果名称的最后面有一个路径分隔符(/),表示要忽略此目录下改名称的子目录,而非文件(默认文件或目录都忽略)
*txt
!lib.txt
/temp
build/
doc/*.txt
.gitignore文件的内容定义:
*.class
*.log
*.lock
*.jar
*.war
*.ear
target/
.idea/
*.iml
*velocity.log*
.apt_generated
.factorypath
.springBeans
*.iml
*.ipr
*.iws
.idea
.classpath
.project
.settings/
bin/
*.log
tmp/
*rebel.xml*
七、创建、切换、合并、删除分支
1、创建、切换分支
git branch feature-login
git checkout feature-out
2、合并分支
git checkout master
git merge 分支名
3、删除分支
git branch -d 分支名
八、Gitee的使用
注册后,生成公共密钥 在C:\Users\xueli\目录下用CMD执行mkdir .ssh命令行,生.ssh文件夹,在文件夹里面执行Git 输入命令ssh-keygen -t rsa 一路Enter下去,最后会生成公共密钥和两个文件
|