Git——尚硅谷学习笔记
- 第1章 Git 概述
- 1.1 何为版本控制
- 1.2 为什么需要版本控制
- 1.3 版本控制工具
- 1.4 Git 简史
- 1.5 Git 工作机制
- 1.6 Git 和代码托管中心
- 第2章 Git 安装
- 第 3 章 Git 常用命令
- 3.1 设置用户签名
- 3.2 初始化本地库
- 3.3 查看本地库状态
- 3.4 添加暂存区
- 3.4.1 将工作区的文件添加到暂存区
- 3.4.2 查看状态(检测到暂存区有新文件)
- 3.4.2 暂存区删除文件工作区仍有
- 3.5 提交本地库
- 3.6 修改文件测试
- 3.7 历史版本
- 3.7.1 查看历史版本
- 3.7.2 版本穿梭
- 第 4 章 Git 分支操作
- 4.1 什么是分支
- 4.2 分支的好处
- 4.3 分支的操作
- 4.3.1 查看分支
- 4.3.2 创建分支
- 4.3.3 切换分支
- 4.3.4 合并分支
- 4.3.5 产生冲突
- 第 5 章 Git 团队协作机制
- 5.1 团队内协作
- 5.2 跨团队协作
- 第 6 章 GitHub 操作
- 6.1 创建远程仓库
- 6.2 远程仓库操作
- 6.2.1 创建远程仓库别名
- 6.2.2 推送本地分支到远程仓库
- 6.2.3 拉取远程仓库到本地
- 6.2.4 克隆远程仓库到本地
- 6.2.5 邀请加入团队
- 6.3 跨团队协作
- 6.4 SSH 免密登录
- 第 7 章 IDEA 集成 Git
- 7.1 配置 Git 忽略文件
- 7.2 定位 Git 程序
- 7.3 初始化本地库
- 7.4 添加到暂存区
- 7.5 提交到本地库
- 7.6 切换版本
- 7.7 创建分支
- 7.8 切换分支
- 7.9 合并分支
- 7.10 解决冲突
- 第 8 章 IDEA 集成 GitHub
- 8.1 设置 GitHub 账号
- 8.2 分享工程到 GitHub
- 8.3 push 推送本地库到远程库
- 8.4 pull 拉取远程库到本地库
- 8.5 clone 克隆远程库到本地
- 第 9 章 国内代码托管中心-码云
- 9.1 简介
- 9.2 码云帐号注册和登录
- 9.3 码云创建远程库
- 9.4 IDEA 集成码云
- 9.4.1 IDEA 安装码云插件
- 9.4.2 IDEA 连接码云进行操作
- 9.5 码云复制 GitHub 项目
- 第 10 章 自建代码托管平台-GitLab
- 10.1 GitLab 简介
- 10.2 GitLab 官网地址
- 10.3 GitLab 安装
- 10.3.1 服务器准备
- 10.3.2 安装包准备
- 10.3.3 编写安装脚本,初始化,启动(安装有错误但是使用暂时无影响)
- 10.3.4 使用浏览器访问 GitLab
- 10.3.5 GitLab 创建远程库
- 10.3.6 IDEA 集成 GitLab
仅自用,如有侵权,立刻删!——感谢【尚硅谷】官方文档
第1章 Git 概述
- Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。
- Git 易于学习,占地面积小,性能极快。
- 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。
- 其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。
1.1 何为版本控制
-
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
-
版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。
1.2 为什么需要版本控制
个人开发过渡到团队协作
1.3 版本控制工具
-
集中式版本控制工具
-
CVS、SVN(Subversion)、VSS……
-
集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
-
多年以来,这已成为版本控制系统的标准做法。这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。
-
管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。
-
事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
-
-
分布式版本控制工具
-
Git、Mercurial、Bazaar、Darcs……
每个客户端都是代码库,可以在自己的电脑做版本控制工具。
还有一个远程库未画出。
-
像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。
-
这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。
-
分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:
- 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
- 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
-
1.4 Git 简史
1.5 Git 工作机制
1.6 Git 和代码托管中心
第2章 Git 安装
第 3 章 Git 常用命令
3.1 设置用户签名
- 基本语法
git config --global user.name duanyf
git config --global user.email qq邮箱
-
案例实操
-
验证是否设置成功 进入
C:\Users\Administrator\.gitconfig
-
说明:
- 签名的作用是区分不同操作者身份。
- 用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。
- Git 首次安装必须设置一下用户签名,否则无法提交代码。
-
注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。
-
3.2 初始化本地库
-
基本语法
git init
-
案例实操
-
创建测试目录
D:\Test\git-demo
,使用git管理git-demo,在该目录右键Git Bash Here -
查看
-
-
结果查看
3.3 查看本地库状态
-
基本语法
git status
-
案例实操
- 无文件时
-
有文件时
-
创建文件
vim hello.txt
,并保存 -
查看状态
-
3.4 添加暂存区
3.4.1 将工作区的文件添加到暂存区
-
基本语法
git add 文件名
-
案例实操
3.4.2 查看状态(检测到暂存区有新文件)
3.4.2 暂存区删除文件工作区仍有
3.5 提交本地库
-
基本语法
git commit -m "日志信息" 文件名
-
案例实操
3.6 修改文件测试
-
修改文件
-
查看状态(检测到工作区有文件被修改)
-
将修改的文件再次添加暂存区
-
查看状态(工作区的修改添加到了暂存区)
-
提交到本地库
-
查看本地库版本
3.7 历史版本
3.7.1 查看历史版本
-
基本语法
git reflog 查看版本信息 git log 查看版本详细信息
-
案例实操
3.7.2 版本穿梭
-
基本语法
git reset --hard 版本号
-
案例实操
第 4 章 Git 分支操作
4.1 什么是分支
-
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。
-
使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。
-
对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)
4.2 分支的好处
- 同时并行推进多个功能开发,提高开发效率。
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
4.3 分支的操作
4.3.1 查看分支
-
基本语法
git branch -v
-
案例实操
4.3.2 创建分支
-
基本语法
git branch 分支名
-
案例实操
4.3.3 切换分支
-
基本语法
git checkout 分支名
-
案例实操
-
切换为hot-fix分支
-
修改hello.txt
-
查看状态
-
添加至暂存区
-
提交到本地库
-
此时切换回master分支 修改不会同步到master
-
4.3.4 合并分支
- 要将hot-fix分支合并到master分支,需要处于master分支进行
-
基本语法
git merge 分支名
-
案例实操 在 master 分支上合并 hot-fix 分支
4.3.5 产生冲突
-
冲突产生的原因:
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个。必须人为决定新代码内容。
-
实例
-
在mster分支修改hello.txt
-
在hot-fix分支同一文件修改hello.txt
-
在 master 分支上合并 hot-fix 分支
-
此时进入hello.txt文件
-
添加到暂存区
git add hello.txt
-
执行提交(注意:此时使用 git commit 命令时不能带文件名)
注:合并分支,只会修改此分支,合并过来的分支(hot-fix)无变化
-
-
第 5 章 Git 团队协作机制
5.1 团队内协作
5.2 跨团队协作
第 6 章 GitHub 操作
6.1 创建远程仓库
远程库最好和本地库姓名相同
6.2 远程仓库操作
6.2.1 创建远程仓库别名
-
基本语法
git remote -v 查看当前所有远程地址别名 git remote add 别名 远程地址(上红线)
-
案例实操
6.2.2 推送本地分支到远程仓库
-
基本语法
git push 别名 分支
-
案例实操
6.2.3 拉取远程仓库到本地
-
基本语法
git pull 别名 分支
-
案例实操
-
对github代码进行更改
-
提交改变
此时本地库和远程库代码不同
-
拉取代码
会自动提交
-
查看
-
6.2.4 克隆远程仓库到本地
clone 会做如下操作:1、拉取代码。2、初始化本地仓库。3、创建别名
-
基本语法
git clone 远程地址
-
案例实操
6.2.5 邀请加入团队
atguiguyueyue 邀请 atguigulinghuchong
-
选择邀请合作者
-
填入想要合作的人
-
复 制 地 址 并 通 过 微 信 钉 钉 等 方 式 发 送 给 该 用 户 , 复 制 内 容 如 下 :
https://github.com/atguiguyueyue/git-shTest/invitations -
在 atguigulinghuchong 这个账号中的地址栏复制收到邀请的链接,点击接受邀请。
-
成功之后可以在 atguigulinghuchong 这个账号上看到 git-Test 的远程仓库
-
此时atguigulinghuchong可以修改内容并 push 到远程仓库。
-
回到 atguiguyueyue 的 GitHub 远程仓库中可以看到,最后一次是 lhc 提交的。
6.3 跨团队协作
-
将远程仓库的地址复制发给邀请跨团队协作的人,比如atguigudongfang1
-
在东方不败的 GitHub 账号里的地址栏复制收到的链接,然后点击 Fork 将项目叉到自己的本地仓库
叉入中…
叉成功后可以看到当前仓库信息
-
东方不败就可以在线编辑叉取过来的文件
-
编辑完毕后,填写描述信息并点击左下角绿色按钮提交
-
接下来点击上方的 Pull 请求,并创建一个新的请求
-
回到岳岳 GitHub 账号可以看到有一个 Pull request 请求
-
进入到聊天室,可以讨论代码相关内容
-
如果代码没有问题,可以点击 Merge pull reque 合并代码。
6.4 SSH 免密登录
我们可以看到远程仓库中还有一个 SSH 的地址,因此我们也可以使用 SSH 进行访问
-
进入当前用户的家目录
C:\Users\Administrator
,右键Bash here -
输入
ssh-keygen -t 加密算法 -C 邮箱
-
进入.ssh 目录查看文件列表
私钥和共钥
-
复制 id_rsa.pub 文件内容
-
登录 GitHub,点击用户头像→Settings→SSH and GPG keys
第 7 章 IDEA 集成 Git
7.1 配置 Git 忽略文件
-
忽略文件
-
Eclipse 特定文件
-
IDEA特定文件
-
Maven 工程的 target 目录
-
-
问题 1:为什么要忽略他们?
答:与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之间的差异。
-
问题 2:怎么忽略?
-
创建忽略规则文件
xxxx.ignore
(前缀名随便起,建议是git.ignore
)-
这个文件的存放位置原则上在哪里都可以,为了便于让
家目录/.gitconfig
文件引用,建议也放在用户家目录C:\Users\Administrator
下 -
git.ignore 文件模版内容如下:
# Compiled class file *.class # Log file *.log # BlueJ files *.ctxt # Mobile Tools for Java (J2ME) .mtj.tmp/ # Package Files # *.jar *.war *.nar *.ear *.zip *.tar.gz *.rar # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* .classpath .project .settings target .idea *.iml
-
-
在
.gitconfig
文件中引用忽略配置文件(此文件在 Windows 的家目录中)[user] name = Layne email = Layne@atguigu.com [core] excludesfile = C:/Users/Administrator/git.ignore 注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”
-
7.2 定位 Git 程序
7.3 初始化本地库
点击VCS后
7.4 添加到暂存区
右键点击项目选择 Git -> Add 将项目添加到暂存区。
7.5 提交到本地库
7.6 切换版本
在 IDEA 的左下角,点击 git,然后点击 Log 查看版本
右键选择要切换的版本,然后在菜单里点击 Checkout Revision。
黄色标签代表头指针
7.7 创建分支
-
右键项目选择 Git,点击 Branches 按钮。(也可以点击右下角)
也可以点击右下角
-
在弹出的 Git Branches 框里,点击 New Branch 按钮。
-
填写分支名称,创建 hot-fix 分支,勾选checkout 会自动切换分支
-
然后再 IDEA 的右下角看到 hot-fix,说明分支创建成功,并且当前已经切换成 hot-fix 分支
7.8 切换分支
在 IDEA 窗口的右下角,切换到 master 分支。
然后在 IDEA 窗口的右下角看到了 master,说明 master 分支切换成功。
7.9 合并分支
-
在 IDEA 窗口的右下角,将 hot-fix 分支合并到当前 master 分支
-
如果代码没有冲突,分支直接合并成功,分支合并成功以后,代码自动提交,无需手动提交本地库。
7.10 解决冲突
-
如果 master 分支和 hot-fix 分支都修改了代码,在合并分支的时候就会发生冲突
-
我们现在站在 master 分支上合并 hot-fix 分支,就会发生代码冲突
-
点击 Conflicts 框里的 Merge 按钮,进行手动合并代码。
-
手动合并完代码以后,点击右下角的 Apply 按钮,代码冲突解决,自动提交本地库。
第 8 章 IDEA 集成 GitHub
8.1 设置 GitHub 账号
如果出现 401 等情况连接不上的,是因为网络原因,可以使用以下方式连接:
然后去 GitHub 账户上设置 token
全部打勾
8.2 分享工程到 GitHub
来到 GitHub 中发现已经帮我们创建好了 gitTest 的远程仓库
8.3 push 推送本地库到远程库
右键点击项目(或者在git中),可以将当前分支的内容 push 到 GitHub 的远程仓库中。
注意:
- push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push 的操作是会被拒绝的。
- 也就是说,要想 push 成功,一定要保证本地库的版本要比远程库的版本高!
- 因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!
- 如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!
8.4 pull 拉取远程库到本地库
pull 是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题
右键点击项目(或者在git中),可以将当前分支的内容 pull 到 GitHub 的远程仓库中。
8.5 clone 克隆远程库到本地
第 9 章 国内代码托管中心-码云
9.1 简介
- 众所周知,GitHub 服务器在国外,使用 GitHub 作为项目托管网站,如果网速不好的话,严重影响使用体验,甚至会出现登录不上的情况。
- 针对这个情况,大家也可以使用国内的项目托管网站-码云。
- 码云是开源中国推出的基于 Git 的代码托管服务中心,网址是 https://gitee.com/
- 使用方式跟 GitHub 一样,而且它还是一个中文网站,如果你英文不是很好它是最好的选择。
9.2 码云帐号注册和登录
9.3 码云创建远程库
-
点击首页右上角的加号,选择下面的新建仓库
-
填写仓库名称,路径和选择是否开源(共开库或私有库)
-
最后根据需求选择分支模型,然后点击创建按钮。
-
远程库创建好以后,就可以看到 HTTPS 和 SSH 的链接。
9.4 IDEA 集成码云
9.4.1 IDEA 安装码云插件
-
Idea 默认不带码云插件,我们第一步要安装 Gitee 插件,如图所示,在 Idea 插件商店搜索 Gitee,然后点击右侧的 Install 按钮
-
Idea 链接码云和链接 GitHub 几乎一样,安装成功后,重启 Idea
-
Idea 重启以后在 Version Control 设置里面看到 Gitee,说明码云插件安装成功。
-
然后在码云插件里面添加码云帐号,我们就可以用 Idea 连接码云了
9.4.2 IDEA 连接码云进行操作
只要码云远程库链接定义好以后,对码云远程库进行 pull 和 clone 的操作和 Github 一致,此处不再赘述。
-
将本地代码 push 到码云远程库
-
自定义远程库链接
-
给远程库链接定义个 name,然后再 URL 里面填入码云远程库的 HTTPS 链接即可。码云服务器在国内,用 HTTPS 链接即可,没必要用 SSH 免密链接
-
然后选择定义好的远程链接,点击 Push 即可
-
看到提示就说明 Push 远程库成功。
9.5 码云复制 GitHub 项目
码云提供了直接复制 GitHub 项目的功能,方便我们做项目的迁移和下载
-
创建时
-
将 GitHub 的远程库 HTTPS 链接复制过来
-
如果 GitHub 项目更新了以后,在码云项目端可以手动重新同步,进行更新!
第 10 章 自建代码托管平台-GitLab
10.1 GitLab 简介
- GitLab 是由 GitLabInc.开发,使用 MIT 许可证的基于网络的 Git 仓库管理工具,且具有wiki 和 issue 跟踪功能。使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。
- GitLab 由乌克兰程序员 DmitriyZaporozhets 和 ValerySizov 开发,它使用 Ruby 语言写成。
- 后来,一些部分用 Go 语言重写。截止 2018 年 5 月,该公司约有 290 名团队成员,以及 2000 多名开源贡献者。
- GitLab 被 IBM,Sony,JülichResearchCenter,NASA,Alibaba,Invincea,O’ReillyMedia,Leibniz-Rechenzentrum(LRZ),CERN,SpaceX 等组织使用。
10.2 GitLab 官网地址
官网地址:https://about.gitlab.com/或http://gitlab.code-nav.cn/
安装说明:https://about.gitlab.com/installation/
10.3 GitLab 安装
10.3.1 服务器准备
- 准备一个系统为 CentOS7 以上版本的服务器,要求内存 4G,磁盘 50G。
- 关闭防火墙,并且配置好主机名和 IP,保证服务器可以上网。
- 此教程使用虚拟机:主机名:gitlab-server IP 地址:192.168.6.200
克隆虚拟机
-
右键源虚拟机—>管理
-
选择虚拟机当前状态
-
选择创建完整克隆
-
设置名称
-
修改IP地址
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
service network restart
-
修改主机名
sudo vim /etc/hostname
-
在本机配置host文件
10.3.2 安装包准备
Yum 在线安装 gitlab- ce 时,需要下载几百 M 的安装文件,非常耗时,所以最好提前把所需 RPM 包下载到本地,然后使用离线 rpm 的方式安装。
下载地址
直接将此包上传到服务器/opt/module 目录下即可
- 创建/opt/module
- 通过ssh工具将rpm放到桌面
- 将rpm通过mv命令移动到/opt/module 目录
10.3.3 编写安装脚本,初始化,启动(安装有错误但是使用暂时无影响)
-
安装 gitlab 步骤比较繁琐,因此我们可以参考官网编写 gitlab 的安装脚本
cd /opt/module vim gitlab-install.sh
在gitlab-install.sh中写入以下命令:
sudo rpm -ivh /opt/module/gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm sudo yum install -y curl policycoreutils-python openssh-server cronie sudo lokkit -s http -s ssh sudo yum install -y postfix sudo service postfix start sudo chkconfig postfix on curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash sudo EXTERNAL_URL="http://gitlab.example.com" yum -y install gitlab-ce
-
给脚本添加执行权限
chmod +x gitlab-install.sh
-
执行该脚本,开始安装 gitlab-ce。注意一定要保证服务器可以上网
./gitlab-install.sh
-
初始化 GitLab 服务
gitlab-ctl reconfigure
-
启动 GitLab 服务
gitlab-ctl start
10.3.4 使用浏览器访问 GitLab
-
使用浏览器访问 GitLab
-
使用主机名访问 GitLab 服务。需要提前配一下 windows 的 hosts 文件
-
使用IP 地址即可访问 GitLab 服务
-
-
首次登陆之前,需要修改下 GitLab 提供的 root 账户的密码,要求 8 位以上,包含大小写子母和特殊符号。因此我们修改密码为 ggggroot.123456
-
显示404,返回重sign in又好了
10.3.5 GitLab 创建远程库
10.3.6 IDEA 集成 GitLab
-
安装 GitLab 插件
-
设置 GitLab 插件
-
复制http链接
复制http链接,注意此时给的http是案例链接,需要自己修改为
http://gitlab-server/root/git-test.git
-
push 本地代码到 GitLab 远程库
此时可能会push失败