Git服务器的搭建和使用
一、GIT服务器的搭建
1. 安装Git
yum -y install git
2. 创建git用户
adduser git
3. 创建证书登陆
收集所有客户端需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
保证ssh不输入密码能连接到git用户
4. 初始化
[root@app- opt]# git init --bare demo.git
Initialized empty Git repository in /opt/demo.git/
Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。
5. 把owner改为git
chown -R git:git demo.git/
6. 禁用shell登陆
将/bin/bash改成/usr/bin/git-shell;这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
[root@app- opt]# tail -1f /etc/passwd
git:x::::/home/git:/usr/bin/git-shell
至此git服务器就搭建完成了。
二、GIT的基本使用
1. 克隆远程仓库
在客户端操作
[root@wls12c DEV]$ git clone ssh://git@120.77.85.77:2121/opt/demo.git
Initialized empty Git repository in /root/DEV/demo/.git/
warning: You appear to have cloned an empty repository.
[root@wls12c DEV]$ ls
demo
2. 初始化客户端的工作环境
[root@wls12c demo]$ git config --global user.name "Scott Cho"
[root@wls12c demo]$ git config --global user.email "root@wls12c.com"
[root@wls12c demo]$ git config --global core.editor vim
3. 向Git本地仓库中提交一个新文件
[root@wls12c demo]$ echo "I successfully cloned the Git repository" > readme.txt
[root@wls12c demo]$ git add readme.txt #增加数据到暂存区
[root@wls12c demo]$ git status #查看当前工作目录的状态
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: readme.txt
#
[root@wls12c demo]$ git log
fatal: bad default revision 'HEAD'
[root@wls12c demo]$ git commit -m "Clone the Git repository"
[master (root-commit) b548d3b] Clone the Git repository
files changed, insertions(+), deletions(-)
create mode readme.txt
[root@wls12c demo]$ git log
commit b548d3bd469cf5f183e9be9a3b2949f6361b5385
Author: Scott Cho <root@wls12c.com>
Date: Mon Feb :: + Clone the Git repository
常见技巧:
查看当前文件内容与Git版本数据库中的差别: git diff readme.txt
将当前工作目录内的所有文件都一起添加到暂存区域: git add .
创建忽略文件列表: .gitignore
文件被直接提交到Git数据库: git commit -a -m "Modified again”
4 定义远程的Git服务器
[root@wls12c demo]$ git remote add server ssh://git@120.77.85.77:2121/opt/demo.git
5. 将文件提交到远程Git服务器
[root@wls12c demo]$ git push -u server master
Counting objects: , done.
Writing objects: % (/), bytes, done.
Total (delta ), reused (delta )
To ssh://git@120.77.85.77:2121/opt/demo.git
* [new branch] master -> master
Branch master set up to track remote branch master from server.
6. 移除数据
保留工作区的文件,删除暂存区的文件: git rm --cache test.java
从Git暂存区和工作目录中一起删除: git rm -f test.java
删除Git版本仓库内的文件快照: git rm test.java
7. 重命名文件
git mv 1.txt 2.txt
git commit -m "changed name"
8. 还原数据
[root@wls12c demo]$ echo "Git is a version control system" >> readme.txt
[root@wls12c demo]$ git add .
[root@wls12c demo]$ git commit -m "test rollback"
[master e34168a] test rollback
files changed, insertions(+), deletions(-)
[root@wls12c demo]$ git log --pretty=oneline
e34168afeff0e1b1462eb6a52db4bd207d384332 test rollback
2947448a1d50b8a2613f93c54db31db797e65a5c changed name
458eacab758f72ecb4f63524caa301b4c440d702 ADD .txt agin
7c1464fa93af1eed88eaa76b15a663bae84cb78a ADD .txt agin
361b54468b1d9e4cbd271ce2be196d556ee84556 ADD .txt
b548d3bd469cf5f183e9be9a3b2949f6361b5385 Clone the Git repository
[root@wls12c demo]$ git reset --hard 29474
HEAD is now at changed name
[root@wls12c demo]$ cat readme.txt
I successfully cloned the Git repository
用git reflog命令来查看所有的历史记录,这样就可以看见还原以前的记录了。
我们突然发现不应该写一句话的,可以手工删除(当内容比较多的时候会很麻烦),还可以将文件内容从暂存区中恢复或者版本库中恢复:
[root@wls12c demo]$ echo "xxxxx" >>readme.txt
[root@wls12c demo]$ git checkout -- readme.txt
[root@wls12c demo]$ cat readme.txt
I successfully cloned the Git repository
Git is a version control system
checkou规则是如果暂存区中有该文件,则直接从暂存区恢复,如果暂存区没有该文件,则将还原成最近一次文件提交时的快照。
9. 管理标签
打标签 tag v1.0
git tag v1.1 -m "version 1.1 released" d316fb
查看所有的已有标签:
git tag
查看此标签的详细信息:
git show v1.0
10. 创建与合并分支
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
11. 拉取远程分支
git branch --set-upstream origin/dev
git pull origin dev
Git服务器的搭建和使用的更多相关文章
- git 服务器的搭建
文章转载地址:http://www.linuxidc.com/Linux/2015-05/117502.htm 亲测可行,已经自己搭建一个正在使用中,搭建完成后,结合着pycharm +git,就能直 ...
- 本地Git服务器的搭建及使用
本地Git服务器的搭建及使用 Git本地服务器环境搭建 搭建好的本地git服务器的局域网ip是192.168.1.188,用户名是RSCSVN 教程链接:http://blog.csdn.net/cc ...
- 关于git服务器的搭建
Git 服务器可搭建在多个系统平台上. 本篇以 Windows 和 Ubuntu 系统为例,简单介绍 Git 服务器的构建. 最后使用 eclipse 的 egit 插件和 git clone 这两种 ...
- 项目实践中--Git服务器的搭建与使用指南(转)
一.前言 Git是一款免费.开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.在平时的项目开发中,我们会使用到Git来进行版本控制. Git的功能特性: 从一般开发者的角度来 ...
- 项目实践中--Git服务器的搭建与使用指南
一.前言 Git是一款免费.开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.在平时的项目开发中,我们会使用到Git来进行版本控制. Git的功能特性: 从一般开发者的角度来 ...
- git服务器的搭建
http://blog.jobbole.com/25944/ 1,概念 git服务器:就是一个仓储,一个大家都可以访问的公共仓储,大家可以从这个仓储中拉取和推送数据. 协议: 与gist服务通讯的仓储 ...
- git服务器简易搭建法
受尽svn各种折磨的小伙伴都听说过git. 但是网上一搜索, 本来打算跟svn一样. 下一个服务器, 装下就可以开始用了. 没想到啊, 没想到. 居然需要Linux天赋点… 好吧, 拜鸟哥门下把Lin ...
- Git服务器环境搭建(打造属于自己的存储库)
Git服务器搭建之CentOs7-阿里云搭建 首先使用连接工具连接到远程的阿里云服务器CentOs7上. 1.安装Git及创建用户 # 安装Git $ yum install git # 创建一个gi ...
- Ubuntu下 git 服务器的搭建【转】
转自:http://www.open-open.com/lib/view/open1391477731082.html 搭建git服务器的4个步骤 1 配置服务器前的准备工作 首先ubuntu系统 ...
随机推荐
- Java虚拟机(JVM)体系结构概述及各种性能参数优化总结
转自:http://blog.csdn.net/zhongwen7710/article/details/39213377 第一部分:相关的概念 数据类型 Java虚拟机中,数据类型可以分为两类:基本 ...
- Android 耳机插入过程分析
Android 耳机插入过程分析 参考链接: https://www.jianshu.com/p/d82a8dabb3e7 初始化: 10-26 07:40:43.932 1414 1414 I Sy ...
- CI框架 -- 核心文件 之 Common.php
system/core/Common.php 文件中可以定义 公共函数,我们可以在这里定义自己的公共函数.在任何情况下你都能够使用这些函数.使用他们不需要载入任何类库或辅助函数. 接下来分析下该文件中 ...
- CI框架 -- 核心文件 之 config.php
Config:该文件包含CI_Config类,这个类包含启用配置文件来管理的方法 /** * 加载配置文件 * * @param string $file 配置文件名 * @param bool $u ...
- Java设计模式六大原则之场景应用分析
定义:不要存在多于一个导致类变更的原因. 通俗的说.即一个类仅仅负责一项职责. 问题由来:类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而须要改动类T时,有可能会导致原本执行正 ...
- Java设计模式之十一种行为型模式(附实例和详解)
Java经典设计模式共有21中,分为三大类:创建型模式(5种).结构型模式(7种)和行为型模式(11种). 本文主要讲行为型模式,创建型模式和结构型模式可以看博主的另外两篇文章:J设计模式之五大创建型 ...
- MYSQL之You can't specify target table for update in FROM clause解决办法
mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表( ...
- u3d外部资源 打包与加载的问题
被坑了一下午,调bug,u3d外部加载资源一会可以,一会不行,始终找不到问题,最后快下班的时候,重新试了一下,原来是资源打包之前的文件名,和之后的加载资源名必须一样 [MenuItem("C ...
- yum更换国内源 yum下载rpm包 源码包安装
7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装 yum更换国内源 cd /etc/yum.repo.d/ 删除源 rm -f dvd.repo rm -f C ...
- SELECT a.loginname,a.deviceid,a.time,Row_Number() OVER (partition by a.loginname ORDER BY a.deviceid desc,a.time asc) rank
现在做一个反欺诈内容要用到笛卡尔积,用来分析用户一个手机号,对应的多个设备,每个更换设备的时间,这里取的时间是系统收集时间,用来代表更换的时间, 所以要先对设备换的时间作排序,然后进行rank,最后求 ...