Git和GitHub Git和Goes版本控制

一、Git常用命令总结

在这里插入图片描述

1. git本地仓库创建并初始化

mkdir learngit && cd learngit			#创建一个文件夹作为版本库
git init							#将该文件初始化为git本地管理仓库
git add 文件名/ .			#将一个文件添加到暂存区
git commit -m "文件说明"	#将文件提交到仓库
git status					#查看git当前状态
git diff 文件名			#比较文件和修改了哪些内容
git branch name			#本地创建分支
git checkout name		#切换分支

2. git提交相关命令

#本地仓库与远程仓库关联
git remote add origin git@github.com:shallum1123/远程仓库名.git
#将本地仓库内容推送到远程仓库
git push -u origin master
#push失败,则进行拉取关联
#若未和远程仓库关联则使用此命令
git pull origin master --allow-unrelated-histories
#将远程仓库克隆到本地(任意目录下直接拉)
git clone git@github.com:shallum1123/远程仓库名.git
git clone -b 分支名称 git@github.com:shallum1123/远程仓库名.git
#查看文档当前版本的内容
cat readme.txt
#查看由近到远的提交版本日志
git log  ||    git log --pretty=oneline
#回退到上一个版本
git reset --hard HEAD^		
#回退到指定id版本
git reset --hard  版本id
#查看记录的每次git命令
git reflog								

3. GitHub中配置ssh key

GitHub配置SSH Key的目的是为了帮助我们在通过git提交代码是,不需要繁琐的验证过程,简化操作流程。

# 1. 设置git的username 和 email
git config --global user.name "zyl"
git config --global user.email  "shallum1123@163.com"

# 2.没有SSH Key,则需要先生成一下 :生成ssh密钥
ssh-keygen -t rsa -C "shallum1123@163.com"

# 3. id_rsa.pub内容copy到github 的ssh keys中

# 4. 验证ssh 修改
ssh -T git@github.com
# Hi shallum1123! You've successfully authenticated, but GitHub does not provide shell access.说明连接成功

查看git用户配置信息

git config user.name
git config user.email
# 使用list参数可以查看配置信息,配合local和global可以针对性的查看。
git config --list
# 对当前仓库有效
git config --list --local
# 对当前用户所有仓库有效
git config --list --global

global 配置写入/.gitconfig 文件,local 写入当前仓库下.git/config文件,local优先级高于global

4. Git Merage

# 切换到需要合并到的分支
git checkout master
#合并分支到当前分支
git merge dev
#存在冲突 强制覆盖,慎用 --force
git push origin dev --force

#git checkout remotes/anodlink/anodlink_dev
#远程仓库master分支下载到本地并存为tmp分支
git fetch origin master:tmp
# 查看不同
git diff tmp
#合并 删除分支
git merge tmp

5. Git Push 撤回

# 查看历史commits
git reflog
# 改变HEAD 指向
git reset
# 仅改变HEAD指向
git reset --soft
# 回退代码版本
git reset --hard 版本号	
git reset --hard HEAD~1
# 当前分支版本低于远程版本强制push
git push origin 分支 --force

6. idea ignore文件上传设置

# 1. 在settings - plugins下搜索.ignore插件,安装后并重启idea
# 2. 右键项目添加.ignore文件 并添加或略文件名
# 3. 清理git 缓存
git   rm  -r --cached .
# 4.将 .ignore文件提交到git远端服务

本地新建分支后,直接执行 git push -u origin 同本地分支名 会在远程新建分支。

在这里插入图片描述

7. Git-GitHub协同开发统一规范

本地操作

本地新建分支名 dev_姓名 (dev_zhaoyonglong )

git branch dev_zhaoyonglong
git checkout dev_zhaoyonglong
# 开发结束提交代码到远程命令
git add .
git commit -m "message"
git push -u origin dev_zhaoyonglong

在这里插入图片描述

在github上你的分支下会出现compare& pull request 让你合并到指定分支的请求

在这里插入图片描述

点击compare后到下面的界面,左边master分支是你需要合并到的分支,目前我们的主分支是develop20200616

注意,不要在master分支上操作,右边是你自己的分支
在这里插入图片描述

二、Git私有仓库搭建

一、yum安装git

配置环境需要有ssh

su root
yum install openssh.x86_64
ssh -v
yum install -y git
git version
#添加git用户(非必须)
cat /etc/group | grep git	#检查mysql组和用户是否存在,如无创建,
cat /etc/passwd | grep git
useradd git
passwd git
#useradd -r -g git -s /bin/false git
#删除用户
userdel -r git
#查看git用户创建成功否
cd /home && ls -al

卸载git

rpm -qa | grep git
rpm -e git
# yum 卸载
yum remove git

二、配置Git 的SSH访问

在git用户下操作

su git
cd /home/git
mkdir .ssh
cd .ssh
touch authorized_keys
# 设置权限
chmod 700 /home/git/.ssh
chmod 600 /home/git/.ssh/authorized_keys

客户端生成ssh私钥上传服务器

查看本地(代码编写系统)是否存在以下目录(C:\Users\Shallum\ .ssh)

.ssh
├── id_rsa
└── id_rsa.pub

ssh-keygen -t rsa
#一直回车默认

将.ssh 文件上传到服务器新建的.ssh目录

#将私钥文件内容追加到authorized_keys文件
cat id_rsa.pub >> authorized_keys

git服务器打开RSA认证

su root
vi /etc/ssh/sshd_config
#下面3个打开注释或添加
RSAAuthentication yes     
PubkeyAuthentication yes     
AuthorizedKeysFile  .ssh/authorized_keys #我的存在

本地客户端验证连接

ssh git@192.168.71.133
#注:如果提示需要密码,请检测公钥是否配置成功或RSA是否开启

三、服务器端创建git仓库

su git
cd /home/
#将git目录设置成为git用户所有
chown git:git git

#创建git仓库
mkdir repository.git
#将仓库设置为git用户所有
chown -R git:git repository.git
#进入仓库 初始化git仓库 --bare 创建裸仓库
git init --bare
#git仓库地址
git@192.168.1.100:/home/git/repository/Kevin_maven.git
#如果出现push不上去,在远程仓库在/.git/config 文件添加
[receive]
   denyCurrentBranch = ignore

在ecplise上连接私有git仓库

refs/heads/*   refs/remotes/origin/*

在idea上连接私有git仓库

#若从远程检出项目到本地 vcs --> Get from Version Control——>输入远程url(git@192.168.71.133:/home/git/repository/two.git) 和放置目录
git@49.233.195.230:/home/git/repository.git

1.setttings-->git-->Path:确认git的安装目录--/bin/git.exe
2.VCS -->Import into Version Control --> Creat Git Repository-->选择项目根目录作为仓库
3.在远程仓库初始化和本地仓库同名的远程仓库
4.将项目做基本的add和commit后 右键-->Git-->repository-->选择操作,输入url
例如:git@192.168.71.133:/home/git/repository/Game.git
新建分支:右下角 git -->New Branch
切换分支:

Git Bash命令上传文件到私有git仓库

#可以进行clone-- git clone 用户名@服务器IP:/相对用户根目录的git仓库绝对路径/git仓库名.git
git clone git@192.168.71.133:/home/git/repository/two.git
#git remote add origin https://github.com/shallum1123/Game.git
git remote add origin git@192.168.71.133:/home/git/repository/Game.git
git push -u origin master
#若未和远程仓库关联则使用此命令
git pull origin master --allow-unrelated-histories

四、Git版本控制以及冲突解决

Git Bash 命令操作

#查看历史提交记录
git log
git log --oneline #简介
#指定作者和查看提交记录数
git log --author=shallum1123 --oneline -5
#项目完结打签
git tag -a v0.1.0 -m "说明"
#根据版本号追加标签
git tag -a v0.2.0 85fc7e7
#根据标签查看提交记录
git tag
git log --oneline --decorate --graph#显示标签
git show v0.1.0
git show '版本号'
#创建分支
git branch dev
#切换到分支
git checkout dev
#合并到主分支

#永久删除远程仓库不需要文件
cd/到本地仓库目录文件
git pull origin master
dir  #查看有哪些文件
git rm -r --cached xiti			#删除 xiti 文件夹
git commit -m "删除了xiti文件夹" 	#提交,说明删除了xiti文件夹
git push origin master 			#将本次更改更新到github上

三、私有仓库操作

git仓库

重庆安道亿联供应链项目git仓库:

远程仓库名:origin
	frame 项目仓库地址
    user@49.233.195.230:/home/user/repository/frame.git
    主分支:master
    开发分支:anodlink_dev
    个人分支:dev_名
远程仓库名:origin
	business 项目仓库地址
    user@49.233.195.230:/home/user/repository/business.git
    主分支:master
    开发分支:anodlink_dev
    个人分支:dev_名

提交代码相关操作流程:

#关联仓库	
git remote add origin user@49.233.195.230:/home/user/repository/business.git
git remote add origin user@49.233.195.230:/home/user/repository/frame.git
git remote add adtweb user@49.233.195.230:/home/user/repository/adt_web.git
#第一次强制推送
git push anodlink anodlink_dev --force
#强制覆盖
git pull anodlink anodlink_dev --allow-unrelated-histories

问题:

warning: remote HEAD refers to nonexistent ref, unable to checkout

解决:

git branch  #输出空
git branch -a #输出 remotes/anodlink/anodlink_dev
git checkout remotes/anodlink/anodlink_dev # checkout的是git branch -a输出的内容
#接着创建分支:
git checkout -b remotes/anodlink/anodlink_dev
git branch #可以看到输出*remotes/anodlink/anodlink_dev,不再为空
git branch -m remotes/anodlink/anodlink_dev master  #重命名分支叫master
git show-ref #命令查看也能看到head了

四、git删除远程仓库

git remote #查看远程仓库
git remote rm  origin #删除仓库别名
git branch -d dev #删除本地分支
git branch -D 分支名 #强制
git push origin --delete 分支名 # 删除远程分支

五、远程覆盖本地仓库

git fetch --all && git reset --hard origin/anodlink_dev && git pull origin anodlink_dev
# 把远程仓库和本地同步,消除差异
git pull origin master --allow-unrelated-histories
#强制推送到远程
git push -f origin master
# 平台系统 代码仓库
user@49.233.195.230:/home/user/repository/v1.1/frame.git
# 业务系统 代码仓库
user@49.233.195.230:/home/user/repository/v1.1/business.git
# 前端代码仓库
user@49.233.195.230:/home/user/repository/v1.1/adt_web.git
# 开发需求-详设-规范文档仓库
user@49.233.195.230:/home/user/repository/v1.1/doc.git

四、Gogs安装

  1. 环境需要:安装git 和mysql
  2. 配置mysql -为Gogs添加一个mysql用户
--创建一个用户名为'gogs',密码为'1qaz2wsx!@'的用户。
create user 'gogs'@'%' identified by '1qaz2wsx!@';
--赋予gogs用户所有权限
grant all privileges on gogs.* to 'gogs'@'%';
flush privileges;

--变更加密方式
alter user 'gogs'@'%' identified with mysql_native_password by '1qaz2wsx!@';

下载配置权限

wget https://dl.gogs.io/0.11.91/gogs_0.11.91_linux_amd64.tar.gz
wget https://dl.gogs.io/0.11.34/linux_amd64.tar.gz
# 或者官网下载
https://gogs.io/docs/installation
# 给用户分配权限
chown git:git /home/git/**
# 解压
tar -xf linux_amd64.tar.gz -C /home/git

# 配置守护进程
cp scripts/systemd/gogs.service /etc/systemd/system
sudo systemctl start gogs.service # 启动服务
# 如果需要开机启动话执行:
sudo systemctl enable gogs.service
# 查看服务运行状态
sudo systemctl status gogs.service
# 账户
adt
1qaz2wsx!@
#修改权限
sudo chmod -R 700 /home/git/gogs
sudo chown -R git:git /home/git/gogs
# 注意开启3000端口在访问
http://49.233.18.80:3000

新建git用户

useradd git
passwd git #gogs1234
# 将仓库设置为git用户
visudo
git     ALL=(ALL)       NOPASSWD: ALL
chown -R git:git repositories/

在网页访问设置后登录新建仓库后的操作

# 新建的仓库地址
git@49.233.189.80:zyc/business.git
git remote add origin git@49.233.189.80:zyc/business.git
git push -u origin master

五、Git 版本控制规范

项目v1.0版本开发完成后就行打版(管理员设置dev-1.0分支禁止提交项目,只允许下拉),项目升级基于1.0开发1.1版本时需要打基线(管理员创建1.1分支,并将1.0项目复制到1.1分支)

为规范源代码版本管理,现将各分支表述如下:

1.master分支
存放的应该是随时可供在生产环境中部署的代码
当开发活动告一段落,产生了一份新的可供部署的代码时,master分支上的代码会被更新。同时,每一次更新,都有对应的版本号标签(TAG)。
分支命名:master
该分支,由管理员负责维护,其它人只有拉取权限。来自于release分支的合并,供发版使用
生命周期:伴随着整个项目的生命周期,项目结束时结束。

2.develop分支
develop分支是每次迭代版本的共有开发分支,从最新的master分支派生(管理员操作)
当develop分支上的代码已实现了软件需求说明书中所有的功能,派生出release分支(管理员操作)
分支命名:dev-版本号
该分支,由开发人员在各自的feature分支开发完成后,合并至该分支。
生命周期:一个阶段功能开发开始到本阶段结束

3.release分支
从develop分支派生(管理员操作)
测试环境中出现的bug,统一在该分支下进行修改,并推送至远程分支。修改内容必须合并回develop分支和master分支。
分支命名惯例:release-版本号
生命周期:一个阶段功能开发结束开始,完成阶段功能测试并修复所有发现bug,合并会develop分支结束。

4.feature分支
在开发一项新的软件功能的时候使用,这个分支上的代码变更最终合并回develop分支
分支命名惯例:feature-姓名全拼-分支说明-日期 / feature-分支说明-日期
例:接到一个开发关于cc视频点播替换的任务,你需要从develop分支拉出一个分支,并命名为:release-yhm-ccVideo-20200827。然后在该分支下进行开发,开发结束,将该分支合并至develop分支(此时的代码必须为可运行的,不能影响到他人),合并完成删掉该特性分支。
开发人员的每一个新功能开发都应该在该类分支下进行。
生命周期:开发一个新功能开始,完成新功能开发并合并回develop分支结束。

5.hotfixes分支
在master分支发现bug时,在master的分支上派生出一个hotfixes分支,修改完成后,合并至master分支以及develop分支,合并完成,删除该hotfixes分支。
分支命名惯例:hotfixes-姓名全拼-分支说明-日期
示例:hotfixes-yhm-cclivebug-20200827
生命周期:发现master分支bug开始,完成master分支bug结束。

综上,开发人员需要操作的分支如下:

feature分支  (开发使用)
release分支   (测试中出现的bug修改)
hotfixes分支 (master中出现的bug修改)

整个流程可以下图展示

在这里插入图片描述

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页