Git(IDEA版本、GitHub,gitee)
目录
前言
感谢尚硅谷提供的免费课程资源,让我们来进行git知识的学习吧。
1 初始Git
1.1 版本控制工具
-
集中式版本控制工具
CVS、SVN(Subversion)、VSS……
-
分布式版本控制工具
Git、Mercurial、Bazaar、Darcs……
1.2 Git工作机制
②代码托管中心
代码托管中心负责维护远程库,让团队成员可以彼此协作。
- 局域网
Gitlab:如果有特殊需求不能使用外网的代码托管中心,可以在局域网内搭建自己的代码托管中心服务器。
- Internet
GitHub:国外网站,有非常多优秀的开源项目托管代码,但是从国内访问很慢。
码云:国内的代码托管中心,在国内互联网开发圈子中的地位举足轻重。
1.3 Git安装
高速下载链接:https://registry.npmmirror.com/binary.html?path=git-for-windows/
2 Git常用命令(本地库)
命令名称 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名(查看谁提交的代码,必须首先设置) |
git config --global user.email 邮箱 | 设置用户签名 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m"日志信息" 文件名 | 提交到本地库 |
git reflog | 查看版本信息 |
git log | 查看版本详细信息 |
git reset --hard 版本号 | 版本穿梭 |
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程地址 | 起别名 |
git push 别名 分支 | 推送本地分支上的内容到远程仓库 |
git clone 远程地址 | 将远程仓库的内容克隆到本地 |
git pull 远程库地址别名 远程分支名 | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
Git底层工作原理
其实就是指针移动
3 Git分支
①什么是分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独
分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时
候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是
一个单独的副本。(分支底层其实也是指针的引用)
②操作
命令名称 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
③分支合并冲突
- 默认分支master下有一个hello.txt文件,hot-fix分支下也有hello.txt文件,而且在同一文件位置。当我们修改hot-fix分支下的hello.txt文件,master分支下没有修改时,在master分支下合并hot-fix分支,不会产生冲突。
- 当master分支下也修改了hello.txt文件,这时hot-fix分支和master分支进行合并时就会出现代码合并冲突。原因在于git不知道是将master分支下修改的作为修改后的还是将hot-fix分支下修改的作为修改后的。这个时候就会产生代码冲突,冲突产生的表现
后面状态为 MERGING。
具体理解可见下图。
这个时候就需要进行手动合并,即用户自己判断到底如何进行修改合并。
- 编辑有冲突的文件,删除特殊符号,决定要使用的内容
特殊符号:
:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix hello git!- 添加到暂存区
- 执行提交(注意:此时使用git commit 命令时不能带文件名)
图解原理
master、hot-fix 其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD
决定的。所以创建分支的本质就是多创建一个指针。
HEAD 如果指向master,那么我们现在就在master 分支上。
HEAD 如果执行hotfix,那么我们现在就在hotfix 分支上。
4 团队协作
①团队内协作
②跨团队协作
5 GitHub操作
①创建远程仓库
② 远程仓库操作
命令名称 | 作用 |
---|---|
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程地址 | 起别名 |
git push 别名 分支 | 推送本地分支上的内容到远程仓库 |
git clone 远程地址 | 将远程仓库的内容克隆到本地 |
git pull 远程库地址别名 远程分支名 | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
推送后
③ 邀请团队合作具体操作步骤
没有进入团队之前,只能克隆,不需要权限。但是假如我们需要进行提交自己更改的版本,那么就需要我们在此之前加入团队,这样才可以进行后续操作。
1)选择邀请合作者
2)填入想要合作的人
3)复制地址并通过微信钉钉等方式发送给该用户
复制内容如下:https://github.com/atguiguyueyue/git-shTest/invitations
4)在atguigulinghuchong这个账号中的地址栏复制收到邀请的链接,点击接受邀请。
5)成功之后可以在atguigulinghuchong这个账号上看到git-Test的远程仓库。
6)令狐冲可以修改内容并push到远程仓库。
7)回到atguiguyueyue的GitHub远程仓库中可以看到,最后一次是lhc提交的。
④跨团队协作
1)将远程仓库的地址复制发给邀请跨团队协作的人,比如东方不败。
2)在东方不败的GitHub账号里的地址栏复制收到的链接,然后点击Fork将项目叉到自己的本地仓库。
叉入中…
叉成功后可以看到当前仓库信息。
3)东方不败就可以在线编辑叉取过来的文件。
4)编辑完毕后,填写描述信息并点击左下角绿色按钮提交。
5)接下来点击上方的Pull请求,并创建一个新的请求。
6)回到岳岳GitHub账号可以看到有一个Pull request请求。
进入到聊天室,可以讨论代码相关内容。
7)如果代码没有问题,可以点击Merge pull reque合并代码。
⑤SSH免密登录
我们可以看到远程仓库中还有一个SSH的地址,因此我们也可以使用SSH进行访问。
具体操作如下:
--进入当前用户的家目录
Layne@LAPTOP-Layne MINGW64 /d/Git-Space/SH0720 (master)
$ cd
--删除.ssh目录
$ rm -rvf .ssh removed '.ssh/known_hosts'
--运行命令生成.ssh秘钥目录[注意:这里-C这个参数是大写的C
$ ssh-keygen -t rsa -C atguiguyueyue@aliyun.com
复制id_rsa.pub文件内容,登录GitHub,点击用户头像→Settings→SSH and GPG keys
因为如果我们使用https这个链接的话,每次发布的时候都需要进行登录。但是我们使用ssh登录之后就不需要了。
6 IDEA集成Git
①配置Git 忽略文件
1)为什么
有些文件与项目部署没有关系。比如说下图中的,所以我们设置一个忽略文件模板来提交推送的时候忽略这些文件。
与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE工具之
间的差异。
2)如何配置
- 创建忽略规则文件 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
- 在 .gitconfig文件中引用忽略配置文件(此文件在 Windows的家目录中)
[core]
excludesfile = C:/Users/hxld/git.ignore
注意:这里要使用“正斜线( (//)”,不要使用“反斜线
②定位Git程序
③初始化本地库
选择要创建Git本地仓库的工程 。
④添加到暂存区
右键点击项目选择Git -> Add将项目添加到暂存区 。
⑤ 提交到本地库
⑥ 切换版本
⑦创建分支
⑧ 切换分支
在IDEA窗口的右下角,切换到 master分支 。
⑨ 合并分支
在IDEA窗口的右下角,将 hot-fix分支合并到当前 master分支。
⑩解决冲突
7 IDEA集成GitHub
①设置GitHub账号
然后去GitHub账户 上设置 token。
②分享工程到GitHub
注意错误:
解决上传到github报错Successfully created project ‘GitTest’ on GitHub, but initial push failed
通过IDEA上传代码到GitHub上可是有时候会碰到这样的问题。
当我们选择VCS->Import into Version Control->Share Project on GitHub提交代码。点击OK。然后就跳出了这样的信息:
Can’t finish GitHub sharing process
Successfully created project ‘GitTest’ on GitHub, but initial push failed:
unable to access ‘https://github.com/Prize-winner/GitTest.git/’: The requested URL returned error: 403
原来是github没有配置的原因,解决办法如下。
- 在你安装Git的目录下找到git-bash这个可执行文件
- 设置用户名和邮箱地址,如下图:
③push推送本地库到远程库
注意因为网络的问题,当我们设置了ssh免密登录之后,我们可以设置使用ssh免密登录进行github操作。(IDEA默认使用的是https协议)。
④ pull拉取远程库到本地库
右键点击项目,可以将远程仓库的内容pull到本地仓库 。
⑤clone克隆远程库到本地
8 IDEA集成Gitee
①码云创建远程库
点击首页右上角的加号,选择下面的新建仓库。
注意目前gitee已经不支持直接设置为公开了,设置为公开需要在创建仓库后而且仓库不为空的状态下才可以设置为开源。
②安装插件
③IDEA连接码云
Idea连 接码云和 连 接 GitHub几乎一样,首先在 Idea里面创建一个工程,初始化 git工
程,然后将代码添加到暂存区,提交到本地库 ,这些步骤上面已经讲过,此处不再赘述。
④码云复制 GitHub项目
码云提供了直接复制GitHub项目的功能,方便我们做项目的迁移和下载。
9 GitLab(未完成,非常用)
①准备服务器
centos7 + 内存4GB+储存50GB
关闭防火墙,并且 配置好 主机名和 IP,保证服务器可以上网。
在外部访问CentOS中部署应用时,需要关闭防火墙。
关闭防火墙命令:systemctl stop firewalld.service
开启防火墙:systemctl start firewalld.service
关闭开机自启动:systemctl disable firewalld.service
开启开机启动:systemctl enable firewalld.service
配置好主机名和Ip。
linux查看本机ip的命令是“ifconfig”命令和“ip address”命令;
linux查看端口号的命令是“lsof -i:port”命令和“netstat -aptn”命令。
ip地址:192.168.119.131
使用xshell登录linux服务器
使用linux命令创建/opt/module目录,我们要将gitlab安装包放到此目录下并安装。
② 安装gitlab
在xshell中利用xftp进行文件传输。将安装包放到/opt/module目录下。
现在目录下就有了。
- Yum在线 安装 gitlab- ce时,需要下载几百 M的安装文件,非常耗时,所以最好 提前把所需 RPM包下载 到本地,然后使用离线 rpm的方式安装 。下载地址:
https://packages.gitlab.com/gitlab/gitlabce/packages/el/7/ gitlab ce 13.10.2 ce.0.el7.x86_64.rpm - 编写安装脚本。
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
- 给脚本增加执行权限
③初始化并启动
- 执行以下命令初始化 GitLab服务,过程大概需要几分钟,耐心等待 …
- 执行以下命令启动 GitLab服务,如需停止,执行 gitlab-ctl stop
在Windows下面的这个地方配置映射
修改Hosts文件:
在【安全】中选中【编辑】,之后选择【Users】,将【修改】和【写入】后面允许的√打上,之后点击【确定】;
登录有两种方式。
使用主机名或者IP地址即可访问 GitLab服务 。 需要提前 配一下 windows的 hosts文件。
注意:我自己使用主机名或者ip地址没有登录上去。