一、概述

1、什么是版本控制

不管是个人开发项目中的迭代需求,还是团队对同一项目的开发修改,都需要一个工具记录每个人的处理记录,处理详情。

2、版本控制工具

集中式的版本控制工具cvs svn vss

分布式的版本控制工具git darcs bazaar

3、版本控制工具应该具有的功能

协同修改->多人并行不勃的修改服务器端的同意文件

数据备份->保存目录和文件的当前状态,还记录每一个提交过的状态

版本管理->保存每一个版本不会保存重复的文件,节约空间,提高效率,svn采用的是增量式管理,但是git采用的是文件系统快照的方式

权限控制->对团队开发人员进行权限控制,对团队外的开发者贡献人员进行代码审核,git独有的

历史记录->查看修改人修改时间修改目录 修改信息 日志信息

将本地文件回复到某一个历史状态

分支管理->允许多个开发者同时推进生产线,提高开发效率

4、git优势

大部分操作都在本地完成不需要联网

完整性保证

二、安装

git是一个版本共控制工具,但是代码托管中心是用来维护远程的仓库的,比如局域网使用Gitlab,外网使用Githu(国外)+码云(国内)都是

地址:​​Git​

git篇1:git下载安装、使用_暂存区

git篇1:git下载安装、使用_远程仓库_02

git篇1:git下载安装、使用_github_03

git篇1:git下载安装、使用_暂存区_04

git篇1:git下载安装、使用_远程仓库_05

git篇1:git下载安装、使用_github_06

git篇1:git下载安装、使用_远程仓库_07

git篇1:git下载安装、使用_github_08

git篇1:git下载安装、使用_git_09

git篇1:git下载安装、使用_git_10

git篇1:git下载安装、使用_github_11

git篇1:git下载安装、使用_github_12

版本控制工具Git的本地结构

git篇1:git下载安装、使用_暂存区_13

三、使用

1、初始化本地仓库命令

git init (项目根目录下出现一个.git文件 .git文件存放的是本地库相关的子目录和文件,不要胡乱修改,也不要删除)

2、设置签名

干什么的

用于区分不同开发人员的身份,注意与代码托管中心的密码账号没有任何关系

格式

用户名: lph

Email地址:lph@qq.com

命令

用户级别(仓库级别) :(当前项目下创建,签名信息保存的位置当前目录git中的config中,仅当前项目范围内起作用)命令如下


git config user.name lph_pro git config user.email lphluck_pro@139.com


系统级别:登陆当前系统的用户范围,签名及信息保存的位置

git篇1:git下载安装、使用_github_14

注意:

*用户级别和系统级别中两必须有一个,就近原则,项目级别优先于系统用户级别

*一般项目中有一个就行,系统的就可以

3、查看工作区、暂存区状态

git篇1:git下载安装、使用_暂存区_15

4、将工作区中添加或者修改过的文件添加到暂存区

git add 文件名

git篇1:git下载安装、使用_暂存区_16

所有的文件添加到暂存区 gti add .

从暂存区中删除 git rm --cached test.txt

git篇1:git下载安装、使用_github_17

5、把暂存区文件提交到本地仓库形成历史记录

git commit -m "first commit"

查看历史提交记录

git log

git篇1:git下载安装、使用_暂存区_18

另外几种查看记录的命令

git篇1:git下载安装、使用_git_19

git篇1:git下载安装、使用_git_20

git篇1:git下载安装、使用_暂存区_21

6、添加远端仓库地址到本地仓库

登录仓库平台(coding、github、gitee)创建一个项目仓库不建议生成readme以及gitagnore,复制https地址,地址太长了 起个别名,通常默认的远程仓库地址叫origin

git remote add origin ​​https://github.com/xxx/xxx.git​

  1. 推送到远程仓库 origin代表上面的地址

git push -u origin master

  1. 代码有改变之后

git add git commit # 推送到远程仓库 推送的时候如果不改变远程仓库和分支的话就直接 git push # 如果推送的远程仓库或是分支改变了 $ git push -u 远程仓库 分支名称


备注

1、关于git push -u origin master

其实完整写法如下 将本地master推到远程master

git push --set-upstream ​​https://github.com/xxx/xx.git​​ master:master

因为给地址​​https://github.com/xxx/xx.git​​起了别名origin可以用别名

--set-upstream表示记住这次提交路径 是到master 下次就直接git push 不再git push --set-upstream ​​https://github.com/xxx/xx.git​​ master:master

而--set-upstream可简写为-u

本地master推到远程master:master可以简写master

所以最终是

git push -u origin master

2、管理远程仓库地址信息


# 查看使用帮助 git remote --help # 查看所有的远程仓库信息 git remote -v # 添加远程仓库地址信息 git remote add 名称 远程仓库地址 # 删除指定的远程仓库信息 git remote remove 名称 # 修改远程仓库地址信息 git remote set-url 远程仓库地址名称 新地址


7、模拟新入职人员开发流程

git clone 项目地址 将项目克隆到本地,并且同时初始化当前目录为git 目录

git add .

git commit

git push 将修改的代码推到远程

git篇1:git下载安装、使用_github_22

说明:如果没有弹出窗口,是因为windos系统有个web凭证管理,

git篇1:git下载安装、使用_暂存区_23

git篇1:git下载安装、使用_git_24

原因是当前这个用户没有加入到团队中,所有push推动出错

所以在GitHub中要邀请当前这个用户加入团队

git篇1:git下载安装、使用_github_25

然后当前这个团队成员就可以重新提交了

Pull拉去操作

第一种先fetch然后merge

git篇1:git下载安装、使用_git_26

git篇1:git下载安装、使用_github_27

看好之后如果文件没有啥问题再进行合并

git篇1:git下载安装、使用_暂存区_28

第二种直接使用pull

git篇1:git下载安装、使用_github_29

为了保险,使用第一种,简单的使用第二种就行

解决协同开发冲突

如果不是基于github远程库最新版所做修改该 ,不能推送 必须先拉去,拉去下来如果有冲突先解决冲突,然后操作推送即可

8、跨团队开发

git篇1:git下载安装、使用_git_30

git篇1:git下载安装、使用_远程仓库_31

当收到发送的连接,然后进行一下操作

git篇1:git下载安装、使用_远程仓库_32

git篇1:git下载安装、使用_远程仓库_33

然后东方不被可以克隆文件到本地 做了修改并且推到东方不被远程仓库,接下来

git篇1:git下载安装、使用_github_34

git篇1:git下载安装、使用_git_35

至此团队外的一个帮手任务已经做完了,下面就是团队中的岳不群的操作了

git篇1:git下载安装、使用_暂存区_36

git篇1:git下载安装、使用_github_37

git篇1:git下载安装、使用_git_38

git篇1:git下载安装、使用_远程仓库_39

git篇1:git下载安装、使用_github_40

9、SSH免密登陆

进入项目目录删除.ssh目录

rm –rvf .ssh

运行生成.ssh密钥目录

$ ssh-keygen -t rsa -C lph@163.com

注意:C大写

进入ssh目录

cd .ssh

查看内容

ll

cat id_rsa.pub

复制内容 登陆github

git篇1:git下载安装、使用_远程仓库_41

git篇1:git下载安装、使用_暂存区_42

服务器上的工作完成了

git篇1:git下载安装、使用_git_43

注意:上面的ssh地址如下图获取

git篇1:git下载安装、使用_暂存区_44

10、分支开发

一般开发前都是先创建一个分支,基于这个分支开发开发当前功能,开发完成之后合并到master

创建一个分支,并且换到创建的分支


//创建一个user分支 并且切换到user git checkout -b user


查看当前分支 带星号就是当前所处分支


$ git branch master * user


切换到指定分支,比如主分支

git checkout master

合并分支

把user分支合并到当前所处分支

git merge user

11.本地文件删除和找回

Git前进或者后退到指定版本的本质是对指针head的操作

基于索引值操作(推荐)

git篇1:git下载安装、使用_暂存区_45

基于^操作:只能后退

git篇1:git下载安装、使用_git_46

一个^表示后退一步

基于~操作:

git篇1:git下载安装、使用_git_47

Reset后面的三个参数的对比

-soft仅仅是移动HEAD指针

-mixed移动指针并且重置暂存区

-hard移动HEAD指针,重置缓存区,重置工作区

12、找回本地库中被删除的文件

已经对demo.txt文件执行了git commit 操作,然后rm demo.txt文件 从工作区删除了

git篇1:git下载安装、使用_github_48

git篇1:git下载安装、使用_github_49

git篇1:git下载安装、使用_远程仓库_50

虽然上面的文件被删除了,但是git对应的每个版本的文件是不会删除的,所以可以找回删除之前的一个版本的文件

git篇1:git下载安装、使用_暂存区_51

git篇1:git下载安装、使用_远程仓库_52

同样如果进入删除时候的版本,当前文件也就不存在

13、添加到暂存区的删除文件找回

git篇1:git下载安装、使用_git_53

git篇1:git下载安装、使用_暂存区_54

git篇1:git下载安装、使用_git_55

14、比较文件差异

第一种比较命令:Git diff 文件名

比较的是工作区和暂存区中的文件区别

第二种比较命令:git diff 历史版本文件名

将工作区中的文件和历史记录中的文件进行比较

第三种比较命令:不写文件名比较多个文件