Git 详解

本次笔记来自狂神说以及官网

Git 详解

  • 1.前言(版本控制)
    • 1.1 什么是版本控制?
    • 1.2 版本控制的优点:
    • 1.3 常见的版本控制工具:
    • 1.4 版本控制分类
      • 1.4.1 本地版本控制
      • 1.4.2 集中版本控制 SVN
      • 1.4.3 分布式版本控制 Git
    • 1.5 Git与SVN最主要区别
  • 2.Git环境配置
    • 2.1 软件下载
      • 2.1.1 卸载
      • 2.2.2 安装
  • 3.启动Git
    • 3.1 git介绍
    • 3.2 Git配置
    • 3.3 命令(Linux命令)
    • 3.4 Git相关的配置文件
      • 3.4.1 所有的git系统配置文件都放在etc
      • 3.4.2 所有的git用户的一些配置
      • 3.4.3 设置用户名与邮箱(用户标识,必要)
  • 4.Git基本理论(核心)
    • 4.1 工作区域
  • 5.Git项目搭建
    • 5.1 创建工作目录与常用指令
    • 5.2 本地仓库搭建
      • 5.2.1 创建全新的仓库
      • 5.2.2 克隆远程仓库
    • 5.3 查看文件状态
    • 5.4 步骤
  • 6.忽略文件
  • 7.使用码云
    • 7.1 注册
    • 7.2 设置公钥
    • 7.3 添加到码云账户
    • 7.4 创建仓库
    • 7.5 问题:
  • 8.IDEA中集成Git
    • 8.1 新建项目,绑定git
    • 8.2 修改文件,使用IDEA操作git
  • 9.GIT分支
    • 9.1 概念
    • 9.2 git分支中常用指令
    • 9.3 解决方法

1.前言(版本控制)

1.1 什么是版本控制?

版本控制是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。

1.2 版本控制的优点:

  1. 实现跨区域多人协同开发
  2. 追踪和记载一个或者多个文件的历史记录
  3. 组织和保护你的源代码和文档
  4. 统计工作量
  5. 并行开发、提高开发效率
  6. 跟踪记录整个软件的开发过程
  7. 减轻开发人员的负担,节省时间,同时降低人为错误

简单说就是用于管理多人协同开发项目的技术

1.3 常见的版本控制工具:

Git
SVN ( Subversion )
CVS ( Concurrent Versions System )
VSS ( Micorosoft Visual SourceSafe )
TFS ( Team Foundation Server )
Visual Studio Online

现在影响力最大且使用最广泛的是Git与SVN

1.4 版本控制分类

1.4.1 本地版本控制

记录文件每次的更新,可以对每个版本做一个快照,
或是记录补丁文件,适合个人用,如RCS。

1.4.2 集中版本控制 SVN

所有的版本数据都保存在服务器上,
协同开发者从服务器上同步更新或上传自己的修改

注意点:
所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器 上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品: SVN、CVS、VSS。

1.4.3 分布式版本控制 Git

所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

每个人都拥有全部的代码!安全隐患!
不会因为服务器损坏或者网络问题,造成不能工作的情况!

1.5 Git与SVN最主要区别

SVN
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。

Git
Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A ,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。Git可以直接看到更新了哪些代码和文件!

Git是由Linux之父写的 – 李纳斯·托沃兹

2.Git环境配置

2.1 软件下载

2.1.1 卸载

直接反安装即可,环境变量里的path里的git都清掉 然后卸载git

2.2.2 安装

git官网 https://git-scm.com/,下载git对应操作系统的版本。

注意:

  1. 如果官网下载慢的话,可以去找镜像(淘宝镜像)!
    http://npm.taobao.org/mirrors/git-for-windows/
    不带rc的 稳定版 直接最新的 -64-bit.exe
  2. 环境变量只是为了全局使用,可以在任意位置使用git,
    其实可以不配,因为右击也能出现git,并且安装会默认帮你配坏境变量

安装:
无脑下一步就行,除了这一步,选自己合适的。
Git 详解_第1张图片

3.启动Git

3.1 git介绍

安装成功后在开始菜单中会有Git项,菜单下有几个程序:
任意文件夹下右键也可以看到对应的程序!
Git 详解_第2张图片
在这里插入图片描述
Git Bash : Unix与Linux风格的命令行,使用最多,推荐最多
Git CMD : Windows风格的命令行
Git GUI :图形界面的Git,不建议初学者使用,尽量先熟悉常用命令

3.2 Git配置

》git config -l
查看当下关于git的所有配置
-l:list清单
其中里面会有对应的name和email
注意: 换新电脑必须要配用户信息

》git config --system --list
查看系统配置

这里边就没有用户信息

》git config --global --list
查看当前用户(global)配置(用户自己配的)
用户名和邮箱这个是必须配置的–向git表明你是谁

3.3 命令(Linux命令)

cd :改变目录
cd … :回退到上一个目录
pwd :显示当前所在目录路径
ls(ll) :列出当前目录所有文件,ll列出的内容更详细
touch :新建一个文件 ,touch index.js那么就会出现index.js文件
rm :删除一个文件,rm index.js
mkdir :新建一个文件夹(目录)
rm -r:删除一个文件夹,rm -r src 删除src目录

rm -rf》切勿在Linux中使用,删除电脑中全部文件!

mv :移动文件,mv xxx.js src ,xxx.js 是我们要移动的文件,
src是目标文件夹,这样写,保证文件和目标文件夹在同一目录下
reset :重新初始化终端/清屏
clear :清屏
history :查看历史命令
help :帮助
exit :退出
#表示注释

3.4 Git相关的配置文件

3.4.1 所有的git系统配置文件都放在etc

xxxx\Git\etc 》gitconfig文件
等价于 git config --system --list

system 系统级

3.4.2 所有的git用户的一些配置

C:\Users\xxx 》gitconfig文件
等价于 git config --global --list
只适用于当前登录用户的配置
注意: 第一次下git没有这个文件夹

global 全局

里面的内容一般是:
[user]
name = xxxxxx
email = [email protected]

这里可以直接编辑配置文件,通过命令设置后会响应到这里

如果你之前就有了,想重配,直接删除重新写就行。
git config --global --list 查看里面是空的就对了

3.4.3 设置用户名与邮箱(用户标识,必要)

基于上面的 如何写上去,就根据下面的指令:

当你安装Git后首先要做的事情是设置你的用户名称和e-mi地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:

git config --global user.name “xxxx” #名称
git config --global user.email [email protected] #邮箱

这个步骤必须要做,不然以后提交不上去 相对于身份证
只需要做一次这个设置

git config --global --list 查看到底有了没。

4.Git基本理论(核心)

4.1 工作区域

Git本地有三个工作区域:工作目录( Working Directory)、暂存区(Stage/Index)、 资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
Git 详解_第3张图片
解释:

  1. Workspace :工作区,就是你平时存放项目代码的地方
  2. Index / Stage :暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
  3. Repository :仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
  4. Remote :远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

注意:
工作目录下有个隐藏的.git文件夹
.git》存放Git管理信息的目录,初始化仓库的时候自动创建
.git文件夹里有个HEAD文件
》里面有一些指向的目录 和暂存区 和主分支和子分支

步骤:
本地文件先通过git add .命令添加到 暂存区 (只是暂时存在,并没有保存)
然后需要 git commit 命令提交到本地的git 仓库
git push 命令提交到远程仓库
从远程把代码拉到本地 git pull/
回滚回来 git reset / git checkout

git的工作流程一般是这样的:
1.在工作目录中添加、修改文件;
2.将需要进行版本管理的文件
放入暂存区域; git add .
.代表全部文件add进去
3.将暂存区域的文件提交到git仓库。
因此,git管理的文件有三种状态:
已修改( modified) ,已暂存( staged ) ,已提交(committed)

5.Git项目搭建

5.1 创建工作目录与常用指令

创建工作目录》gitcode
工作目录( WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录 ,建议不要有中文。

日常使用只要记住下图6个命令:
Git 详解_第4张图片

5.2 本地仓库搭建

创建本地仓库的方法有两种:
一种是创建全新的仓库,另一种是克隆远程仓库.

5.2.1 创建全新的仓库

1、创建全新的仓库,需要用GIT管理的项目的根目录执行:
》在当前目录新建一个Git代码库 --初始化一个git项目
$ git init

隐藏的项目要打开不然看不到.git文件

2、执行后可以看到,仅仅在项目目录多出了一个.git目录 ,
关于版本等的所有信息都在这个目录里面。

5.2.2 克隆远程仓库

另一种方式是克隆远程目录,
由于是将远程服务器上的仓库完全镜像一份至本地!

》克隆一个项目和它的整个代码历史(版本信息)
$ git clone [ur1]》https /gitee. com/xxx/xxxx

不要复制换行不然会直接执行

5.3 查看文件状态

通过查看文件状态,来知道当前文件在什么状态,
以防出现提交了不想提交的文件,或者未提交成功。

有4种状态:
Untracked:未跟踪,未加入到git库,不参与版本控制
Unmodify:文件已入库,未修改
modified:文件已修改,并没有执行其他操作
staged:暂存状态 ,执行git commit同步到库中。

通过如下命令可以查看到文件的状态:
》查看指定文件状态
git status [filename]

》查看所有文件状态
git status

添加所有文件到暂存区
》git add .

提交暂存区中的内容到本地仓库
》git commit -m “信息内容”
-m 提交信息

5.4 步骤

1.git init
注意:

  1. 如果一开始没东西
    执行git status》nothing to commit
  2. 那么当有东西 git status
    》当前文件没有被跟踪 untracked files

2.git add . 添加到暂存区

3.git status 查看有没有添加进去

changes to be commited

4.git commit -m “xxx.xxx”
如果添加进去了,就执行这一步 提交到本地

5.git push 远程

6.忽略文件

有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等

在主目录下建立"gitignore"文件,此文件有如”下规则:
1.忽略文件中的空行或以井号( # )开始的行将会被忽略。
2.可以使用Linux通配符。例如:星号( * )代表任意多个字符,问号( ? )代表一个字符,方括号( [abc] )代表可选字符范围,大括号( {string1 string2… )代表可选的字符串等。
3.如果名称的最前面有一个感叹号(!) , 表示例外规则,将不被忽略。
4.如果名称的最前面是一个路径分隔符(/) , 表示要忽略的文件在此目录下,而子目录中的文件不忽略。
5.如果名称的最后面是一个路径分隔符 (/) , 表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
在这里插入图片描述
idea中有一个这个文件.gitignore,会自动生成 创建工程时
.gitignore 通过git来决定哪些文件我们可以忽略不把他们添加到暂存区

*.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
tem/

#rebel
*rebel.xml*

.idea/ idea目录下的都不会上传

7.使用码云

github是有墙的,比较慢,在国内的话,
我们一般使用gitee,公司中有时候会搭建自己的gitlab服务器

7.1 注册

注册登录码云,完善个人信息

注意:
其中有个 url后缀,写你想要的,到时候这就是你的git-url。

7.2 设置公钥

设置本机绑定SSH公钥,实现免密码登录!

注意:
免密码登录,这一步挺重要的,
码云是远程仓库 我们平时工作是在本地仓库,
上传本次写密码,会很麻烦

1.先进入 C:\Users\xxxx.ssh 目录

注意:
可能刚开始找不到.ssh文件,就直接执行命令生成公钥,会自动创建

2.然后执行命令生成公钥
》ssh-keygen -t rsa
-t加密 rsa加密算法 一路回车

说明:
.ssh文件有两个文件
id_rsa.pub 是公钥 id_rsa是私钥

7.3 添加到码云账户

将公钥信息public key添加到码云账户中即可!

最开始注册登录的时候,
你的SSH公钥是空的,
把id_rsa.pub里的公钥粘贴到SSH公钥里去

7.4 创建仓库

使用码云创建一个自己的仓库!

1.在网站上,点击+号 新建一个仓库(gitstudy)
可以选择开源或者私有
如果公开 开源许可证选 GPL-3.0
许可证: 开源是否可以随意转载,开源但是不能商业使用,不能转载,有限制!

2.创建成功后,可能需要你初始化readme文件,那就初始化。

3.把HTTPS 里的地址复制下来

4.这时候就可以执行命令(git命令界面或者idea中)
git clone url
把远程仓库克隆到本地

7.5 问题:

1.git credential manager for windows解决方法
Git 详解_第5张图片
博客:
https://blog.csdn.net/qq_26715417/article/details/104822039

2.git 提交身份验证错误
Incorrect username or password ( access token )
博客:
https://blog.csdn.net/qq_41772754/article/details/88079282

3.Could not resolve host: gitee.com
博客:
https://blog.csdn.net/weixin_45793819/article/details/106646875

8.IDEA中集成Git

8.1 新建项目,绑定git

》将我们远程的git文件目录拷贝到项目中即可!

1.新建项目,目录选择之前创建的gitcode下,名字叫git0125

2.方式一:(万能方式)
然后把上面克隆的gitstudy里的内容拷贝到现在这个项目下

隐藏目录》 .git也要

方式二:(很少用)
在远程同名目录下创建项目

3.这时候就出现这个Git 详解_第6张图片
红色是未被选中 ,已经加入控制暂未提交
如果是绿色的,已经加入控制暂未提交
蓝色,加入,已提交,有改动
白色,加入,已提交,无改动
灰色:版本控制已忽略文件

idea 集成的git基本操作
在这里插入图片描述
第一个是拉取Update Project
第二个是提交 Commit

8.2 修改文件,使用IDEA操作git

1.Version Control: 版本控制
打开它 就能看到仓库的全部信息

2.命令行terminal
git add .》全部add进去
然后界面就变成绿色了 》证明被添加到暂存区
你也可以直接项目右击add

3.然后点击Commit
Git 详解_第7张图片
把钩都去掉 不然要检查 浪费时间

然后就是Commit Message 》提交的信息(备注)
必须要写,里面一般是我们修改了哪些代码
我这边写了第一次提交

4.然后 commit 提交到本地
Git 详解_第8张图片
说明:

  1. 可以看到每次提交的时间
  2. master 主分支 旁边可以看修改了哪些信息

5.git push 上传到远程

如果要输用户名和密码,注意用户名 是邮箱 !!!

6.然后再去自己的gitee网站查看 就有了

注意:

  1. 如果你修改了一个文件
    那么可以直接输命令上传
    git add .
    git commit -m “new file xxx.java”
    git push
  2. idea目录下的某些东西不想被提交上
    这个时候就可以配置过滤资源 .gitignore
    注意这个文件也需要commit

上面都是单个人的操作!

9.GIT分支

9.1 概念

一般情况下,主分支和子分支互不干扰,没有影响,
但有时候就会合并,这时候我们就需要进行处理问题,
不然会有不好的后果。
Git 详解_第9张图片

9.2 git分支中常用指令

列出所有本地分支
》git branch

列出所有远程分支
》git branch -r

新建一个分支,但依然停留在当前分支
》git branch [branch-name ]

新建一个分支,并切换到该分支
》git checkout -b [branch]

合并指定分支到当前分支
》 git merge [branch]

删除分支
》 git branch -d [branch-name ]

删除远程分支
》git push origin --delete [branch-name]
》git branch -dr [remote/branch]

9.3 解决方法

相互协调

你可能感兴趣的:(git,svn,github)