git的搭建与简单实用
svn是中央集中版本,所有的人都下载同一个版本去更新,git是分布式的,可以现在自己想要的分支。svn集中式版本控制系统不但速度慢,而且必须联网才能使用
git系统的安全性高。git及其强大的分支管理
git不仅仅是个版本系统,他也是个内容管理系统,工作管理系统等
git是分布式的svn不是,这是git和其他非分布式的版本控制系统,列如svn cvs最核心的区别
git把内容按元数据方式存储,而svn是按文件,所有的资源控制系统都是吧文件的源信息隐藏在一个类似svn.cvs等文件夹里
git和svn的分支:分支再svn中一点不特别,就是版本库中的另外的一个目录
git没有一个全局的版本号,而svn有 目前为止svn相比git缺少的最大的特征
git内容完整性要优于svn:git的内容储存使用的是sha-1
哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障时和网络问题是降低对版本库的破环
git分布式需要的实验环境两台7.5的服务器
永久修改主机名 vim /etc/hostname devops应用 开发写完代码上传到git或者Gitlab,Jenkins从gitlab拉去代码,(叫持续集成ci) maven就是java的yum仓库 分布式集成了本地仓库和远程仓库的合成。 先上传到本地仓库,然后在吧本地仓库推到远程仓库。即使没有远程仓库。两个本地仓库以可以互推。 公有远程仓库的网址 https://github.com 可以注册自己的远程仓库。
git需要做全局配置,
基本就是告诉用户是谁,邮箱是谁
工作流程
git在工作之前需要向建立工作区,即建立git项目目录
将工作区里的东西暂存 git add
暂存区提交到本地 git commit
本地提交到远程,git push
可以用yum直接安装,也可以编译安装
编译安装过程 yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel yum -y install gcc perl-ExtUtils-MakeMaker tar xf git-2.9.5.tar.gz -C /usr/src/ cd /usr/src/git-2.9.5/ ./configure --prefix=/usr/local/git make && make install ln -sf /usr/local/git/bin/* /usr/bin/ ln -s /usr/libexec/git-core/* /usr/bin/ 全局变量开启中文 export LANG=zh_CN.UTF8 初始git目录 mkdir -p /mycode cd /mycode [root@git1 mycode]# git init 初始化空的 Git 仓库于 /mycode/.git/ 创建一个暂时缓存 [root@git mycode]# touch test.txt 提交到暂存区 [root@git mycode]# git add *(删除的暂存提交git rm 文件名)[root@git mycode]# git status 位于分支 master初始提交要提交的变更: (使用 "git rm --cached <文件>..." 以取消暂存)新文件: test.txtgit commit 将暂存提交到本地仓库 必须-m写说明,要不不让提交 [root@git mycode]# git commit -m "test"*** Please tell me who you are.Rungit config --global user.email "you@example.com" git config --global user.name "Your Name"to set your account's default identity. Omit --global to set the identity only in this repository.fatal: unable to auto-detect email address (got 'root@git.(none)')还需要做全局变量,告诉他是谁,还有邮箱 然后提交成功 [root@git mycode]# git config --global user.email "491537692@qq.com" [root@git mycode]# git config --global user.name "cashsunan" [root@git mycode]# git commit -m "test" [master(根提交) cc12e4d] test 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.txt [root@git mycode]# 查看远程仓库 [root@git mycode]# git remote -v 添加到远程仓库 git remote add 代号 url 默认的代号叫origin [root@git mycode]# git remote add test https://github.com/cashsunan/sunan.git 将文件推到远程仓库 git push -u 代号(给仓库设置的代号)master(要推到那个分支) 推送 标签 git push -u 代号 标签 [root@git mycode]# git push -u test master Username for 'https://github.com': 491537692@qq.com Password for 'https://491537692@qq.com@github.com': 对象计数中: 3, 完成. 写入对象中: 100% (3/3), 200 bytes | 0 bytes/s, 完成. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/cashsunan/sunan.git * [new branch] master -> master 分支 master 设置为跟踪来自 test 的远程分支 master。
git clone 克隆一个现有的仓库到本地
要到另一个服务器上实验 [root@git1 mycode]# git clone https://github.com/cashsunan/sunan.git master 正克隆到 'master'... remote: Enumerating objects: 3, done. remote: Counting objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0 展开对象中: 100% (3/3), 完成. 检查连接... 完成。 [root@git1 mycode]# ls master [root@git1 mycode]# cd master/ [root@git1 master]# ls test.txt [root@git1 master]# git status 位于分支 master 您的分支与上游分支 'origin/master' 一致。 nothing to commit, working tree clean [root@git1 master]# echo "xxx" >> test.txt [root@git1 master]# touch exe.txt [root@git1 master]# git status 位于分支 master 您的分支与上游分支 'origin/master' 一致。 尚未暂存以备提交的变更: (使用 "git add <文件>..." 更新要提交的内容) (使用 "git checkout -- <文件>..." 丢弃工作区的改动)修改: test.txt修改尚未加入提交(使用 "git add" 和/或 "git commit -a"再次提交 [root@git1 master]# git add * [root@git1 master]# git commit -m "wo cao " 位于分支 master 您的分支与上游分支 'origin/master' 一致。 尚未暂存以备提交的变更: 修改: test.txt修改尚未加入提交 [root@git1 master]# git remote -v origin https://github.com/cashsunan/sunan.git (fetch) origin https://github.com/cashsunan/sunan.git (push) [root@git1 master]# git push -u origin master Username for 'https://github.com': 491537692@qq.com Password for 'https://491537692@qq.com@github.com': 对象计数中: 3, 完成. 压缩对象中: 100% (2/2), 完成. 写入对象中: 100% (3/3), 277 bytes | 0 bytes/s, 完成. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/cashsunan/sunan.git cc12e4d..5535cc9 master -> master 分支 master 设置为跟踪来自 origin 的远程分支 master。
将远程的仓库拉倒本地
在git上实验 [root@git mycode]# git remote -v test https://github.com/cashsunan/sunan.git (fetch) test https://github.com/cashsunan/sunan.git (push) [root@git mycode]# git fetch -u test master 来自 https://github.com/cashsunan/sunan * branch master -> FETCH_HEAD [root@git mycode]# git status 位于分支 master 您的分支落后 'test/master' 共 1 个提交,并且可以快进。 (使用 "git pull" 来更新您的本地分支) nothing to commit, working tree clean[root@git mycode]# git checkout 您的分支落后 'test/master' 共 1 个提交,并且可以快进。 (使用 "git pull" 来更新您的本地分支)将远程仓库的变更合并到本地 [root@git mycode]# git merge test/master 更新 cc12e4d..5535cc9 Fast-forward exe.txt | 0 test.txt | 3 +++ 2 files changed, 3 insertions(+) create mode 100644 exe.txt将远程的仓库一步到位的更新到本地, 先在git服务器提交新的变化 [root@git mycode]# echo "adfasdf" >> exe.txt [root@git mycode]# git add * [root@git mycode]# git commit -m "2ci" [master e770d42] 2ci 1 file changed, 1 insertion(+) [root@git mycode]# git push -u test master Username for 'https://github.com': 491537692@qq.com Password for 'https://491537692@qq.com@github.com': 对象计数中: 3, 完成. 压缩对象中: 100% (2/2), 完成. 写入对象中: 100% (3/3), 266 bytes | 0 bytes/s, 完成. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/cashsunan/sunan.git 5535cc9..e770d42 master -> master 分支 master 设置为跟踪来自 test 的远程分支 master提交完成后在git1上直接pull拉取 [root@git1 master]# git pull origin master remote: Enumerating objects: 5, done. remote: Counting objects: 100% (5/5), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0 展开对象中: 100% (3/3), 完成. 来自 https://github.com/cashsunan/sunan * branch master -> FETCH_HEAD 5535cc9..e770d42 master -> origin/master 更新 5535cc9..e770d42 Fast-forward exe.txt | 1 + 1 file changed, 1 insertion(+)
git命令
git命令在本地仓库和暂存区的命令 文件的改名: git mv xxx yyy 撤销命令 :git reset 文件名 本地仓库文件和修改的工作区文件进行对比 :git diff 文件名 (-是删除+添加) 查看git的本地历史提交记录:git log git log的参数 :git log -2 最近2次提交的 git log -p -1 显示每次提交的内容差异 git log --stat -2 :stat简要显示数据的增改行数,这样就能看到提交中修改过的内容 git log --pretty=oneline:一行显示提交的历史记录 本地回到上一个版本的命令 git reset --hard HEAD^ 回滚到指定版本,git reset --hard 历史记录的编码号 回滚错了回复, git reflog : 查看历史的更新点. 里边有编码号,查到了编码号之间回滚 git reset --hard 历史记录的编码号 创建版本号 git tag 版本号 [root@git1 master]# git tag v1.0 [root@git1 master]# git tag v1.0 查看版本的标签状态 [root@git1 master]# git show v1.0 commit e770d42ad78a3f2a6892bd6ee39a2a78e5a6a119 Author: cashsunan <491537692@qq.com> Date: Sun Dec 16 17:31:19 2018 +08002cidiff --git a/exe.txt b/exe.txt index e69de29..25975e2 100644 --- a/exe.txt +++ b/exe.txt @@ -0,0 +1 @@ 删除标签 [root@git1 master]# git tag -d v1.0 用标签回滚 [root@git1 master]# git reset --hard v2.0 HEAD 现在位于 e770d42 2ci已删除标签 'v1.0'(曾为 e770d42)创建分支 git branch xx 查看分支 git branch 删除分支 git branch -d xx 强删分支 git branch -D xx 切换分支 git checkout xx 检查本地分支和远程分支是否相同 git checkout 暂存区是公用的,在工作之前要不就情况,要不就提交 合并分支 自动合并 在主支上 git merge 想要合并的分支 [root@git1 master]# git merge dev 更新 e770d42..ae291fe Fast-forward 1.txt | 0 quit | 12 ++++++++++++ test.txt | 1 + 3 files changed, 13 insertions(+) create mode 100644 1.txt create mode 100644 quit [root@git1 master]# git branch dev * master[root@git1 master]# git push -u origin master Username for 'https://github.com': 491537692@qq.com Password for 'https://491537692@qq.com@github.com': Total 0 (delta 0), reused 0 (delta 0) To https://github.com/cashsunan/sunan.git e770d42..ae291fe master -> master 分支 master 设置为跟踪来自 origin 的远程分支 master。 [root@git1 master]# git status 位于分支 master 您的分支与上游分支 'origin/master' 一致
git提交忽略文件写法
gitignore文本忽略文件, 会创建以个隐藏的文件.gitingnore 写法 target *.logt 表示忽略项目中所有以.log结尾的文件 ?.idea表示忽略一个字符以.idea结尾的文件 /errt.log忽略根目录下的error.log文件 **/java/匹配所有java目录下的所有文件 !/error.log表示在前面的匹配规则中,被忽略的文件,不想被忽略,就加!
文件代码冲突解决办法
将git返回的代码的文件打开,二选一,删除一个就可以了
git 初始化只是当目录使用
git --brae init
克隆同样是子git的办法
git clone 账号@IP地址:路径
输入的密码是账号的密码,
也可以做个免秘钥
在家目录
ssh-keygen
ssh-copy-id-i ~./ssh/id_rs.pub 账号@ip
转载于:https://www.cnblogs.com/cash-su/p/10131632.html
git的搭建与简单实用相关推荐
- Git环境搭建及简单的本地、远程 两库关联
这里讲下我从拿到新的Mac后怎么一步一步搭建Git环境的. 首先让我们打开终端 在终端输入 git 如果说你卡到下面的结果说明你没有安装个git,去安装. The program 'git' i ...
- 自搭建git 服务器,超简单
docker安装gitea服务器,搭建很简单 搭建后测试了一下整个流程,因为是个人服务器,配置比较低,每次提交待的的之后,服务器负载和内存都直接飙满,最后导致就是提交失败,随后有想了其他本法,换种方式 ...
- Git 原理详解及实用指南
Git 原理详解及实用指南 什么是版本控制系统(VCS) 很多人认为 Git 难以理解的第一个门槛在于:所谓的「Git 是一个分布式版本控制系统」这句话的具体含义不够清楚.其实分布式版本控制系统(Di ...
- git maven 一键部署_Jenkins Git Maven搭建自动化部署项目环境 邮件通知
简介 折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/j ...
- 一款动态跑路html源码,简单实用,上传解压就完事了
介绍: 一款动态跑路源码,简单实用,上传解压就完事了 搭建教程: 1.领取主机 2.二级域名 3.上传源码到主机文件夹,解压 4.绑定域名,搭建完成 网盘下载地址: http://kekewangLu ...
- centos 6.8安装git_git 入门教程之 git 私服搭建教程
git 私服搭建教程 前几节我们的远程仓库使用的是 github 网站,托管项目大多是公开的,如果不想让任何人都能看到就需要收费,而且 github 网站毕竟在国外,访问速度太慢,基于上述两点原因,我 ...
- git 入门教程之 git 私服搭建教程
git 私服搭建教程 前几节我们的远程仓库使用的是 github 网站,托管项目大多是公开的,如果不想让任何人都能看到就需要收费,而且 github 网站毕竟在国外,访问速度太慢,基于上述两点原因,我 ...
- 如何分析百度SEM竞价账户,简单实用小窍门
大家很多都是SEO转到SEMer岗位的,知道SEO数据分析不仅仅需要逻辑思维能力,还需要有耐心,因为这个数据非常的多而且比较复杂,需要有耐心的人才能做下去.而SEM同样,也需要对各种数据报表做出分析, ...
- SRS流媒体服务器搭建流程-简单实用版
#SRS流媒体服务器搭建流程-简单实用版 经过查阅很多博客,讲述的都不是很完善而且还把我搞的晕头转向,经过查阅20多篇文章特整理出简单的,SRS流媒体服务器搭建以及推流和拉流的一整套流程. #安装环境 ...
最新文章
- NullPointerException 的处理新方式,Java14 真的太香了!
- (SpringMVC)Controller返回JSON数据
- Github中Tag的使用
- 【递归与递推】青蛙过河
- 95-34-030-Context-DefaultChannelHandlerContext
- 关于编写过程中进制之间的转换
- Office 2016更新后 Word 2016、Excel 2016、Power 2016、Visio 2016、OneNote 2016图标全部消失问题解决
- 51nod 1912 咖啡馆
- python之路day3_python之路:day3
- 《程序员修炼之道:从小工到专家》The Pragmatic Programmer: From Journeymen to Master
- JAVA Swing 图形化界面编程
- table+jq实现日期排期表
- mysql免费自学课程,自学SQL网(教程 视频 练习全套)
- element ui table封装组件,render 函数动态事件设置
- 基于yolov5的目标检测和模型训练(Miniconda3+PyTorch+Pycharm+实战项目——装甲板识别)
- “鹅宝计划”,天鹅到家“以奋斗者为本”的时代缩影
- 电信单方面关闭ADSL用户入口80端口,导致用户有关80端口对外服务无法实现,严重违反提供公网IP的合同
- iwebshop index.php,iwebshop源码剖析记录点滴
- 如何使用Unity制作虚拟导览(二)
- 摩菲定理(Murphy's Law)
热门文章
- 2020年日历电子版(打印版)_2020年日历表(超清晰A4打印版)
- 《活着》(余华 著)读后感
- windows下Python3安装PyChecker模块
- 如何去除视频水印?分享两种去除视频水印的方法
- 半导体行业为何在马来西亚扎堆?
- 我的世界工业时代java_[IC2]工业时代2 (Industrial Craft 2)
- 程序员的十层楼——周伟明
- 车辆报价查询接口,通过车系名称查询相关信息
- springboot实现网页中英文切换
- UniswapV2核心合约学习(1)— UniswapV2Factory.sol