Git 安装及用法 github 代码发布 gitlab私有仓库的搭建
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
这个版本控制软件,有 svn还有git,是一个工具.
- git是由linux的作者开发的
- git是一个分布式版本控制系统
- svn cvs是集中式的版本控制系统,区别于git,集中式的版本控制系统,必须联网才能用,并且写完了,还得放到一个统一管理的目录,还得通过网络传输
- 版本库指的就是一堆代码,被循规蹈矩的管理者,就是叫做版本库
- snv必须联网才能使用,而且如果中央服务器挂了,就是svn服务器挂了,整个代码仓库全挂了,谁也用不了
linux平台安装git软件
- yum安装
2. 编代码编译安装
3. rpm包手动安装
yum安装git
配置阿里云的yum源,因为它下载快,2下载软件包齐全
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo一条命令安装git软件
yum install git -y
安装git完毕,查看版本
[root@fd yum.repos.d]# git --version
git version 1.8.3.1设置git的版本控制用户信息
一般公司用这个命令!!!!!
针对当前linux登录的用户添加了一个配置,不会对他人造成影响
git config --global user.name "alex dsb"
用这个命令就会在 ~/.gitconfig文件
用--system就是对操作系统所有的用户,都设置这个配置
git config --system user.name "alex dsb"
git config --global user.email "yc_uuu@163.com"
- 查看全局版本用户信息
git config --global --list
git的使用生命周期
工作目录(你当前linux操作的目录) > 暂存区 > 本地仓库 > 远程github
git的命令,就是将文件变化,在这四个区域,来回变动
初始化git版本库的方式,有三个
对已经有的代码进行 版本管理
我这台机器 已经有了一个django项目,对它进行管理对当前已经有的django项目进行git初始化
git init
查看git状态
git status #查看git状态
(gitlearn) [root@lht1 dj220]# git status
# On branch master #在master分支上
#
# Initial commit
#
# Untracked files: #未标记的文件如下
# (use "git add <file>..." to include in what will be committed)
#
# dj220/
# manage.py
git项目的第一次管理,初始化的流程
git init 对django代码初始化
git status 查看git版本库的状态
对django代码,进行跟踪,标记 ,然后提交本地工作区的代码,到暂存区
git add .提交暂存区的代码,到本地版本库
git commit -m "写入你的提交备注信息"-m 是标记注释的意思
查看git提交日志
git loggit的各种命令,就是对四个区域来回切换,并且只能在git工作区下去敲
必须得在含有.git文件夹的目录,去敲命令,才可以在git版本库目录下,新创建的文件,都会被标记为 Untracked files,代表未跟踪的文件
对新创建的文件,进行跟踪
git add .修改django的url.py,写入新功能,也是对文件进行修改标记 modified
对修改过的代码文件,也必须git add 添加到暂存区git add .
任何的对项目修改的操作,注意都要git status看一下
查看git提交日志
git log
git回退历史
语法: git reset --hard commit的id记录 --hard参数是强制性回退
git reset --hard 954e6df1c0a2a71dd141850727d3eddd580518b3
再次回到另一个提交版本信息,
git reset --hard 2444fd8ed876eab2a95a697d039916510b356104git穿梭未来
git 回退,前进版本,其实就是是对git的文件指针,来回切换
文件指针叫做headgit reflog #查看所有回退历史记录的命令
撤回git修改的记录
对已经跟踪的文件app01/views.py进行修改,此时标记为了modified: app01/views.py
如果你想提交本次修改动作
git add .
如果你发现代码修改错了,git可以很方便的撤回
git checkout -- 文件名
git checkout -- app01/views.py理解git命令
git init 初始化一个git版本库,会生成一个.git 文件夹,此时这个目录就是git仓库了!!!修改git工作区的文件,重命名,以及删除文件
linux的命令如下
rm 删除
mv 移动目录,或者重命名
但是,你对git仓库中的代码,请使用git的命令
git rm 删除git管理的代码
git mv 对git管理的代码,改名git临时区的概念
使用场景:
git add 作用是? 是把本地工作区的代码,提交到暂存区
git commit 将暂存区的代码,提交到本地版本仓库中,提交完毕,这件事就结束了使用流程,场景,在你开发新功能的时候,突然线上代码有问题,你必须得改线上代码,
将你目前已经开发好的功能,临时存储起来,
待你修复bug完毕之后,再把这个临时存储的代码,回退回来即可1.git stash #讲你暂存区提交的代码,放到一个stash临时区中
2.修复bug完毕
3.拿回stash的代码
git stash pop
4.查看stash是否还有临时代码
git stash list5.注意未标记的,已修改的文件,都得git add 添加到暂存区之后,才可以提交到本地仓库
git add .6.如果你想提交这个代码
git commit -m "提交注释信息"git分支功能,每个人都有自己的分支,不直接影响本体代码,在自己的分支上,写完代码后,通过管理员吧分支的代码,合并到主干上即可
git branch #查看当前所在的分支
git branch dev #创建 dev 分支
git branch dev2.0 #创建 dev2.0 分支git checkout dev #切换到 dev 分支
分支开发使用流程
1.创建新的分支
git branch dev
2.切换分支
git checkout dev
3.在分支下,写自己的代码
........
4.切换到主干分支上
git checkout master
5.合并分支的代码,此时 dev 开发提交的代码,就被合并到master了
git merge dev分支冲突怎么办?手动解决冲突的代码即可
思路:master分支和 dev 分支,同时操作一个文件,对同一行代码进行写入
1.用master主干分支,操作一个文件,并且提交commit
git branch #当前是主干master
模拟对一个文件的第二行写入代码
2.master提交本次修改记录
git add .
git commit -m "提交注释"
3.切换分支,也对同一个文件,进行写入代码,且提交
git checkout dev
模拟对同一个文件,写入同一行代码,肯定会和master冲突
git add .
git commit -m "分支提交的注释"4.回到master主分支,合并吴佩琪分支,然后手动解决
git checkout mastergit merge dev
如果出现了冲突,就手动编辑这个文件,删除git自动添加的冲突注释
5.保存文件退出
git add .
git commit -m "master最终合并的注释"
6.git分支的命令
git branch 分支名linux 创建分支linux
git checkout 分支名linux 切换分支到linux
git branch 查看当前分支情况,在哪一个就有*符
git check -- filename 一键还原文件,将git仓库的文件覆盖当前文件,危险命令
git checkout -b name 创建+切换新的分支
2.当前机器没有项目,直接进行git初始化,这个是管理一个空的目录
mkdir 目录名
git init 初始化这个空目录
3. 公司使用方式是他
远程克隆下载一个项目,从github,或者gitlab ,一台新的机器,啥也没有,把公司的代码下载出来,进行开发,以及版本管理
github的使用
注册一个github账号
https://github.com登录后,添加创建一个新的github仓库,用于传输本地代码
新建github仓库,填写github仓库的名字,描述信息,以及redame文件,以及忽略文件(忽略编程语言的一些缓存文件)
添加ssh秘钥,让github和linux机器进行免密登录
linux推送代码到github有2个登录方式
一个是账号密码方式
一个是ssh秘钥方式选择ssh秘钥,安全性更高
ssh是一个远程安全登录的命令,可以通过ssh-keygen命令生成一对公私钥(其实就是2个秘钥文件),然后把公钥发给github,私钥自己本地保留
输入如下命令 ssh-keygen[root@fd dj220]# ssh-keygen #这个命令生成一对公私钥,
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:ResKz3ErviC3OjbHe+Hqog2290YrqgCVlsMcpL+JUmg root@fd
The key's randomart image is:
+---[RSA 2048]----+
| .o . |
| + + . . |
|. O o |
| = . o |
|oEo . S o |
|oo o .+.+ . |
|+ = .ooo=.. |
|o. +Bo=+o. |
|..+=o@*+o. |
+----[SHA256]-----+
[root@fd dj220]#
[root@fd dj220]#
[root@fd dj220]# cd ~/.ssh/
[root@fd .ssh]# ls
公私钥内容如下 id_rsa是秘钥 id_rsa.pub 是公钥
id_rsa id_rsa.pub
把公钥的内容,赋值粘贴发给github
查看如下内容,
[root@fd .ssh]# cat id_rsa.pub
将如下公钥信息,复制
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKfEGqHrIf8n6NrawBFt0/slRobTVuI9HoLxBWx0SdhIj+ATKgsEoVryG1S3WXulStNgDqF4dBSTRbNPFO/rrMdyURYRnSceQBKdNe+SmW2ttb/bfxd4JOnsC2ARCBK+DCTB48gtoSx+x4AUx3HGMUkOlgCjhHxk55CaMY8BtrBvdBAuOtUrv2RVOiheTTI+Sr8OJL/7lHEkZWGkW1n+xnx4/Urph4oa6lg8gQgFMWlLA9z5+cN8ZrQUi0MLX4p2e8sYfMnkzra5sSsUKQulqRsATaD8RK4FD+VEDWYwGfbdncCIMgiqol6gEQXKc4OJ/mU/xQMx5RQFwQGXW4hFFX root@fd
此时你的linux 机器和github已经建立ssh通道了
获取你的github项目仓库地址
比如你的项目地址如下:
git@github.com:zhangziyi/WebChatRoom.git在linux机器上配置远程仓库别名
git remote add 都是关键字 然后给你的github项目地址添加一个别名叫做origin
git remote add origin git@github.com:zhangziyi/WebChatRoom.git
保证你的本地代码,和远程github仓库内容一致,如果不一致,会失败,先pull下载代码,保证一致性
git pull origin master #向远程的github origin别名下的master分支下载代码此时可以吧你本地的代码,推送到github仓库了
git push 是推送的意思 origin是远程仓库地址的别名 master 推到远程仓库的master分支上
得到git管理的版本仓库下敲
git push origin master
去github去查看代码
新机器配置
1. 配置ssh秘钥,方式在笔记上面
2. 在一个目录,克隆一个新项目代码
git clone git@github.com:zhangziyi/WebChatRoom.git
3.在github仓库下,在浏览器中,新建一个分支,名字是development
4.下载最新的github代码
git pull origin
5.此时项目,默认只有一个master分支,所以需要新建一个分支去开发,便于维护master的代码
#在本地新建一个dev分支,并且和远程的github的dev分支建立关系
git pull origin
git branch zhangfei origin/zhangfei
6.在项目中使用development分支去开发
...开发代码省略...
7.提交本地开发
git add .
git commit -m "分支提交了新的代码"
8.提交分支本地的代码,到github中
git push origin development
9.合并分支代码,推送到master主干线中
git checkout master
git merge development #合并分支的代码
git push origin master #推送本地master的代码到github中
git常用命令
git init 初始化
git status 查看git版本库的状态
git add 指定文件或者 .
git commit -m "提交的注释" 提交暂存区的内容到本地仓库
git checkout 文件名 #撤回对文件的修改
git checkout 分支名 #切换不同的分支
git log #查看git提交的日志记录
git reflog #查看所有提交以及回退的记录
git reset --hard commitID #回退到某一个提交的id版本下
git config --global user.name "你的名字"
git config --global user.umail "你的邮件"
git branch #查看分支
git branch 分支名 #创建一个新的分支
git branch -d 分支 #删除这个分支
git checkout -b 分支名 #创建并且切换到一个新的分支下
git stash #将暂存区的记录,临时放到一个区域 ,先git add之后,再git stash
git stash pop #删除最后一个stash记录,放回暂存区
git rm #删除git版本库中的文件
git mv #改名
git remote add 别名 github仓库的地址
用法如下
git remote add origin git@github.com:zhangziyi/WebChatRoom.git
git push 别名 分支名
用法
git push origin master #推送本地git仓库到github仓库了
git pull origin master #下载github远程仓库到本地来
gitlab 配置
nginx git yum python mysql redis 都是linux上的软件
gitlab私有仓库的搭建, github共有仓库不安全,虽然现在也有私有仓库的功能了
携程,美团运维开发组都是搭建的gitlab企业私有代码仓库
环境配置,至少4G内存的虚拟机
通过yum安装gitlab,阿里云的源也没有gitlab这个软件包
解决方案:选择gitlab官网提供的yum仓库地址
还是去找一个第三方,拥有gitlab软件包的yum仓库
配置清华大学的yum源
找到yum仓库目录
/etc/yum.repos.d
然后手动创建一个 以.repo结尾的文件
touch gitlab.repo写入如下信息
cat gitlab.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
~
安装gitlab
yum install gitlab-ce如何启动?
确保服务器内存足够,可以用如下三个命令,清空buff内存缓存
[root@DD-Server-9F ~]# echo 1 > /proc/sys/vm/drop_caches
[root@DD-Server-9F ~]# echo 2 > /proc/sys/vm/drop_caches
[root@DD-Server-9F ~]# echo 3 > /proc/sys/vm/drop_cachesgitlab-ctl reconfigure 初始化gitlab,只能执行一次
gitlab-ctl status/stop/start 启动gitlab
gitlab-ctl status #确保你的gitlab启动了
访问方式:
直接访问你linux服务器的ip即可,注意关闭linux防火墙(咱们学习阶段的配置)iptables -F #清空规则
systemctl stop firewalld
systemctl disable firewalld
#临时关闭selinux,也是一个防火墙
setenforce 0
#永久关闭selinux,修改/etc/selinux/config
修改如下参数
通过浏览器访问页面服务器ip,默认开启了nginx的web端口,设置初始密码,操作类似github
第一次访问会设置新密码 至少8个字符默认登录用户root
密码11111111
即可看到gitlab
2.启动了gitlab之后,修改了账号密码
3.配置ssh公钥,发送给gitlab
4.下载私有的gitlab仓库
git clone git@192.168.3.3:root/webchathoom.git5.进入gitlab下载的代码中,此时就可以pull push代码了
Git 安装及用法 github 代码发布 gitlab私有仓库的搭建的更多相关文章
- Git版本控制及gitlab私有仓库
Git版本控制系统 版本控制系统简介 版本控制系统是一种记录一个或若干个文件内容变化,以便将来查阅特定版本内容情况的系统 记录文件的所有历史变化 随时恢复到任何一个历史状态 多人协作开发 常见版本管理 ...
- go get获取gitlab私有仓库的代码
目录 目录 1.Gitlab的搭建 2.如何通过go get,获取Gitlab的代码 目录 1.Gitlab的搭建 在上一篇文章中,已经介绍了如何搭建Gitlab Https服务<Nginx ...
- Git安装与上传代码至Github
转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6642887.html 这篇文章应该是全网最新,最全,最靠谱的Github安装到上传代码的流程. 1.Git ...
- 如何把本地代码提交到git(码云)、github代码管理项目上
前提必须安装了git工具 以下命令操作都是通过git bash操作. 将本地代码提交到码云空项目操作: D:\>mkdir inek_winprop D:\>cd inek_winprop ...
- MyEclipse 8.5整合Git,并在Github上发布项目【转】
最近Git火得如日中天,而且速度体验和团队模式都很不错.手头正好有个学生实训项目,时间紧任务重,而且学校内网管理太紧,所以就想借助于Internet的分布式开发,因此想到了Github. 经过一天的调 ...
- MyEclipse 8.5整合Git,并在Github上发布项目(转)
下载Eclipse的git插件——EGit.下载网址http://download.eclipse.org/egit/updates-1.3/org.eclipse.egit-updatesite-1 ...
- MyEclipse 8.5整合Git,并在Github上发布项目
我们在闲暇时间想加入些团队做点属于自己有意义的东西,那Github就是为你准备的.但是用惯SVN的我们就得学习学习了. 工具/原料 myeclipse8.5 github 方法/步骤 1 下载Ecli ...
- 项目管理---git----快速使用git笔记(五)------本地项目代码提交到远程仓库---新建项目
上一篇我们已经知道了怎么从远程仓库获取项目文件代码. 项目管理---git----快速使用git笔记(四)------远程项目代码的首次获取 git还有一种使用场景是 我本来在电脑里就有一个项目,现在 ...
- Kubernets二进制安装(5)之私有仓库harbor搭建
在IP地址为192.168.80.50,机器名为mfyxw50上搭建私有仓库harbor harbor下载地址: harbor下载连接地址:https://github.com/goharbor/ha ...
随机推荐
- 数据库 'xxxx' 的事务日志已满。若要查明无法重用日志中的空间的原因
一.出现的背景: 在SQL server中执行SQL语句出现如下图: 二.出现的原因: 我到数据库的服务器看了一下硬盘空间发现此数据库所在的D盘空间几乎已经用尽.如图: 三.解决方法: 第一种方法:直 ...
- C#-变量类型(值类型、引用类型)
第一次发这样的笔记呢! 这个是在再读基础的时候感觉自己理解的东西吧 变量的类型差异在数据的存储方式不一样,值类型是变量本身直接存储数据,另一个则是存储实际变量的引用, 值类型:都是存储在栈中的,都是直 ...
- DataTable与List<T>相互转换
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- Java基础篇——集合浅谈
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10703558.html,否则将追究法律责任!!! Set(基于Map来实现的,不细说) H ...
- python面向对象学习(五)多态
多态 多态:不同的 子类对象 调用相同的 父类方法,产生不同的执行结果 多态 可以 增加代码的灵活度 以 继承 和 重写父类方法 为前提 是调用方法的技巧,不会影响到类的内部设计 多态案例练习 需求 ...
- python基础学习(一) 第一个python程序
1. 使用python/python3解释器的方式 按照惯例,我们都是以Hello world作为一门程序语言的开始,进行如下的操作: 在桌面上新建一个hello-python文件夹 进入hello- ...
- regression and anova
regression一般是统计学的回归回归,研究一个随机变量Y对另一个(X)或一组(X1,X2,-,Xk)变量的相依关系的统计分析方法.研究一 个或多个随机变量Y1 ,Y2 ,-,Yi与另一些变量X1 ...
- Flex 弹性布局——笔记
将容器指定为Flex布局 display:flex -->d-flex display:-webkit-flex /*Safari*/ *float clear vertical-align失效 ...
- lua的多种实现方式(1-100的和)
function add( a, b ) return a + b end -- print( add( 10, 20 ) ) function loopT( T ) for i, v in ipai ...
- Js 转动抽奖实现
一.样本 地址:http://js.zhuamimi.cn/choujiang/index.htm 源码:https://pan.baidu.com/s/15KhesfcLf1WMOom6PhzCjA ...