Git 简单使用

使用ssh协议进行git服务器和客户端之间的通信。

一、搭建Git服务器和客户端配置

git服务器的简单搭建
 
1、公钥的生成
任何一个需要使用git服务器的工程师都需要生成一个ssh的公钥(在客户端)。
可以通过ssh-keygen来生成  
 
~/.ssh$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/shizhen/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/shizhen/.ssh/id_rsa.
Your public key has been saved in /home/shizhen/.ssh/id_rsa.pub.
The key fingerprint is:
a8:19:49:f4:e6:e8:4f:8f:3e:47:c9:19:4c:09:ee:7f shizhen@sz-desktop
The key's randomart image is:
 
首先会让你输入要保存公钥的位置,直接回车即可,接着会提示让你重复一个密码两次,
如果不想再使用公钥的时候输入密码,直接回车即可。完成后会在home目录下的.ssh目录
中生成两个文件id_rsa(私有密钥)和id_rsa.pub(公钥)。 
将生成的公钥即id_rsa.pub发给git仓库的管理者。(通过email 或其他)

2、架设服务器
(1)服务器端
最好建立一个git组,让后再添加一个git用户,并且添加到该组当中。
sudo adduser git
sudo passwd git //设置密码
su git
cd ~
mkdir .ssh
在git用户新建一个.ssh的目录,将开发者的SSH公钥(通过邮件或其他方式收到)添加到git这个用户的authorized_keys
这个文件当中。如有zhangsan,lisi两个开发者。
cat /tmp/id_rsa_zhangsan.pub >> ~/.ssh/authorized_keys  (  cat  /home/testuser/.ssh/id_rsa.pub > /home/git/.ssh/authorized_keys )
cat /tmp/id_rsa_lisi.pub >> ~/.ssh/authorized_keys

建立一个空的仓库
cd work
mkdir project.git
cd project.git
git --bare init
使用--bare会初始化一个不带任何工作目录的仓库,不会看到工程 源码
(2)开发者端
若没有仓库的情况下,需要首先新建一个仓库。在需要建立仓库的,目录下执行以下的命令。
cd my_project
git init
git add . (将所有文件加入仓库管理)
git commit -m "initial commit"
git remote add origin git@gitserver:/home/git/work/project.git (即:git@192.168.1.100:/home/git/work/project.git)
git push origin master
若本地已有仓库,但想把其中的代码push到我们新的服务器上,可以直接用下面的命令
把想要push的分支代码新建成master分支
git checkout -b master xxxxx
git push origin master
这样一个简单的服务器就可以工作了,其他的开发者可以直接从服务器上进行代码开发了。
为了保护git服务器,限制开发者登陆服务器,可以采用如下的措施。(在git服务器上)
sudo vim /etc/passwd
在文件结尾找到这样的类
git:x:1001:1001:,,,:/home/git:/bin/bash
将其中的/bin/bash/改为/user/bin/git-shell
现在开发者只能通过SSH来推送和获取代码,不能登陆ssh服务端了。
3.问题
現在的 ssh 使用同樣的方法會出現錯誤訊息
Agent admitted failure to sign using the key

解決方式 使用 ssh-add 指令将私钥 加进来 (根据个人的密匙命名不同更改 id_rsa)
即各自的开发者执行命令
ssh-add id_rsa
二、 Git服务器使用

1、在Git服务器端
   在 /home/git/ 下创建 project1.git 目录,进入该目录,执行 git  --bare  init,建立一个纯 Git仓库。
2、客户端 (1)
#初始化本地库
mkdir my_project
cd my_project
git init
echo "fuck this shit" > hello.txt
git add .
git commit -m "initial commit"
#添加远程库
git remote add   testp   git@ipipipip:/git/project1.git    #通过 git remote -v 可以查看远程库
#从远程库获得最新的更新
git fetch testp md  #获得远程库testp 的md分支的最新更新
#将更新和本地合并

git merge testp/md   #将远程库 testp 的md 分支合并到本地的当前分支


....本地操作.....


 #将本地分支推送到远程的某个分支
git push testp  master:md  #将本地的 master分支推送到testp库的md分支

客户端(2)
mkdir my_project
cd my_project

git clone git@xxxip:/home/git/project1.git  -b md #将远程库xxxx/project1.git 的md分支克隆到本地


{
git push命令,将本地分支推送到远程库的分支
$ git push origin test:master         // 提交本地test分支作为远程origin的master分支
$ git push origin test:test              // 提交本地test分支作为远程origin的test分支
如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值