0
点赞
收藏
分享

微信扫一扫

Git看这一篇就够了


Git

  • ​​一、Git概述​​
  • ​​1.1 何为版本控制​​
  • ​​1.2 为什么需要版本控制​​
  • ​​1.3 版本控制工具​​
  • ​​集中式版本控制工具​​
  • ​​分布式版本控制工具​​
  • ​​1.4 Git工作机制​​
  • ​​1.5 Git 和代码托管中心​​
  • ​​局域网​​
  • ​​互联网​​
  • ​​二、Git 常用命令​​
  • ​​2.1 git init​​
  • ​​2.2 快速打开git本地仓库​​
  • ​​2.3 查看本地库状态​​
  • ​​2.3.1 首次查看(工作区没有任何文件)​​
  • ​​2.3.2 再次查看(检测到未追踪的文件)​​
  • ​​2.3.3 将工作区的文件添加到暂存区​​
  • ​​2.3.4 将暂存区的文件提交本地库​​
  • ​​2.4 查看历史版本​​
  • ​​2.5 版本穿梭​​
  • ​​三、Git分支操作​​
  • ​​3.1 什么是分支?​​
  • ​​3.2 分支好处​​
  • ​​3.3 分支的操作​​
  • ​​3.3.1 查看创建分支​​
  • ​​3.3.2 修改分支​​
  • ​​3.3.3 切换分支​​
  • ​​3.3.4 合并分支​​
  • ​​3.3.5 解决冲突​​
  • ​​3.3.6 创建分支和切换分支图解​​
  • ​​四、团队协作机制​​
  • ​​4.1 团队内协作​​
  • ​​4.2 跨团队协作​​
  • ​​五、Github操作​​
  • ​​5.1 远程仓库操作​​
  • ​​5.1.1 创建远程仓库别名​​
  • ​​5.1.2 推送本地分支到远程仓库​​
  • ​​5.1.3 拉取远程仓库的内容​​
  • ​​5.1.4 克隆远程仓库到本地​​
  • ​​5.1.5 邀请加入团队​​
  • ​​选择邀请合作者​​
  • ​​复制Pending Invite 地址​​
  • ​​修改内容并 push 到远程仓库​​
  • ​​5.1.6 跨团队协作​​
  • ​​远程仓库的地址复制发给邀请跨团队协作的人​​
  • ​​Fork项目到本地仓库​​
  • ​​编辑项目提交更改​​
  • ​​创建pull请求​​
  • ​​协作成功​​
  • ​​5.2 SSH免密登录​​
  • ​​创建秘钥​​
  • ​​查看公钥​​
  • ​​Github设置SSH免密​​
  • ​​六、IDEA集成Git​​
  • ​​6.1 配置 Git 忽略文件​​
  • ​​6.2 在.gitconfig 文件中引用忽略配置文件​​
  • ​​6.3 定位git程序​​
  • ​​6.4 添加到暂存区​​
  • ​​6.5 提交到本地库​​
  • ​​6.6 切换版本​​
  • ​​6.7 创建,切换,合并,解决冲突​​
  • ​​七、IDEA集成Github​​
  • ​​7.1 设置github账号​​
  • ​​7.2 分享工程到 GitHub​​
  • ​​7.3 push 推送本地库到远程库​​
  • ​​7.4 pull 拉取远程库到本地库​​
  • ​​7.5 clone 克隆远程库到本地​​
  • ​​八、国内代码托管中心-码云​​
  • ​​8.1 IDEA集成码云​​
  • ​​8.2 IDEA连接码云​​
  • ​​8.3 码云赋值Github项目​​
  • ​​九、自建代码托管平台GitLab​​
  • ​​git安装​​
  • ​​访问​​
  • ​​idea集成Gitlab​​

一、Git概述

Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

1.1 何为版本控制

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本, 方便版本切换。

Git看这一篇就够了_远程仓库

1.2 为什么需要版本控制

个人开发过渡到团队协作。

Git看这一篇就够了_远程仓库_02

1.3 版本控制工具

集中式版本控制工具

CVS、SVN(Subversion)、VSS……

集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。

这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。

事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。

Git看这一篇就够了_本地库_03

分布式版本控制工具

Git、Mercurial、Bazaar、Darcs……

**像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。**这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。

分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:

  1. 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
  2. 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)

Git看这一篇就够了_本地库_03

1.4 Git工作机制

Git看这一篇就够了_git_05

1.5 Git 和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。

局域网

GitLab

互联网

GitHub(外网)

Gitee 码云(国内网站)

二、Git 常用命令

命令名称

作用

git config --global user.name 用户名

设置用户签名

git config --global user.email 邮箱

设置用户签名

git init

初始化本地库

git status

查看本地库状态

git add 文件名

添加到暂存区

git commit -m “日志信息” 文件名

提交到本地库

git reflog

查看历史记录

git reset --hard 版本号

版本穿梭

2.1 git init

初始化本地库

初始化成功会有.git目录

Git看这一篇就够了_本地库_06

2.2 快速打开git本地仓库

Git看这一篇就够了_远程仓库_07

可以看到直接就进去了

Git看这一篇就够了_java_08

2.3 查看本地库状态

2.3.1 首次查看(工作区没有任何文件)

Git看这一篇就够了_本地库_09

2.3.2 再次查看(检测到未追踪的文件)

Git看这一篇就够了_git_10

2.3.3 将工作区的文件添加到暂存区

git add 文件名

Git看这一篇就够了_git_11

2.3.4 将暂存区的文件提交本地库

git commit -m “日志信息” 文件名

Git看这一篇就够了_java_12

2.4 查看历史版本

测试查看历史版本

我们修改后再次提交

Git看这一篇就够了_git_13

git reflog 查看版本信息

git log 查看版本详细信息

Git看这一篇就够了_远程仓库_14

2.5 版本穿梭

git reset --hard 版本号

Git看这一篇就够了_本地库_15

三、Git分支操作

3.1 什么是分支?

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用

Git看这一篇就够了_远程仓库_16

3.2 分支好处

同时并行推进多个功能开发,提高开发效率。

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

3.3 分支的操作

命令名称

作用

git branch 分支名

创建分支

git branch -v

查看分支

git checkout 分支名

切换分支

git merge 分支名

把指定的分支合并到当前分支上

git branch --delete 分支名

删除分支

3.3.1 查看创建分支

Git看这一篇就够了_本地库_17

3.3.2 修改分支

Git看这一篇就够了_远程仓库_18

3.3.3 切换分支

git checkout 分支名

Git看这一篇就够了_远程仓库_19

3.3.4 合并分支

git merge 分支名

Git看这一篇就够了_git_20

3.3.5 解决冲突

冲突产生的原因:

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个。必须人为决定新代码内容。

编辑有冲突的文件,删除特殊符号,决定要使用的内容

<<<<<<< HEAD 
当前分支的代码
=======
合并过来的代码
>>>>>>> hot-fix

Git看这一篇就够了_远程仓库_21

3.3.6 创建分支和切换分支图解

Git看这一篇就够了_远程仓库_22

master、hot-fix 其实都是指向具体版本记录的指针。当前所在的分支,其实是由 HEAD决定的。所以创建分支的本质就是多创建一个指针。

HEAD 如果指向 master,那么我们现在就在master 分支上。

HEAD 如果执行 hotfix,那么我们现在就在hotfix 分支上。 所以切换分支的本质就是移动HEAD 指针

四、团队协作机制

4.1 团队内协作

从远程服器克隆一个一模一样的版本库到本地,复制的是整个版本库,叫做clone(clone是将一个库复制到你的本地,是一个本地从无到有的过程)

从远程服务器获取到一个branch分支的更新到本地,并更新本地库,叫做pull.(pull是指同步一个在你本地有版本的库内容更新的部分到你的本地库)

Git看这一篇就够了_本地库_23

4.2 跨团队协作

Git看这一篇就够了_本地库_24

五、Github操作

​​https://github.com/​​

创建远程仓库

Git看这一篇就够了_本地库_25

创建仓库

Git看这一篇就够了_java_26

5.1 远程仓库操作

命令名称

作用

git remote -v

查看当前所有远程地址别名

git remote add 别名远程地址

起别名

git push 别名 分支

推送本地分支上的内容到远程仓库

git clone 远程地址

将远程仓库的内容克隆到本地

git pull 远程库地址别名 远程分支名

将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并

5.1.1 创建远程仓库别名

git remote -v 查看当前所有远程地址别名

git remote add 别名 远程地址2

Git看这一篇就够了_java_27

Git的fetch和pull指令区别

git fetch:相当于是从远程获取最新版本到本地,但不会自动 merge

git pull:相当于是从远程获取最新版本并 merge 到本地

实际使用中git fetch 更安全一些,因为在 merge 前,我们可以查看更新情况,然后再决定是否合并。

Git看这一篇就够了_java_28

这个远程仓库的地址就在创建完仓库后会提醒

Git看这一篇就够了_git_29

5.1.2 推送本地分支到远程仓库

Win10系统 的凭据管理器是一个系统组件,能够帮助用户完成本地访问时的认证工作。 当用户第一次输入用户名和密码的时候,凭证管理器可以将这些访问凭据 (用户、密码、证书等)保存在本地,再次访问该服务器站点时,WIN10系统会自动完成凭据的认证过程。

Git看这一篇就够了_java_30

git push 别名 分支

保证凭据管理器没有账号相关信息

Git看这一篇就够了_git_31

推送成功

Git看这一篇就够了_本地库_32

查看远程仓库,master分支上的内容已经被推送到Github远程仓库了

Git看这一篇就够了_远程仓库_33

5.1.3 拉取远程仓库的内容

Git看这一篇就够了_本地库_34

Git看这一篇就够了_git_35

5.1.4 克隆远程仓库到本地

我们在模拟一个新的仓库,通过git clone的方式克隆代码

所以先删除windows凭据管理保存的我第一个github账号

git clone 远程地址

Git看这一篇就够了_远程仓库_36

拉取代码,初始化本地仓库

Git看这一篇就够了_远程仓库_37

自动起别名

Git看这一篇就够了_java_38

克隆不需要登录账号,因为我们的库是public的

clone 会做如下操作。1、拉取代码。2、初始化本地仓库。3、创建别名

Git看这一篇就够了_java_39

Git看这一篇就够了_git_40

5.1.5 邀请加入团队

选择邀请合作者

Git看这一篇就够了_git_41

复制Pending Invite 地址

在第一个账号浏览器打开,接受邀请

Git看这一篇就够了_java_42

修改内容并 push 到远程仓库

Git看这一篇就够了_java_43

Git看这一篇就够了_java_44

5.1.6 跨团队协作

远程仓库的地址复制发给邀请跨团队协作的人

Git看这一篇就够了_本地库_45

Fork项目到本地仓库

Git看这一篇就够了_java_46

编辑项目提交更改

Git看这一篇就够了_远程仓库_47

创建pull请求

Git看这一篇就够了_本地库_48

Git看这一篇就够了_本地库_49

同时,第一个github也收到了这个请求

Git看这一篇就够了_git_50

接受请求

Git看这一篇就够了_远程仓库_51

Git看这一篇就够了_本地库_52

协作成功

Git看这一篇就够了_java_53

5.2 SSH免密登录

创建秘钥

Git看这一篇就够了_java_54

查看公钥

Git看这一篇就够了_本地库_55

Github设置SSH免密

Git看这一篇就够了_git_56

接下来再往远程仓库push 东西的时候使用 SSH 连接就不需要登录了

六、IDEA集成Git

6.1 配置 Git 忽略文件

创建忽略规则文件xxxx.ignore(前缀名随便起,建议是 git.ignore)

这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig 文件引用,建议也放在用户家目录下

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

6.2 在.gitconfig 文件中引用忽略配置文件

注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”

[user]
name = pyy
email = pyy@qq.com
[core]
excludesfile = C:/Users/Jack/git.ignore

6.3 定位git程序

Git看这一篇就够了_java_57

6.4 添加到暂存区

右键点击项目选择Git -> Add 将项目添加到暂存区。

扩充知识点:

红色在git中代表违背追踪

Git看这一篇就够了_git_58

绿色代表已经添加到了暂存区

Git看这一篇就够了_java_59

Git看这一篇就够了_git_60

Git看这一篇就够了_java_61

Git看这一篇就够了_java_62

Git看这一篇就够了_远程仓库_63

6.5 提交到本地库

Git看这一篇就够了_远程仓库_63

6.6 切换版本

Git看这一篇就够了_远程仓库_65

6.7 创建,切换,合并,解决冲突

Git看这一篇就够了_git_66

Git看这一篇就够了_本地库_67

Git看这一篇就够了_本地库_68

Git看这一篇就够了_远程仓库_69

七、IDEA集成Github

7.1 设置github账号

Git看这一篇就够了_git_70

7.2 分享工程到 GitHub

Git看这一篇就够了_java_71

过程需要绑定账号,一次绑定后。后面就不需要在绑定了

Git看这一篇就够了_java_72

7.3 push 推送本地库到远程库

push代码只能将本地库代码推送到远程库,如果代码版本不一致,push操作会拒绝,也就是说push成功,一定要保证本地库的版本要比远程库的版本高。

如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!

修改代码后,点击push即可同步到远程库

Git看这一篇就够了_java_73

7.4 pull 拉取远程库到本地库

pull拉取分支并合并

fetch拉取,不合并

Git看这一篇就够了_git_74

7.5 clone 克隆远程库到本地

删除我们之前的项目,通过导入github仓库的形式将远程库代码克隆到本地

Git看这一篇就够了_java_75

八、国内代码托管中心-码云

国内代码托管平台

8.1 IDEA集成码云

只需要下载gitee插件即可

Git看这一篇就够了_本地库_76

8.2 IDEA连接码云

Idea 连接码云和连接 GitHub 几乎一样,首先在 Idea 里面创建一个工程,初始化 git 工程,然后将代码添加到暂存区,提交到本地库

Git看这一篇就够了_java_77

8.3 码云赋值Github项目

Git看这一篇就够了_java_78

很简单的操作,一步一步进行即可

Git看这一篇就够了_远程仓库_79

如果GitHub 项目更新了以后,在码云项目端可以手动重新同步,进行更新!

Git看这一篇就够了_java_80

九、自建代码托管平台GitLab

git安装

需提前准备好安装包gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm

安装最重要的是一个干净的环境,所以建议清理好环境在进行安装

安装相关包的时候最好用网络yum源

网路yum源如下设置即可

wget -O /etc/yum.repos.d/local.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all && yum makecache yum install -y epel-release yum clean all && yum makecache

下列命令一条一条执行即可~

systemctl stop firewalld && systemctl disable firewalld && setenforce 0
yum install openssh-server -y
yum install postfix -y
systemctl start postfix
systemctl enable postfix
yum install cronie -y
rpm -ivh gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm
EXTERNAL_URL="http://gitlab.test.com"
gitlab-ctl reconfigure

这个是错误的信息,这个 情况是因为内存不够。

按照官方给的提示信息,2个cpu和2个内存才行

Git看这一篇就够了_本地库_81

Git看这一篇就够了_git_82

访问

首次登陆之前,需要修改下 GitLab 提供的 root 账户的密码,要求 8 位以上,包含大小写子母和特殊符号

Git看这一篇就够了_本地库_83

默认的用户名是root

密码是我们一开始设置的

Git看这一篇就够了_java_84

idea集成Gitlab

安装插件

Git看这一篇就够了_本地库_85

gitlab的操作和github、码云几乎一样

注意配置地址的时候是本地的地址即可

定义远程库

Git看这一篇就够了_git_86

提交成功

Git看这一篇就够了_java_87

Git看这一篇就够了_本地库_88


举报

相关推荐

0 条评论