Git和IDEA


Git 概述

Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。
Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。

何为版本控制

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

版本控制工具

  • 集中式版本控制工具 SVN(Subversion)

  • 分布式版本控制工具 Git

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

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

Git 工作机制

在这里插入图片描述
历史版本是删除不了的,就算在之后的版本覆盖了,还是能切换回未删除时的版本

Git 和代码托管中心

本地库push到远程库

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

  • 局域网 GitLab
  • 互联网 GitHub(外网) Gitee 码云(国内网站)

Git 安装

mac已经自带git

Git 常用命令

命令名称作用
git config -l查看所有配置
git config --globaluser.name用户名设置用户签名
git config --globaluser.email邮箱设置用户签名
git init初始化本地库
git status查看本地库状态
git add文件名添加到暂存区
git commit -m"日志信息"文件名提交到本地库
git reflog查看历史记录
git reset --hard版本号版本穿梭

说明:
签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看
到,以此确认本次提交是谁做的。Git 首次安装必须设置一下用户签名,否则无法提交代码。
※注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任
何关系。

初始化本地库

git init
在这里插入图片描述

查看本地库状态

在这里插入图片描述
添加一个文件后,检测到未追踪的文件

在这里插入图片描述

添加暂存区

在这里插入图片描述
这个时候文件还是可以删除的,删除的只是暂存区的文件,工作区文件还是在的
在这里插入图片描述

将暂存区提交本地库,形成历史版本

在这里插入图片描述

查看版本库

在这里插入图片描述

修改文件
修改文件后显示modified add 后 commit 显示一个文件改变,一行插入,一行删除,因为git中是按照行来维护文件,那一行被删除后在添加上去,指针指向第二个版本
在这里插入图片描述

版本穿梭,切换到指定版本,文件内容也会退回或前进到指定版本的内容

在这里插入图片描述
Git 切换版本,底层其实是移动的 HEAD 指针

分支操作

  • 什么是分支

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

  • 分支的好处

同时并行推进多个功能开发,提高开发效率。
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败
的分支删除重新开始即可。

  • 分支的操作
命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上

创建了一个分支后(相当于复制当前指针所指的版本),修改分支的文件,切换回其他分支,发现对其他分支不会产生影响

在这里插入图片描述

  • 合并分支

git merge 分支名
hot-fix分支在master最新节点上复制而来,切换至hot-fix分支修改并commit,切换回master马上进行合并则不会产生冲突,因为两个分支都是在同一个节点基础上(master还未产生新的提交)
冲突只会产生在两个分支相同的一个文件之内,新增的文件不会产生冲突。

  • 产生冲突

自动合并失败

上一步的基础上,切换回master后,更改了master再合并,此时回产生冲突,因为git不知道该以那个分支的为准,此时手动去除git在文件中做的冲突标记就可以合并了
在这里插入图片描述

需要手动解决冲突,删除标记符号,手动修改到希望留下来的代码
再 git add。这时 git commit 不能带文件名,否则会报错

Git团队协作机制

在这里插入图片描述

跨团队协作,其他人可以fork复制一个远程库,再从复制的远程库clone到本地,修改后push到复制的远程库,最后将复制的远程库pull request 推送到被复制人的远程库

在这里插入图片描述

  • 远程仓库操作
命令名称作用
git remote -v查看当前所有远程地址别名
git remote add 别名 远程地址起别名
git push 别名 分支推送本地分支上的内容到远程仓库
git clone 远程地址将远程仓库的内容克隆到本地
git pull 远程库地址别名 远程分支名将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并

GitHub 操作

  1. 创建远程仓库

在这里插入图片描述

在这里插入图片描述

  • 创建成功后会生成一个仓库地址

在这里插入图片描述

  • 创建远程仓库别名
    1)基本语法
    git remote -v 查看当前所有远程地址别名
    git remote add 别名 远程地址

在这里插入图片描述

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

git push 别名 分支

在这里插入图片描述

  • 克隆远程仓库到本地
    1)基本语法
    git clone 远程地址

在这里插入图片描述

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

  • 远程拉取
    git pull 地址或别名 分支

邀请加入团队,只有在团队的人才能往远程库推送代码

在这里插入图片描述

填入想要合作的人

在这里插入图片描述

复 制 地 址 并 通 过 微 信 钉 钉 等 方 式 发 送 给 该 用 户 , 复 制 内 容 如 下 :

在这里插入图片描述
复制的连接发送给需要邀请到的人,同意后就加入了团队

  • 跨团队协作

进入其他人的仓库点击forkfork就可以将仓库叉过来,对代码进行编写了

在这里插入图片描述

正常commit后,pull request推送到被叉的仓库

在这里插入图片描述

被叉的仓库管理员收到pull,点击后审核,点击Merge pull request 合并到当前仓库
在这里插入图片描述

在这里插入图片描述

ssh免密登陆

IDEA 集成 Git

配置 Git 忽略文件

1)Eclipse 特定文件
在这里插入图片描述
2)IDEA 特定文件

.idea目录 、.iml文件、maven的target目录

问题 1:为什么要忽略他们?

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

问题 2:怎么忽略?
1)创建忽略规则文件 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

初始化本地库

新建了一个工程后,选择VCS就可以将当前工程进行git init 初始化
在这里插入图片描述

创建分支切换分支

在这里插入图片描述

合并分支

如在master分支上 合并hot-fix分支,则
修改了hot-fix分支,没修改master所以没有冲突,正常合并
在这里插入图片描述

冲突合并

在master分支上 合并hot-fix分支
修改了hot-fix分支,也修改了master所冲突,正常合并
在这里插入图片描述

在这里插入图片描述

左侧是master分支代码,右侧是hot-fix分支代码,中间是没有冲突的代码,箭头是保留,叉是丢弃。完成后点apply就能自动提交

码云集成IDEA(同GitHub一样)

idea安装码云插件
在这里插入图片描述

添加码云账号
在这里插入图片描述
向码云推送
在这里插入图片描述
点击push就能推送成功

在这里插入图片描述

在吗云在线编辑后提交了

在这里插入图片描述
重新拉取
在这里插入图片描述

在码云上导入github项目

复制git的https地址就可以导入了

在这里插入图片描述

强制同步,同步github的更新过来
在这里插入图片描述

自建代码托管平台-GitLab

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 等组织使用。

GitLab 官网地址

官网地址:https://about.gitlab.com/
安装说明:https://about.gitlab.com/installation/

准备一台虚拟机,关闭防火墙、能访问外网、配置好ip

安装包准备

Yum 在线安装 gitlab- ce 时,需要下载几百 M 的安装文件,非常耗时,所以最好提前把所需 RPM 包下载到本地,然后使用离线 rpm 的方式安装。直接将此包上传到服务器/opt/module 目录下即可。

下载地址:
https://packages.gitlab.com/gitlab/gitlabce/packages/el/7/gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm

编写安装脚本

安装 gitlab 步骤比较繁琐,因此我们可以参考官网编写 gitlab 的安装脚本。
直接用vim创建一个脚本,注意第一行安装文件的目录
vim 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/gitlabce/script.rpm.sh | sudo bash
sudo EXTERNAL_URL="http://gitlab.example.com" yum -y install gitlabce

end

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值