GIT安装部署

git

git简介

Git不仅是一款开源的分布式版本控制系统,而且有其独特的功能特性,例如大多数的分布式版本控制系统只会记录每次文件的变化,说白了就是只会关心文件的内容变化差异,而Git则是关注于文件数据整体的变化,直接会将文件提交时的数据保存成快照,而非仅记录差异内容,并且使用SHA-1加密算法保证数据的完整性。

Git为了提高效率,对于没有被修改的文件,则不会重复存储,而是创建一个链接指向之前存储过的文件。

在正式使用前,我们还需要弄清楚Git的三种重要模式,分别是已提交、已修改、已暂存

已提交(committed):表示数据文件已经顺利提交到Git数据库中。

已修改(modified):表示数据文件已经被修改,但未被保存到Git数据库中。

已暂存(staged):表示数据文件已经被修改,并会在下次提交时提交到Git数据库中。

 

 

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo


Git是分布式的版本控制系统,我们只要有了一个原始Git版本仓库,就可以让其他主机克隆走这个原始版本仓库,从而使得一个Git版本仓库可以被同时分布到不同的主机之上,并且每台主机的版本库都是一样的,没有主次之分,极大的保证了数据安全性,并使得用户能够自主选择向那个Git服务器推送文件了,其实部署一个git服务器是非常简单的。


安装git

yum install git -y

 

配置git用户

git config --global user.name "yangyang"

 

配置用户邮箱

git config --global user.email "yangyang@mail.com"

 

带颜色

git config --global color.ui true

 

 

Git常用命令

add #添加文件内容至索引bisect #通过二分查找定位引入 bug 的变更branch #列出、创建或删除分支checkout #检出一个分支或路径到工作区clone #克隆一个版本库到一个新目录commit #记录变更到版本库diff #显示提交之间、提交和工作区之间等的差异fetch #从另外一个版本库下载对象和引用grep #输出和模式匹配的行init #创建一个空的 Git 版本库或重新初始化一个已存在的版本库log #显示提交日志merge #合并两个或更多开发历史mv #移动或重命名一个文件、目录或符号链接pull #获取并合并另外的版本库或一个本地分支push #更新远程引用和相关的对象rebase #本地提交转移至更新后的上游分支中reset #重置当前HEAD到指定状态rm #从工作区和索引中删除文件show #显示各种类型的对象status #显示工作区状态tag #创建、列出、删除或校验一个GPG签名的 tag 对象

 

 

提交数据

mkdir yangyang

 

创建一个工作目录

cd yangyang

 

初始化git工作目录

git init

 

初始化空的 Git 版本库于

/root/yangyang/.git/

 

创建文件

touch readme

创建文件

git add readme.txt

添加文件到暂存区

查看状态
git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
# (使用 "git rm --cached <file>..." 撤出暂存区)
#
# 新文件: readme.txt
#
# 未跟踪的文件:

 

 

提交到仓库

git commit -m "the fisst commit"

[master(根提交) 4367d80] the fisst commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 readme.txt

 


git移除数据

创建文件

touch database

 

添加到文件到暂存区

git add database

 

查看状态

git status
# 位于分支 master # 要提交的变更: # (使用
"git reset HEAD <file>..." 撤出暂存区) # # 新文件: database #

 

 

移除暂存区文件(并不会删除文件)

git rm --cached database
rm 'database'

 


###强制删除文件和git缓存区

git rm -f database(database 文件也没了)

 

 

git移动数据

重命名

git mv readme.txt test.txt
git status# 位于分支 master
# 要提交的变更:
# (使用 "git reset HEAD <file>..." 撤出暂存区)
#
# 重命名: readme.txt -> test.txt

 

 

在提交到仓库

git commit -m "changed name"[master 8a8b23d] changed name
1 file changed, 0 insertions(+), 0 deletions(-)
rename readme.txt => test.txt (100%)

 

 


git历史记录

git logcommit 8a8b23d984b69fb30db6a1cec40f27ba6b873652
Author: yangyang <yangyang@mail.com>
Date: Fri May 11 10:12:14 2018 +0800changed namecommit 4367d804810b6309b925720498e7cbaa641dba93
Author: yangyang <yangyang@mail.com>
Date: Fri May 11 10:06:56 2018 +0800the fisst commit

查看最近几条记录

git log -2

显示每次提交的内容差异

git log -p -1

 

#–pretty根据不同的格式展示提交的历史信息

git log –pretty=oneline

 

#以更详细的模式输出提交的历史记录

git log –pretty=fuller -2

 

还可以使用format参数来指定具体的输出格式,这样非常便于后期编程的提取分析哦,常用的格式有:

%s 提交说明。%cd 提交日期。%an 作者的名字。%cn 提交者的姓名。%ce 提交者的电子邮件。%H 提交对象的完整SHA-1哈希字串。%h 提交对象的简短SHA-1哈希字串。%T 树对象的完整SHA-1哈希字串。%t 树对象的简短SHA-1哈希字串。%P 父对象的完整SHA-1哈希字串。%p 父对象的简短SHA-1哈希字串。%ad 作者的修订时间。

 

 

git log –pretty=fomat:”%h %cn”

#查看当前所有提交记录的简短SHA-1哈希字串与提交着的姓名

fomat:2caa209 yangyang
fomat:88f3791 yangyang
fomat:76c486f yangyang

 


git数还原
添加一段文字

echo "yangyang">readme.txt 

 

提交到暂存区

git add readme.txt

 

提交到仓库

git commit -m "yangyang"

 

在此追加一段话到readme

echo "hellow ....">>readme.txt 

 

添加到暂存区

git add readme.txt

 

提交

git commit -m "hello"

 

觉得写得不怎么样,想还原某一次提交的快照

git log --pretty=oneline
a7542d38edb628dd48c4118993784fec92d4fbbf hello 84d3786398cfa203ffc1c7015033457c72e5c72f yangyang

 


Git服务程序中有一个叫做HEAD的版本指针,当用户申请还原数据时,其实就是将HEAD指针指向到某个特定的提交版本,但是因为Git是分布式版本控制系统,为了避免历史记录冲突,故使用了SHA-1计算出十六进制的哈希字串来区分每个提交版本,另外默认的HEAD版本指针会指向到最近的一次提交版本记录,而上一个提交版本会叫HEAD^,上上一个版本则会叫做HEAD^^,当然一般会用HEAD~5来表示往上数第五个提交版本。

 

还原上一次提交版本

git reset --hard HEAD^

 

HEAD 现在位于 84d3786 yangyang


查看你的文件

cat readme.txt
yangyang

 

 

#这时候又想还原的最新的版本。。。。

git log --pretty=oneline84d3786398cfa203ffc1c7015033457c72e5c72f yangyang
8a8b23d984b69fb30db6a1cec40f27ba6b873652 changed name
4367d804810b6309b925720498e7cbaa641dba93 the fisst commit

 

发现没有hello没有了。。。。
使用reflog 查看历史更新点

git reflog84d3786 HEAD@{0}: reset: moving to HEAD^
a7542d3 HEAD@{1}: commit: hello
84d3786 HEAD@{2}: commit: yangyang
8a8b23d HEAD@{3}: reset: moving to HEAD^
6041523 HEAD@{4}: commit: introduction software
8a8b23d HEAD@{5}: commit: changed name
4367d80 HEAD@{6}: commit (initial): the fisst commit

 

还原

git reset --hard a7542d3

 

HEAD 现在位于 a7542d3 hello

cat readme.txt 
yangyang
hellow ...

 

.

 


Git管理分支结构

分支即是平行空间,假设你在为某个手机系统研发拍照功能,代码已经完成了80%,但如果将这不完整的代码直接提交到git仓库中,又有可能影响到其他人的工作,此时我们便可以在该软件的项目之上创建一个名叫”拍照功能”的分支,这种分支只会属于你自己,而其他人看不到,等代码编写完成后再与原来的项目主分支合并下即可,这样即能保证代码不丢失,又不影响其他人的工作。

 

创建git分支

git branch linux

 

切换分支

git checkou linux

 

查看当前分支情况,当前分支前面有*号

git branch
* linux
master

 

添加以行字符串

echo “Create new branch is linux” >> readme.txt

 

提交到暂存区

git add readme.txt

 

提交到git仓库

git commit -m "new branch"

 

我们提交后文件 切换回到master分支

git checkout master

 

切换到分支 'master'


查看文件

cat readme.txt 
yangyang
hellow ....

 

 

git合并分支

查看现在在那个分支

git branch
linux
* master

 


#合并分支

git merge linux
更新 a7542d3..0918787
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)

 

查看文件

cat readme.txt 
yangyang hellow .... create
new branch is linux

 

 

删除分支

git branch -d linux

 

已删除分支 linux(曾为 0918787)。

查看分支

git branch
* master

 

git管理标签

当版本仓库内的数据有个大的改善或者功能更新,我们经常会打一个类似于软件版本号的标签,这样通过标签就可以将版本库中的某个历史版本给记录下来,方便我们随时将特定历史时期的数据取出来用,另外打标签其实只是像某个历史版本做了一个指针,所以一般都是瞬间完成的。


#当前提交内容打个标签(方便快速回滚)
git tag v1.0

查看当前所有标签
git tag

查看当前1.0版本详细信息
git show v1.0


创建带标签及说明
git tag v1.2 -m "version 1.2 release is test"


删除之前标签
git tag -d v1.0


查看
git tag
v1.2

 

gitlab安装部署

yum install curl openssh-server postfix -y


systemctl enable sshd postfix

systemctl start sshd postfix

*如果有防火墙
firewall-cmd –permanent –add-service=http

systemctl reload firewalld

 


添加gitlab包服务器安装包

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

yum install gitlab-ce
(挺慢的,如果不行https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/)

配置并启动
gitlab-ctl reconfigure

gitlab-ctl status

gitlab-ctl stop

gitlab-ctl start


浏览到主机名和登录
root
密码自动生成

 

GitLab配置ssh
#如果是默认的22,就必须修改,否则不生效,我这里改为了52113
sed -i 's/#Port 22/Port 52113/g' /etc/ssh/sshd_config


systemctl restart sshd #重启sshd服务

#修改gitlab里面的ssh_prot端口为自己服务器的sshd端口,声明gitlab.yml中的配置会被这个给覆盖


grep “ssh_port” /etc/gitlab/gitlab.rb #修改gitlab里面的ssh_prot端口为自己服务器的sshd端口,声明gitlab.yml中的配置会被这个给覆盖

gitlab_rails[‘gitlab_shell_ssh_port’] = 52113

 

gitlab重新加载配置文件即可

gitlab-ctl reconfigure

 

GitHub托管服务

 Github顾名思义是一个Git版本库的托管服务,是目前全球最大的软件仓库,拥有上百万的开发者用户,也是软件开发和寻找资源的最佳途径,Github不仅可以托管各种Git版本仓库,还拥有了更美观的Web界面,您的代码文件可以被任何人克隆,使得开发者为开源项贡献代码变得更加容易,当然也可以付费购买私有库,这样高性价比的私有库真的是帮助到了很多团队和企业。
大多数用户都是为了寻找资源而爱上Github的,首先进入网站,点击注册(Sign up):

 

 

 

 

 

 

 

我们在向Github推送文件时,可以选择SSH协议模式,在本机生成密钥

生成密钥

ssh-keygen

 

 

 

查看公钥
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDO2dis085TOtTqAFU7aUDh2siAav/6HgXuC3+yIFxAFvlKNn88GLqoqlFlnVCobgvri56nqYo1fpclVk0Z+ZoShLF0HCFfZRZVlbwXC6y6uy8BqzMzKXptUTPBw2SbL843kNVyk01kx2kop3YukSG4fWsr2CRUeNUiqe/3q4S1Hzyzd+u6W67W9ax4W0Ud2r3v1mkc0L3lIl2aVLk1G/qhvcD+K7ivo2zEozDVzAsawim+taYa6s8wM8N99ij0+WrvRLN55CscYTnX4u52Vg1U7bdGtz05KmVUW2Prb/fnsnGhJ5CJz40VNqHxpVmrsiRf7TcMdNKAX4TARqYEhkjD root@localhost.localdomain

 

 

 

 

 

 

手动克隆

 git clone https://github.com/sky00747/demo.git

上传测试

cd demo/

git add test.txt
git commit -m "add test file"
git remote
origin

 

上传

git push -u origin master

 

git push -u origin master
Username for 'https://github.com': sky00747
Password for 'https://sky00747@github.com': 
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 282 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/sky00747/demo.gitb873aeb..466e6a9  master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

 

 

转载于:https://www.cnblogs.com/sky00747/p/9024786.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客网Wannafly挑战赛15 B车辆安排(模拟)AND C 出队(规律)

传送门 &#xff1a;B题&#xff1a;点我 C题&#xff1a; 点我 题目描述 有n个队伍&#xff0c;每个队伍的人数小于等于5&#xff0c;每辆车最多坐5个人&#xff0c;要求一个队伍的人都在一辆车上&#xff0c;求最少的车数 输入描述: 第一行n第二行n个数&#xff0c;表示每个队…

5-12

1,每个递归函数都有两部分&#xff0c;基线条件和递归条件 base case and recursive case 2,调用一个函数的时候&#xff0c;其他的函数调用会暂停并处于未完成的状态 3.调用栈会消耗大量的内存&#xff0c;栈很高的时候意味着计算机要存储大量的函数调用信息&#xff0c;此时的…

Team Foundation Server (TFS) 2015 安装指导

原文地址&#xff1a;http://www.cnblogs.com/danzhang/p/4718035.html http://www.cnblogs.com/danzhang 张洪君 微软ALM MVP 1. 概述 微软于8月6日发布了大家期待已久的TFS 2015正式版&#xff0c; https://www.visualstudio.com/en-us/news/tfs2015-vs.aspx &#xff0c;…

VM虚拟机链接克隆及linux eth0网卡的快速设置方法

对于后台开发者来说,在学习过程中必然接触众多中间件,在自己的虚拟机进行操作甚至搭建cluster是很常见的事情.我在初学者时摸索出一套快速的克隆虚拟机方法.分享给大家.产品VMware Workstation版本10.0.2 build-1744117这是我的虚拟机命名,我觉得这样的命名比较合适,clone机/服…

Spring MVC+Mybatis 多数据源配置

文章来自&#xff1a;https://www.jianshu.com/p/fddcc1a6b2d8 1. 继承AbstractRoutingDataSource AbstractRoutingDataSource 是spring提供的一个多数据源抽象类。spring会在使用事务的地方来调用此类的determineCurrentLookupKey()方法来获取数据源的key值。我们继承此抽象类…

围观神龙架构首次开箱,现场直播暴力拆机

围观神龙架构首次开箱&#xff0c;现场直播暴力拆机 发布时间&#xff1a;2018-05-16 13:43:01686人关注34人参与阿里云X-Dragon大事记2017年4月&#xff1a;阿里云X-Dragon项目立项&#xff1b;2017年10月&#xff1a;阿里云正式推出基于X-Dragon架构的弹性裸金属服务器&#…

windows-server-2012R2离线中文语言包安装

1、离线包下载地址http://download.csdn.net/detail/github_38358734/9858412 2、安装方法&#xff1a; 解压离线包 Dism /online /Add-Package /PackagePath:C:\test\LangPacks\lp.cab 大概10分钟&#xff0c;完成。 然后重启电脑&#xff0c;到控制面板语言区域选项&…

文字闪烁效果

效果图&#xff1a; HTML Code: <a class"blink" href"#" target"_blank"> 扁平化设计看上去非常简单、直观扁平化设计看上去非常简单、直去非化设计看上去非常简单、直观扁平化设计看上去非常简单、直观扁平常简单</a> JQuery Code…

BZOJ 3295: [Cqoi2011]动态逆序对 cdq分治

https://www.lydsy.com/JudgeOnline/problem.php?id3295 这个妹妹我曾见过的~~~ 之前应该在校内oj写了&#xff0c;似乎还写过题解&#xff1f;发现没写博客就重新水一遍代码水一篇博客好了。 把找逆序对的过程想成一个一个往里塞数字然后找每个数字可以组成的逆序对&#xff…

p1、查询端口号占用,根据端口查看进程信息/p

2017年6月份的时候&#xff0c;我就着手在公司推广git&#xff0c;首先我自己尝试搭建了GitLab来管理代码&#xff0c;并且通过以下博客记录了GitLab的搭建&#xff0c;以及GitLab备份&#xff0c;GitLab升级等事情。 git学习——>在CenterOS系统上安装GitLab并自定义域名访…

point-position2修改版

说明&#xff1a; 在共面直线测试中&#xff0c;由于计算误差等原因&#xff0c;共面条件判断不准&#xff0c;但计算结果依然正确。 // point-position2.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include <stdio.h> #include <iostream&g…

Linux学习总结(十六)系统用户及用户组管理

先来认识两个文件/etc/passwd/etc/shadow我们打印出首尾三行&#xff0c;来了解下&#xff1a;每行由&#xff1a;分割为7段&#xff0c;每段含义为&#xff1a;第一段&#xff1a;用户名&#xff0c;比如root 用户&#xff0c;普通用户test,lv,test1第二段&#xff1a;早期存放…

hadoop综合大作业

Hadoop综合大作业 要求&#xff1a; 1.用Hive对爬虫大作业产生的文本文件&#xff08;或者英文词频统计下载的英文长篇小说&#xff09;词频统计。 词频统计的截图如下&#xff1a; 上次我所使用的文章是一篇中文文章&#xff0c;所以这次我用了一篇英文文档来进行分词&#xf…

MPI对道路车辆情况的Nagel-Schreckenberg 模型进行蒙特卡洛模拟

平台Ubuntu 16.04&#xff0c;Linux下MPI环境的安装见链接&#xff1a;https://blog.csdn.net/lusongno1/article/details/61709460据 Nagel-Schreckenberg 模型&#xff0c;车辆的运动满足以下规则&#xff1a;1. 假设当前速度是 v &#xff0c;和前一辆车的距离为d。2. 如…

Android 中.aar文件生成方法与用法

https://i.cnblogs.com/EditPosts.aspx?opt1 无论是用Eclipse还是用Android Studio做android开发&#xff0c;都会接触到jar包&#xff0c;全称应该是&#xff1a;Java Archive&#xff0c;即java归档文件。在用AS的过程中&#xff0c;你会发现有aar这么个东西&#xff0c;经查…

windows10上安装mysql

环境&#xff1a;windwos 10&#xff08;1511&#xff09; 64bit、mysql 5.7.14 一、下载mysql1. 在浏览器里打开mysql的官网http://www.mysql.com/2. 进入页面顶部的"Downloads"3. 打开页面底部的“Community(GPL) Downloads” 4. 在页面中间的位置找到我们windows上…

sql server 内存初探

sql server 内存初探 原文:sql server 内存初探一. 前言 对于sql server 这个产品来说&#xff0c;内存这块是最重要的一个资源&#xff0c; 当我们新建一个会话&#xff0c;相同的sql语句查询第二次查询时间往往会比第一次快&#xff0c;特别是在sql统计或大量查询数据输出时&…

使用TcpClient的例程

例子1&#xff1a; ///假定一切工作正常 ///连接后发送一次消息&#xff0c;然后不停接受消息并且打印 主要API说明 TcpClient clientnew TcpClient(); client.Connect("127.0.0.1",8888); NetworkStream streamclient.GetStream(); 发送&#xff1a; stream.Write(o…

20172324 2017-2018-2《程序设计与数据结构》实验三报告

20172324 2017-2018-2《程序设计与数据结构》实验三报告 课程&#xff1a;《程序设计与数据结构》 班级&#xff1a; 1723 姓名&#xff1a; 曾程 学号&#xff1a;20172324 实验教师&#xff1a;王志强 实验日期&#xff1a;2018年5月23日 必修/选修&#xff1a; 必修 一、实验…

mysql if--else

SQL之case when then用法 case具有两种格式。简单case函数和case搜索函数。 --简单case函数 case sexwhen 1 then 男when 2 then 女’else 其他 end --case搜索函数 case when sex 1 then 男when sex 2 then 女else 其他 end 这两种方式&#xff0c;可以实现相同的功能。简…