赞
踩
此文档来源于网络,如有侵权,请联系删除!
Git
是一个开源的分布式
版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理
。也是Linus Torvalds
为了帮助管理Linux内核
开发而开发的一个开放源码的版本控制软件
。
Git概述
版本控制介绍
分布式版本控制VS集中式版本控制
集中化的版本控制系统诸如 CVS、SVN等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。
这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。
事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。
分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:
1.服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
2.每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
代码托管中心
远程库
。
安装和客户端的使用
命令名称 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户签名 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m “日志信息” 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard 版本号 | 版本穿梭 |
设置用户签名
设置用户名
git config --global user.name 用户名
设置邮箱
git config --global user.email 邮箱
查看是否配置成功
说明
Git 首次安装必须设置一下用户签名,否则无法提交代码。
注意:
这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。初始化本地库
初始化本地库
git init
初始化完成以后,文件夹下就会出现一个.git的隐藏文件
查看本地库状态
查看本地库状态(首次查看,工作区没有任何文件)
git status
编辑文件(与Linux命令相同,文件存在则编辑,文件不存在则创建+编辑)
vim 文件名
按i进入编辑模式→输入内容→按Esc退出编辑模式→输入":wq"按回车键保存退出
显示当前目录下的内容
查看本地库状态(再次查看,检测到有未跟踪的文件)
添加暂存区
添加暂存区
git add 文件名
查看本地库状态(添加到暂存区,再次查看)
删除暂存区的文件(删除暂存区的文件后,工作区文件还是存在的)
git rm --cached 文件名
查看本地库状态(删除暂存区的文件,再次查看,检测到有未跟踪的文件)
提交本地库
提交本地库
git commit -m "日志信息" 文件名
查看本地库状态(提交本地库后查看本地库状态,显示在分机主机上无任何可提交的东西,工作树是干净的)
查看引用日志信息
git reflog
查看详细日志信息
git log
修改文件
修改文件(与Linux命令相同,文件存在则编辑,文件不存在则创建+编辑)
vim 文件名
按i切换编辑模式
编辑完成后按Esc退出编辑模式→输入":wq"按回车保存退出
版本穿梭
查看版本信息
git reflog
查看版本详细信息
git log
版本穿梭
git reset --hard 版本号
概述和优点
在版本控制过程中,同时推进多个任务,为每个任务我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是个单独的副本。(分支底层其实也是指针的引用)
同时并行推进多个功能开发,提高开发效率。各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
命令名称 | 作用 |
---|---|
git branch -v | 查看分支 |
git branch 分支名 | 创建分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
查看
查看
git branch -v
创建
创建
git branch 分支名
切换
切换
git checkout 分支名
合并分支(正常合并)
合并分支(正常合并)
git merge 分支名
合并分支(冲突合并)
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个。必须人为决定新代码内容。
案例(模拟合并冲突)
解决合并冲突
“查看状态(检测到有文件有两处修改)“
团队协作和跨团队协作
团队协作
跨团队协作
命令名称 | 作用 |
---|---|
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程地址 | 起别名 |
git push 别名 分支 | 推送本地分支上的内容到远程仓库 |
git clone 远程地址 | 将远程仓库的内容克隆到本地 |
git pull 远程库地址别名 本地库分支名 | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
GitHub官网:https://github.com/
注册(根据提示要求进行注册)
登录(根据提示要求进行登录)
登录以后画面显示
创建远程库
创建远程库
1.点击加号→New repository(创建新的远程仓库)
2.设置远程库名称(一般是和自己本地库同名)→Create repository(创建新的远程仓库)
3.创建成功
4.查看远程库的HTTPS链接&SSH链接
创建别名
查看别名(查看当前所有远程地址别名-如图所示没有查到别名)
git remote -v
创建别名
git remote add 别名 远程地址
创建别名以后在查看别名(别名创建成功)
推送本地库到远程库
推送本地库到远程库
git push 别名 分支
提示输入yes后回车报错
再次执行命令还是报错
如上图所示报错解决办法:https://blog.csdn.net/weixin_44904239/article/details/132025848
推送本地库到远程库成功
GitHub查看推送内容
拉取远程库到本地库
修改Git Hub远程库内容
拉取远程库到本地库
git pull 远程库地址别名 本地库分支名
克隆远程库到本地
克隆远程库到本地
1.拿到远程库的链接地址
2.本地电脑创建一个新的文件夹用来存储远程库克隆文件(在新建的文件夹中打开Git bash)
3.克隆远程库到本地
git clone 远程地址
4.克隆完成后查看新建文件夹中就会有从远程库克隆过来的文件等。。。
总结:clone会做如下操作
团队内协作
其他人想要推送和拉取代码到远程库,需要邀请其他人加入到到这个团队中
邀请人员加入到团队中
1.访问GitHub官网:https://github.com/ 然后登录
2.点击需要邀请成员加入的项目
3.Setting→Collaborators→Add people
4.输入被邀请人的账号→添加成员
5.复制邀请函(将邀请行发给被邀请的成员)
6.被邀请的人需要访问GitHub→登录GitHub→将收到的邀请行复制到已经登录的浏览器地址栏然后访问→点击Accept invitation接受邀请→然后就可以看到项目内容等信息
7.被邀请的人就可以推送和拉取代码到远程库
跨团队协作
A将远程仓库的项目地址复制发送给跨团队协作的人员B。
搜索项目(两种方法)
方法一
:跨团队协作的人员B拿到项目地址后,将项目地址复制到已经登陆了GitHub的浏览器地址栏
方法二
:跨团队协作的人员B以 “账号名/项目名” 的方式,在GitHub网站的搜索框内进行搜索
跨团队协作的人员B将项目叉到自己账号中(自己账号下就会显示叉过来的项目)
跨团队协作的人员B就可以克隆到自己的本地库或者直接线上修改(修改完成以后只有自己能看到,A是看不到的)
跨团队协作的人员B修改完代码后创建拉取请求
A查看拉取请求
A合并跨团队协作人员B修改过的代码
SSH免密登录
生成SSH密钥(打开Git Bash执行下面命令)
ssh-keygen -t rsa -b 4096 -C "邮箱号"
此处邮箱号为创建GitHub账号的电子邮件地址,途中会让你输入密码啥的,不用管,一路回车即可,则会生成SSH密钥(如果重新生成的话会覆盖之前的SSH密钥)。
查看公钥&私钥文件(两种方法)
方法一
:找到公钥文件所在的目录直接打开查看
此处可以看到一对文件,其中以
.pub
结尾的是公钥文件,另一个没有后缀的是私钥文件。
方法二
:通过打开Git Bash执行命令查看
将SSH公钥添加到GitHub
1.登录GitHub,点击头像
2.点击Settings
3.SSH and GPG keys→New SSH key
4.填写标题→粘贴公钥→Add SSH key
5.添加成功
配置Git忽略文件
为什么要忽略这些文件?
与项目的实际功能无关,不参与服务器上部署运行。把他们忽略掉能够屏蔽IDE工具之间的差异。
配置Git忽略文件
1.创建忽略规则文件xxxx.ignore(前缀名随便起,建议是git.ignore)
这个文件的存放位置原则上放在哪里都可以,
为了便于让 ~/.gitconfig 文件引用,建议放在用户家目录下
git.ignore
文件模板内容如下:
# Compiled class file 编译后的类文件 *.class # Log file 日志文件 *.log # BlueJ files *.ctxt # Mobile Tools for Java .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
2.在 .gitconfig
文件中引用忽略配置文件(此文件在Windows的家目录中)
[user]
name = xiongjian
email = xiongjian@163.com
[core]
excludesfile = C:/Users/xiongjian/git.ignore
C:/Users/xiongjian/git.ignore代表的是git.ignore文件存在的目录位置,
注意:这里要使用 "正斜线(/)",不要使用 "反斜线(\)"
IDEA定位Git程序
VCS→Import into Version Control→Create Git Repository
选择需要被Git管理的项目→OK
pom.xml文件显示红色,表示该文件未被追踪,未添加到暂存区
选择pom.xml文件,鼠标右键→Git→Add
pom.xml文件显示绿色,表示该文件已添加到暂存区,还未提交到本地库
选择pom.xml文件,鼠标右键→Git→Commit File
可以编写提交消息→查看提交内容→Commit
创建新的文件的时候会有提示是否要将创建的文件添加到Git中
两个文件未添加到暂存区
选择整个项目,鼠标右键→Git→Add
两个文件未添加到本地库
选择整个项目,鼠标右键→Git→Commit Directory
Commit
蓝色的文件表示该文件被追踪过,但是文件内容做了修改,还未添加到暂存区
添加暂存区
提交本地库(蓝色文件可以不添加暂存区直接提交本地库)
查看版本信息
切换版本(选择要切换的版本,鼠标右键→Checkout Revision)
黄色头指针指向了second commit版本,页面内容也发生了变化
方法一
点击项目名称,鼠标右键→Git→Repository→Branches
New Branch
起分支名→OK
方法二
Git:master→New Branches
Git:master→选择要切换的分支→Checkout
合并分支(正常合并)
切换到hot-fix分支
在hot-fix分支上修改或添加代码
提交本地库
切换到master分支
将hot-fix分支合并到master分支
合并分支(冲突合并)
切换到hot-fix分支
在hot-fix分支上修改或添加代码
提交本地库
切换到master分支
在master分支上修改或添加代码
提交本地库
这里清楚的看到针对于同一个版本修改了两次(此时合并必然发生冲突)
将hot-fix分支合并到master分支
合并成功
File→Settings
Plugins→搜索 “GitHub” 查看是否安装(我这边已经安装好了,如果没有安装就自行安装)
1.File→Settings
2.Version Control→GitHub→点击+号
3.输入GitHub账号和密码→Log In(IDEA使用账号和密码很难登录上)
4.使用口令登录
5.访问GitHub官网→登录→点击头像
GitHub官网:https://github.com/
6.Settings
7.Developer settings
8.Personal access tokens→Tokens (classic)→Generate new token
9.Generate new token (classic)
10.取名→设置口令失效时间→设置权限(勾选所有权限)→Generate token
11.复制口令(创建完成第一时间复制口令,不然刷新一下就找不到了,就要重新创建口令了)
12.粘贴口令→Log In
13.OK
注意:push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push 的操作是会被拒绝的。也就是说,要想 push 成功,一定要保证本地库的版本要比远程库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!
1.VCS→lmport into Version Control→ Share Project on GitHub
2.定义远程库名称→起别名→添加描述信息→Share分享
分享前确认网络流畅,能正常访问GitHub官网,避免分享失败
分享失败解决方法参考:https://blog.csdn.net/weixin_44904239/article/details/132105434
3.创建远程库及推送中
4.用浏览器登录授权
5.在GitHub上成功共享项目
6.成功后,GitHub就能看到分享成功的远程库及推送的代码
1.添加或修改代码
2.提交本地库
3.推送代码到GitHub远程库(两种方法)
方法一
方法二
4.建议使用SSH链接方式
5.GitHub网站上复制项目的SSH链接
6.创建SSH链接方式
7.修改成SSH链接方式
8.推送代码到GitHub远程库
9.推送成功
注意:pull 是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题。
1.访问GitHub官网,登录后修改代码并提交修改
2.打开IDEA→VCS→Git→Pull
3.拉取远程代码合并本地库成功
1.删除本地库项目代码
2.打开IDEA→Check out from Version Control→Git
3.打开GitHub官网→登录→复制项目链接
4.粘贴项目链接→选择克隆下来项目存放的位置→Test(测试是否正常)→Clone
5.等待项目克隆完成
6.项目克隆完成
众所周知,GitHub服务器在国外,使用GitHub作为项目托管网站,如果网速不好的话,严重影响使用体验,甚至会出现登录不上的情况。针对这个情况,大家也可以使用国内的项目托管网站-码云。
码云是开源中国推出的基于Git的代码托管服务中心,网址是 https://gitee.com/,使用方式跟GitHub一样,而且它还是一个中文网站,如果你英文不是很好它是最好的选择。
1.点击 “+” 号→创建仓库
2.输入仓库名称→创建
3.创建完成
1.File→Settings
2.Plugins→Marketplace→搜索"Gitee"→Install→Restart IDE→Restart
1.File→Settings
2.Version Control→Gitee→点击 “+” 号
3.输入账号、密码→Lon In→OK
1.打开Gitee官网→登录→复制项目链接
2.打开IDEA→选择要推送项目点击鼠标右键→Git→Repository→Push
3.origin→Define Remote→设置名称、粘贴项目链接→OK
4.输入Gitee账号和密码→Continue
5.origin→origin-gitee→Push
6.推送成功
1.创建项目→点击导入→选择导入方式,然后填写完信息点击导入即可
自建代码托管平台-GitLab
GitLab 是由 GitLabInc.开发,使用MIT 许可证的基于网络的Git 仓库管理工具,且具有wiki和 issue 跟踪功能。使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。
准备一个系统为 CentOS7 以上版本的服务器,要求内存 4G,磁盘 50G。配置好主机名和IP,保证服务器可以上网。
我这边使用虚拟机:主机名:gitlab-server IP 地址: 192.168.3.240
#修改主机名(修改完成以后重启服务器生效)
vim /etc/hostname
Yum 在线安装 gitlab-ce 时,需要下载几百M的安装文件,非常耗时,所以最好提前把所需rpm包下载到本地,然后使用离线rpm的方式安装。
下载地址:https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm
下载完成后直接将rpm包上传到服务器/opt/module 目录下即可。
1.执行下面命令先安装rpm包
sudo rpm -vih /opt/module/gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm
2.根据下面安装说明一步步操作
安装说明:https://gitlab.cn/install/
sudo yum install -y curl policycoreutils-python openssh-server perl
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
#这步执行等待时间比较长需要耐心等待
curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
#会删除安装旧的版本,安装新的版本
sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-jh
#查看密码文件
cat /etc/gitlab/initial_root_password
#GitLab初始化服务(需要耐心等待,出现如下图所示表示初始化服务成功)
gitlab-ctl reconfigure
#修改gitlab.rb配置文件
vim /etc/gitlab/gitlab.rb
将如下图所示改为服务器IP地址
#修改后内容
external_url "http://192.168.3.240"
#修改完成后重新加载配置文件
gitlab-ctl reconfigure
#启动GitLab服务
gitlab-ctl start
1.打开浏览器访问服务器IP地址
2.输入账号:root 密码:根据前面内容找到初始密码粘贴进行登录
1.点击头像→Preferences
2.Password→输入旧的密码、新的密码→Save password
3.密码更新成功,请重新登录
1.点击头像→Preferences
2.Preferences→Language语言选择→选择中文→Save changes保存更改
3.退出账号重新登陆才会生效
1.创建项目→创建空白项目
2.设置项目名称→公开→创建项目
3.创建成功
1.File→Settings
2.Plugins→搜索 “gitlab” →Install→Restart IDE→Restart
1.File→Settings
2.Vresion Control→GitLab→Add New GitLab Server
3.输入链接地址→选择对应的方式→点击OK→OK
1.GitLab上复制项目链接地址
2.鼠标右击要推送的项目→Git→Repository→Push
3.origin→Define Remote
4.命名→粘贴链接地址→OK
5.origin→origin-gitlab→Push
6.输入账号和密码→Continue
7.推送成功
此文档来源于网络,如有侵权,请联系删除!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。