文章目录

  • 一、介绍
  • 1.1 什么是版本控制
  • 1.2 为什么需要版本控制
  • 1.3 版本控制工具
  • 1.3.1 集中式版本控制工具
  • 1.3.2 分布式版本控制工具
  • 1.4. git的工作机制
  • 1.5 Git和代码托管中心
  • 二、Git常用命令
  • 2.1 设置用户签名
  • 2.2 初始化本地库
  • 2.3 查看本地库状态
  • 2.4 添加到暂存区
  • 2.5 提交本地库
  • 2.6 修改文件
  • 2.7 版本穿梭
  • 三、Git分支操作
  • 3.1 什么是分支
  • 3.2 分支的好处
  • 3.3 分支的操作
  • 3.3.1 查看分支
  • 3.3.2 创建分支
  • 3.3.3 切换分支
  • 3.3.4 合并分支
  • 四、Git团队协作机制
  • 五、GitHub操作
  • 5.1 创建远程仓库
  • 5.2 创建远程仓库操作
  • 5.2.1 创建远程仓库别名
  • 5.2.2 推送本地分支到远程仓库
  • 5.2.3 拉取远程库到本地库
  • 5.2.4 克隆代码到本地库
  • 六、协作
  • 6.1 团队内协作
  • 6.2 跨团队协作
  • 七、SSH免密登录
  • 八、IDEA集成Git
  • 8.1 配置Git的忽略文件
  • 8.2 初始化&提交&添加
  • 8.3 切换版本
  • 8.4 创建分支
  • 8.5 合并分支
  • 九、IDEA集成GitHub
  • 9.1 登录GitHub账号
  • 9.2 分享项目到GitHub
  • 9.3 添加ssh免密登录
  • 9.4 克隆代码到本地
  • 十、码云
  • 10.1 IDEA集成码云
  • 10.2 分享项目到码云
  • 10.3 从GitHub中导入
  • 十一、gitLab自建代码托管平台


一、介绍

Git是一个分布式版本控制工具,可以快速高效地处理从小型到大型的各种项目。

Git易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CVS、Perforce和ClearCase等版本控制工具。

1.1 什么是版本控制

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。

版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

1.2 为什么需要版本控制

没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。

1.3 版本控制工具

1.3.1 集中式版本控制工具

通过一个服务器,将多个用户连接到服务器进行文件的记录,用的时候每个人把自己需要的被授权的那部分代码下载到自己的计算机上,提交也是最后提交到服务器上,服务器可以对代码做很好的控制,但是需要有网络,网络断了,就没法工作了,如果服务器宕机了,将无法协同工作。

1.3.2 分布式版本控制工具

分布式就是每个人都有一份完全的代码,提交和管理都是在本地进行,虽然有远端仓库,不过那是最终提交用的,没联网本地也是完整代码的,只是每次需要最新的代码的时候才必须联网;而我们要说的Git就是分布式版本控制软件的代表,对应的网上仓库比较有名的就是Github了;

1.4. git的工作机制

通过java登陆gitee_github

1.5 Git和代码托管中心

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

  • 局域网:GitLab
  • 互联网:GitHub、Gitee

二、Git常用命令

通过java登陆gitee_git_02

2.1 设置用户签名

首次使用git需要设置用户签名,否则无法提交带代码。

签名的作用是区分不同操作者的身份,用户签名信息在每一个版本的提交信息中能够看到,以此来确认本次提交是谁做的。

git config --global user.name 用户名

git config --global user.email 用户名

2.2 初始化本地库

git init

通过java登陆gitee_github_03

2.3 查看本地库状态

git status

通过java登陆gitee_通过java登陆gitee_04

通过java登陆gitee_github_05

通过java登陆gitee_通过java登陆gitee_06

2.4 添加到暂存区

git add 文件名

2.5 提交本地库

将暂存区的文件提交到本地库,形成历史版本。

git commit -m "日志信息" 文件名

通过java登陆gitee_通过java登陆gitee_07

查看版本信息的命令:

git reflog//精简版
git log//完整版

2.6 修改文件

文件修改后,文件状态会显示在工作区,此时需要执行git add 文件名命令添加到暂存区,再通过git commit -m "日志信息" 文件名提交到本地库。

2.7 版本穿梭

git reset --hard 版本号

版本号可以通过这个git refloggit log得到。

通过java登陆gitee_通过java登陆gitee_08

head指向master分支,master分支再指向某个版本。

三、Git分支操作

3.1 什么是分支

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

3.2 分支的好处

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

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

3.3 分支的操作

命令名称

作用

git branch 分支名

创建分支

git btranch --v

查看分支

git checkout 分支名

切换分支

git merge 分支名

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

3.3.1 查看分支

通过java登陆gitee_远程仓库_09

3.3.2 创建分支

通过java登陆gitee_git_10

3.3.3 切换分支

通过java登陆gitee_通过java登陆gitee_11

3.3.4 合并分支

将hotfix分支合并到master分支上,需要处于master分支的状态下,输入git merge 分支名,完成合并分支(合并只会修改master的内容)。

当有冲突时:

通过java登陆gitee_git_12

四、Git团队协作机制

团队协作:成员A push推送项目到代码托管中心,团队中的成员可以把clone项目下来,在修改完以后,成员B push代码后,成员A可以将项目进行pull更新。

跨团队协作

通过java登陆gitee_通过java登陆gitee_13

五、GitHub操作

5.1 创建远程仓库

创建远程仓库教程

5.2 创建远程仓库操作

5.2.1 创建远程仓库别名

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

为远程地址创建别名:git remote add git-demo(别名) https://github.com/82877340/git-demo.git

通过java登陆gitee_本地库_14

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

git push 别名 分支

通过java登陆gitee_远程仓库_15

5.2.3 拉取远程库到本地库

git pull 别名 分支

通过java登陆gitee_github_16

5.2.4 克隆代码到本地库

git clone 链接

公共仓库克隆不需要登录账号,它会做以下步骤:

  1. 拉取代码
  2. 初始化仓库
  3. 创建别名

通过java登陆gitee_github_17

六、协作

6.1 团队内协作

首先成员A需要将成员B邀请进项目,变成项目的成员才可以进行操作。

成员B在克隆代码后,做的更改可以推送到远程仓库,但是要保证自己的代码时刻都是最新的。

6.2 跨团队协作

  1. 团队B找到要操作团队A的项目点击forke
  2. 团队B在自己的远程仓库进行修改,后添加并提交
  3. 点击pull requests,再点击 new pull request,再点击create pull request,填写详细信息完成创建便会发送一个请求。
  4. 团队A在pull request可以看到团队B发送的申请,点击merge pull reqeust就可以将提交的这个申请合并到当前自己的项目中。

七、SSH免密登录

  1. 复制SSH链接,到c盘的user(自己的电脑用户名)目录下,进入git bash界面,输入
ssh-keygen -t rsa -C 823777340@qq.com(邮箱地址)
  1. 进入user目录下的.ssh目录下,复制id_rsa.pub中的内容
  2. 进入账号的settings中,找到SSH and GPG keys,将公钥添加进去即可,后续使用SSH链接进行,pull或push等都不需要再验证密码。

八、IDEA集成Git

8.1 配置Git的忽略文件

与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽IDE工具之间的差异。

  1. 创建忽略规则文件xxxx.ignore(前缀名随便起,建议是 git.ignore),这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig文件引用,建议也放在用户家目录下

通过java登陆gitee_通过java登陆gitee_18

此文件中复制如下内容:

# 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
  1. 来到.gitconfig中添加如下内容:
[core]
excludsfile = ‪C:/Users/long/git.ignore
注意:一定是/不是\
  1. 到Idea中配置git的位置

能看到版本信息则说明成功了

通过java登陆gitee_github_19

8.2 初始化&提交&添加

通过java登陆gitee_通过java登陆gitee_20

右击文件或目录选择Git下的相关选项就可以进行操作了,红色文件表示未添加到暂存区,绿色文件表示已经添加到暂存区但是没有提交,黑色文件表示未提交。

8.3 切换版本

通过java登陆gitee_github_21

8.4 创建分支

通过java登陆gitee_本地库_22

通过java登陆gitee_远程仓库_23

或者直接点击idea右下角的分支,就可以找到新分支。

8.5 合并分支

处于master分支,点击hot-fix分支,点击合并到当前分支,就会把hotfix的内容合并到master。

通过java登陆gitee_通过java登陆gitee_24

当发生冲突时,需要手动选择接受哪个分支的代码或者点击合并调整代码

通过java登陆gitee_github_25

通过java登陆gitee_本地库_26

九、IDEA集成GitHub

9.1 登录GitHub账号

通过java登陆gitee_本地库_27

9.2 分享项目到GitHub

通过java登陆gitee_github_28

通过java登陆gitee_远程仓库_29

9.3 添加ssh免密登录

通过java登陆gitee_本地库_30

9.4 克隆代码到本地

通过java登陆gitee_远程仓库_31

十、码云

10.1 IDEA集成码云

安装码云插件,在插件中搜索gitee下载安装

通过java登陆gitee_本地库_32

10.2 分享项目到码云

通过java登陆gitee_通过java登陆gitee_33

10.3 从GitHub中导入

在新建仓库时,选择导入即可。

十一、gitLab自建代码托管平台

官网地址:https://about.gitlab.com/