gitgit 上传到服务器器上为什么同一个目录有2个名字

一个git客户端可以使用不同的邮箱账号生成多个ssh key以使用多个服务器,且相互间不影响? - 知乎32被浏览2059分享邀请回答 ~/.ssh/config
IdentityFile ~/.ssh/github_rsa
Host code.csdn.net
IdentityFile ~/.ssh/id_rsa
22 条评论分享收藏感谢收起0添加评论分享收藏感谢收起更多1 个回答被折叠()让我来教你如何搭建属于自己的git服务器 - 简书
让我来教你如何搭建属于自己的git服务器
一台Linux服务器(本文示例使用的是阿里云CentOS 7.0)
一些做客户端的你可能不知道的姿势:
Linux用户、组、权限问题以及命令的用法SSH协议相关
其实,这些姿势在《鸟哥的Linux私房菜》一书中有非常详尽的解释,非常推荐。但是通读此书对我们来说时间成本略高。而且如果不是每天都要用真的很难记住。所以,本文只简单介绍这些你在搭建git服务器的过程中可能需要了解的姿势。
闲话少说,书归正传。我们默认你有一台Linux服务器,并且知道root帐号和密码,以下所有命令中需要替换的部分我会用中文占为,真正的Linux命令是不可能有中文的。#-&代表命令提示符。
首先,我们需要使用终端链接到服务器:
#-& ssh 你的服务器IP
之后,服务器会提示你输入账号和密码。此处需要输入root的账号和密码,因为我们要在服务器上安装git以及创建相关用户,需要用到root权限。
相关姿势一,ssh命令、协议:ssh命令表示连接到服务器,可以以域名为参数,或者以服务器IP为参数。如果服务器ssh协议监听端口不是默认的22需要加上-p选项后边输入要连接服务器的端口号。ssh协议参见维基百科:
登录成功后,我们首先要安装git,有的服务器默认是已经安装的:
#-& yum install git
yum这里就不详细介绍了,它是一款安装软件的工具,会自动下载依赖包,免得我们自己到处找。并且自动安装软件。
安装完毕,我们需要先创建用户组,创建用户组的目的其实是为了控制某一类用户的权限。假设我们需要为设计部搭建一个git服务器,那我们此处需要输入命令:
#-& groupadd 组名称
创建组完成后我们需要创建几个不同的用户:
#-& user add -M 用户名称1#-& user add -M 用户名称2... ...
创建好用户之后我们还需要把用户添加到之前创建的组中:
#-& usermod -G 组名称 用户名称1#-& usermod -G 组名称 用户名称2... ...
useradd是添加系统用户的命令,如果不加-M的选项则创建用户的时候会自动在/home目录下创建一个和用户名相同的目录,这个目录通常被称作该用户的家目录,该用户在该目录下拥有读写权限。权限问题会在后边进一步介绍。在此,我们的目的是搭建git服务器,并不想给用户除了git访问以外其他的权限,所以这里使用-M选项让系统不给该用户创建自己的家目录。usermod是用户管理命令,-G表示将用户添加到某个分组。
为了保留秘钥登录的验证信息,所以我们在/home目录下创建一个公共家目录:
#-& midair 组目录名称
我们还需要禁用掉其他用户ssh到服务器,只留给用户git相关权限,并且修改用户的家目录:
#-& vim /etc/passwd
找到所创建用户的这一行:
用户名称:x:::/home/用户名称:/bin/bash
将/bin/bash替换成git-shell的路径(我的服务器是:/usr/bin/git-shell,可以通过#-& which git-shell来查看git-shell所在路径)将/home/用户名称替换成/home/组目录名称
我们再次进入公共的家目录:
#-& cd /home/组目录名称
创建我们想要的git仓库:
#-& mkdir 新仓库名称.git
进入该目录:
#-& cd 新仓库名称.git
使用git命令来创建一个裸仓库:
#-& git --bare unit
至此,我们已经在服务器上完成了一个git仓库的创建。我们可以在客户端clone该仓库:
#-& git clone 刚刚创建的用户名称@你的服务器IP:新仓库名称.git
虽然已经clone出仓库,但是这时候我们是不能push的,因为新创建的用户此时并没有写权限,我们需要回到服务器:
#-& cd /home
修改组目录所属的分组:
#-& chgrp -R 组目录名称
-R表示递归修改所有子目录所属分组然后修改组目录的权限:
#-& chmod -R 775 组目录名称
这里-R同样表示递归修改权限775表示权限,Linux下文件/文件夹权限分为三种,文件拥有者权限、文件所属组成员权限、以及其他人的权限。775三位分别对应这三种权限。每一位中,4表示可读,2表示可写,1表示可执行(文件夹的话表示可进入),最后相加的和表示权限集合。这里我们设置为组目录以及子目录的权限为775表示所拥有者可读、可写、可执行;所属组成员可读、可写、可执行;其他人可读、可执行,但是不可写。此时我们再次回到客户端,就可以push仓库的修改到服务器了。
感谢阅读,欢迎大家和我一起来讨论任何有趣的事情。E-mail:
Different Ages, Different Hero!!> 博客详情
公司目前用的是SVN,一些同事经常提交产生冲突,加上自己对SVN的不熟悉,经常把别人写的代码给干掉了。现在准备用GIT,他们之间的区别在这里不细说了,一个是集中式的,一个是分布式的。
一.GIT安装
1.安装GIT服务
wget wget https://www.kernel.org/pub/software/scm/git/git-1.9.0.tar.gz
tar zxvf git-1.9.0
./configure
make && make install
可能出现的错误:Can't locate ExtUtils/MakeMaker.pm in
解决方法:
yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMake
安装好后,我们查看一下是否安装成功
git --version
结果应该是:git version 1.9.0,表示成功
2.建立仓库
adduser git
----建立git用户
mkdir gitwork
----在根目录下建立git仓库
chown -R git:git gitwork
----更改gitwork目录权限;本条和前面三条命令都是root用户执行
----切换到git用户
cd /gitwork
----切换到gitwork目录,如果一步一步的来的话,其实不用切换
git init --bare pmwork.git----初始化空的 Git 版本库于pmwork
----切换到git用户主目录
mkdir .ssh
----建立.ssh目录
chmod 700 .ssh
----设置权限,不然后面提交不了
----进入.ssh目录
touch authorized_keys
----创建authorized_keys文件,这里放公钥的
chmod 600 authorized_keys ----设置权限
3.密钥和公钥的建立
建立密钥后,后面git提交就不用输入用户名和密码
在客户端下载puttygen,本地客户端是win10,git客户端已经安装过了,直接下一步下一步就可以完成
a.puttygen下载地址
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
下载:https://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe
b.双击打开puttygen
鼠标要puttygen软件上不停的动,才可以。这可能是这个软件的作者开的玩笑
把生成的公钥放到authorized_keys文件中
vi authorized_keys
直接点击按钮即可
保存到本地,名字叫git2.ppk,到时候git clone的时候会用到
d.客户端克隆
这里git服务器与git客户端安装介绍完毕。
二.GIT同步到站点目录
有时候,我们希望本地提交的文件直接在站点目录显示,这是可以的。svn里也有同样的功能,一个叫做钩子的功能
----切换到git用户
cd /git/pmwork.git/hooks
----进行仓库hooks文件下
vi post-receive
----添加以下内容,--work-tree=是你站点的目录,切记
#!/bin/bash
git --work-tree=/www/lockcom checkout -f
chmod +x post-receive
----设置钩子文件可执行权限
通常到此应该会成功,不过往往不同目录权限,导致提交上去的文件不能同步到站点目录,所以要更改权限。可以把用户权限统一设置一下,这样就不会造成权限问题
这里的站点目录用户是 apache,所以要把apache组给git用户
usermod -a -G git apache
更改站点目录权限,通用775就可以,不过我在本地测试了,不可以,改成777就可以~
chmod -R 777 /www/lockcom
这样你进入站点目录,应该可以看到你提交的文件!
人打赏支持
开源项目作者
领取时间:
作为一个开源项目作者,是时候站出来拯救世界了!
领取条件:开源项目被开源中国收录的开发者可领取
码字总数 32559
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥Git推送到服务器自动同步到站点目录_服务器应用_Linux公社-Linux系统门户网站
你好,游客
Git推送到服务器自动同步到站点目录
来源:Linux社区&
作者:Linux
有这样一种需求,在本地开发,然后push到服务器上,并且自动同步到web站点目录,这样就可以直接看到网页效果了。
分几个步骤
在服务器上创建裸版本库
创建web目录
本地初始化版本库
本地克隆裸版本库
设置裸版本库的钩子post-receive
裸版本库接收到推送内容后自动检出到web目录实现同步
创建裸版本库:
[root@localhost]$ mkdir /home/workspace
[root@localhost]$ cd /home/workspace
[root@localhost]$ git init -bare wwwroot.git
在home/workspace目录下创建了一个wwwroot.git的裸版本库
创建web目录:
[root@localhost]$ mkdir -p /home/website/wwwroot
本地初始化一个版本库 [root@admin.pc]$ cd e:
[root@admin.pc]$ git init local.git
这样在e盘下创建了一个 local.git的本地版本库目录 [root@admin.pc e:/local.git/]$ git clone ssh://root@xxx.xxx.x/home/workspace/wwwroot.git
使用ssh协议从服务器上克隆裸版本库内容,这里如果没有配置公钥的话,会提示输入密码。
[root@localhost]$ cd /home/workspace/wwwroot.git/hooks
[root@localhost]$ cat & post-receive &&EOF
&#!/bin/bash
&git --work-tree=/home/website/wwwroot checkout -f
[root@localhost]$ chmod +x post-receive
在服务器裸版本库目录下有一个hooks目录,进去后添加一个post-receive的文件,将上面&开头的几行代码输进去,可以用vi,我这里用的cat,保存后记得使用chmod将这个文件赋予可执行权限,成为一个shell脚本。其中 --work-tree对应站点文件目录
然后就可以开始从本地开发了,在本地版本库工作区里开发,然后使用git push指令推送到远程裸版本库,钩子会post-receive自动生效,将文件检出到--work-tree目录里,实现同步。
第一次push可能会有一些提示,因为裸版本库还什么都没有,你可能需要 git push origin master写全命令,之后就没必要了。
更多 Git 教程系列文章:&
GitHub 使用教程图文详解& &
Git使用图文详细教程&
Git安装与使用
Git 标签管理详解 &
Git 分支管理详解 &
Git 远程仓库详解 &
Git 本地仓库(Repository)详解 &
Git 服务器搭建与客户端安装& &
Git 概述 &
分享实用的GitHub 使用教程 &
Git从入门到学会
Git基本操作详解
Git 的详细介绍:Git 的下载地址:
本文永久更新链接地址:
相关资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款

我要回帖

更多关于 git 上传到服务器 的文章

 

随机推荐