1、Git能干什么
版本控制(个人数据的保存,团队协作的高效)、分支控制
2、Git简史
(1)Linux开源代码的合并,鲁纳斯本人研发了Git用于满足这个需求。
(2)优势:大部分操作在本地、完整性保证、快照形式增数据、分支操作流程、与Linux命令全面兼容
3、Git的结构
工作区(写代码)git add—>暂存区(临时存储)git commit—>本地库(历史版本)
4、Git与Github
(1)局域网:Gitlab
(2)外网环境:Github与码云
5、本地库与远程库
(1)团队内部协作
(2)外部协作
6、设置签名
git config --list #查看签名信息
git config --global user.name "HIT" #设置用户名
git config --global user.email "[email protected]" #设置用户邮箱
ghp_5TLzhh34HAwvAh2Vr7REhJUdTZHwUJ3Unra$ #阿里云 1个月w
git config --local credential.helper "" #清空历史设置信息
#优先级:就近原则,项目级别 > 系统用户级别。如果都没有是不允许的
7、基本操作
git status #查看git状态
git add good.txt #添加到暂存区
git rm --cached good.txt #从暂存区取回
git commit -m "create good.txt" good.txt #保存到本地库
8、版本的前进与后退
git reflog #查看版本日志
#双击黄色部分即可复制
git reset --hard 6540676 #这样就可以轻松的切换想要的版本,牛批Plus,就算本地文件彻底删除,从历史版本中也可以找到
9、比较文件
vim apple.txt #编辑文本
git diff apple.txt #比较文本标记前后的区别(工作区与暂存区的进行比较)
10、分支管理
在一次开发中master是主分支,hot_fix是修复bug的分支,feature_blue是蓝色背景的分支,feature_game是游戏的分支。分支让多个功能同时进行,提高效率;如果出现一个分支失败,不会影响到其他分支。
git branch -v #查看当前分支
git branch hot_fix #创建hot_fix分支
git checkout hot_fix #切换到hot_fix分支
git branch -v #当前分支会变绿
git merge hot_fix #合并分支
#当不同分支出现同行合并内容不同时,会出现冲突
#需要手动修改冲突提示的文件并保存,然后用下面的
git add modify.txt #添加修改文件到暂存区
git commit -m "resolve conflict" #不带文件名,来提交解决
11、Git的基本原理
(1)明文—>加密算法—>密文
(2)完整性保证也是通过客户端加密VS服务端加密比对的一致性保证的
(3)版本管理的本质是快照+指针,分支管理的本质是指针
12、Github账号注册与头像修改
注意:不建议使用163邮箱,有的信息可能收不到
13、本地库与远程库的交互
(1)远程库的创建
(2)本地关联远程库
https://github.com/yuebuqun163/jianpu.git #岳创建的远程地址
git remote -v #查看远程库地址信息
git remote add origin https://github.com/yuebuqun163/jianpu.git #添加远程库地址
vim test.txt #修改文件
git add test.txt #添加到暂存区
git commit -v "create test.txt" test.txt #添加到本地库
git push origin master #推送到远程仓库,首次推送需要输入Personal access tokens(从github获取)
#另一种方式是直接克隆
git clone https://github.com/yuebuqun163/jianpu.git #直接克隆远程仓库
cd 仓库目录 #切换到仓库目录
(3)邀请团队内成员加入项目
被邀请成员会收到邮件地址,打开地址接受即可拥有对此项目的push权限。
(4)远程库(可能包括信息修改)的拉取到本地
#pull = fetch + merge
git pull origin master #直接pull到本地,建议使用这个
git fetch origin master #先fetch
git merge origin/master #后merge
(5)协同开发时冲突的解决(远程库不同人操作)
#如果提交远程时,发现冲突
git pull origin master #直接pull到本地,建议使用这个
vim test.txt #编辑保存退出
git add test.txt #添加到暂存区
git commit -m "resolve conflict" #提交版本到本地仓库
git push origin master #推到远程库
#感受一个例子
#老刘借给小王1W元,告诉小王10天后归还
#老刘的妻子知道借钱但是不知道老刘说的期限后,要求小王5天后归还
#小王就相当于github,他不能接受老刘妻子的请求
#此时老刘妻子要先获取老刘的信息(git pull origin master)
#然后和老刘协商出结果为10天,修改协议 vim test.txt
#添加、本地库、最终提交远程库,小王github接受
14、跨团队协作流程
(1)项目的fork
https://github.com/yuebuqun163/jianpu.git #岳创建的项目地址
#东方不能直接拉去,登录自己账户后,先进入上述地址fork一下,注意观察地址栏变化
(2)关联自己的远程库
https://github.com/dongfangbubai126/jianpu.git #东方fork的地址
git remote -v #查看远程库地址信息
git remote add origin https://github.com/dongfangbubai126/jianpu.git #添加远程库地址
vim test.txt #修改文件
git add test.txt #添加到暂存区
git commit -v "create test.txt" test.txt #添加到本地库
git push origin master #推送到远程仓库,首次推送需要输入Personal access tokens(从github获取)
# push不好用的时候,一定要ipconfig /flushdns
#另一种方式是直接克隆
git clone https://github.com/dongfangbubai126/jianpu.git #直接克隆远程仓库
cd 仓库目录 #切换到仓库目录
(3)New pull request
(4)登录岳的账号审核
git pull origin master #最后岳拉取自己的项目到本地即可
15、Git工作流
SVN式工作流、团队内协作(邀请)、团队外协作(fork and pull request)
16、分支流说明
17、Gitlab服务器搭建
(1)配置Linux固定的IP地址
cd /etc/sysconfig/network-scripts/ #切换目录
ls -l #找到ifcfg-XXX文件并打开编辑
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #重要
DEFROUTE=yes #重要
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp3s0
UUID=ac2edfe1-9923-415c-add7-6b1078d8a684
DEVICE=enp3s0
ONBOOT=yes
IPADDR=192.168.105 #重要
GATWAY= 192.169.70.2 #重要
DNS=192.168.70.2 #重要
(2)安装Gitlab
yum -y install wget #安装wget
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-13.1.2-ce.0.el7.x86_64.rpm #下载镜像
yum install firewalld systemd -y #装防火墙
service firewalld start #启动防火墙
yum install -y curl policycoreutils-python openssh-server #安装ssh协议
systemctl enable sshd #设置ssh自启动
firewall-cmd --permanent --add-service=http #添加HTTP服务到firewalld
firewall-cmd --permanent --add-service=https #添加HTTPS服务到firewalld
systemctl reload firewalld #重启防火墙
yum install postfix #安装Postfix以发送通知邮件
systemctl enable postfix #将postfix服务设置成开机自启动
systemctl start postfix #启动postfix
yum install vim -y #安装vim编辑器
rpm -ivh gitlab-ce-13.1.2-ce.0.el7.x86_64.rpm #安装Gitlab的rpm包
vim /etc/gitlab/gitlab.rb #修改配置文件
#修改访问URL
#格式:external_url 'http://ip:端口'
#external_url 'http://192.168.0.105:8099'
#配置时区
#gitlab_rails['time_zone'] = 'Asia/Shanghai'
#unicorn['port'] = 8001
#postgresql['shared_buffers'] = "256MB"
#postgresql['max_connections'] = 200
firewall-cmd --zone=public --add-port=8080/tcp --permanent #开放端口
firewall-cmd --reload #重启防火墙
gitlab-ctl reconfigure #重新配置Gitlab
gitlab-ctl restart #启动Gitlab
gitlab-ctl stop #停止Gitlab
#最后访问http://192.168.0.105:8099/
systemctl disable gitlab-runsvdir.service # 禁止Gitlab开机自启动
enable gitlab-runsvdir.service # 启用Gitlab开机自启动
18、IDEA INTELLIJ、PYCHARM配置GIT
# 先安装Git
# File-Setting-Version Control-选择Git-bin-git.exe
# File-New-Project from version control-GitHub-use token
# VSC-enable version control integration-ok
# VSC-Operations Popup-commit-全选-commit
# VSC-Git-push-输入地址XXX.git-push
# 如果执行报错,打开项目所在git,执行git pull origin master --allow-unrelated-histories然后再push
----------------------------------
# PyCharm
File -> Settings -> Version Control -> Git-选择Git-bin-git.exe
VCS -> Checkout from Version Control -> Git-use token login
# 上方有git按钮,可以进行add、commit、push、pull、clone操作