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系统 ...
随机推荐
- [技术选型] dubbo
分布式服务架构 - 阿里开源项目 简介 Dubbo架构设计详解 Dubbo与Zookeeper.SpringMVC整合和使用(负载均衡.容错)
- 【转】常用 Microsoft .NET Framework 各版本下載網址列表
研究] 常用 Microsoft .NET Framework 各版本下載網址列表 2014-05-23 僅列常用的 (IA64, Beta, hotfix, ... 不列) Microsoft .N ...
- redis、kafka、rabittMQ对比
本文不对三者之间的性能进行对比,只是从三者的特性上区分他们,并指出三者的不用应用场景. 1.publish/subscribe 发布订阅模式如下图所示可以具有多个生产者和发布者,redis.kafka ...
- js 获取单选框和复选框的值和js dom方法给单选框和多选框赋值
获取单选框框值的方法 function getRadioRes(Name){ var rdsObj = document.getElementsByName(Name); var checkVal = ...
- html全选和取消全选JS
<html> <body> <table border="1"> <tr> <th><input type=&qu ...
- JDBC驱动程序类型
JDBC驱动程序是什么? JDBC驱动程序在JDBC API中实现定义的接口,用于与数据库服务器进行交互. 例如,使用JDBC驱动程序,可以通过发送SQL或数据库命令,然后使用Java接收结果来打开数 ...
- (转)st(state-threads) coroutine和stack分析
目录(?)[-] STACK分配 THREAD初始化栈 Thread启动和切换 Thread退出 Thread初始线程 Thread生命周期 st(state-threads) https://gi ...
- 谈谈如何优化MYSQL数据库查询
1.优化数据类型 MySQL中数据类型有多种,如果你是一名DBA,正在按照优化的原则对数据类型进行严格的检查,但开发人员可能会选择他们认为最简单的方案,以加快编码速度,或者选择最明显的选择,因此,你可 ...
- iOS: 自动增高的 textView
如 iPhone 内应用“信息”的输入框一样,输入文字过多或者输入换行,输入框可以随着内容自动变化.主要是计算内容的尺寸并相应更改输入框的frame.具体表现在: 更改输入框的 frame.origi ...
- 小程序的tab切换事件
index.wxml代码 <view class="tab-left" > <view " bindtap="tab">tab ...