环境:Cent_os_7系统 ,SoureTree ,Xshell5
本案例是在虚拟机下安装Cent_os_7系统搭建git环境用作服务端,实现本地与服务端的数据传输。
1.服务端git环境搭建。
首先在虚拟机中打开运行系统,登陆后输入:
yum install git
(这里可以用xshell5连接服务端进行git环境搭建)
然后会有安装过程的进度显示
再次输入:
yum install git
会显示已安装
这里服务端的git环境已经搭建好了。
2.本地git环境设置
可以用gitbash敲命令行进行控制,我是安装了一个SoureTree软件,安装教程网上搜索一下有很多,这里就不做介绍了。
先来说一下SSH密钥的使用,通过密钥可以不用输入密码来进行文件推送拉取。步骤也很简单,打开sourcetree点击工具
初始的时候工具第二行是生成或添加SSH密钥,这里不建议使用这个生成密钥,因为太慢了,点击命令行模式
会跳出类似gitbash的命令行窗口,输入:
ssh-keygen -t rsa
这里第一个要输入的是密钥保存地址,我是直接空格过去保存在默认地址的,知道在哪里就行了,然后输入密码,再次输入密码,我没有设置密码,直接空格两下过去了
会有一个密钥生成的图形,说明密钥已经生成了,然后找到密钥所在的文件夹,也就是密钥保存的地址,可以看到两个文件
id_rsa.pub 是公钥,id_rsa 是私钥,找到后切换到souretree,打开工具->选项ssh客户端配置
将公钥私钥都导进去,然后点确认就行了。接下来我们再切换到服务器配置密钥,cd 到 root 根目录下输入:
mkdir .ssh
创建密钥文件目录
然后打开文件传输进入到.ssh文件目录下,将之前生成的公钥传到这个目录下,然后改名为authorized_keys,这里解释一下,因为服务器读取公钥是读取的这个文件名下的,可以在服务器etc/ssh/sshd_config查看配置文件,右键打开这个sshd_config文件
可以看到这个配置信息:AuthorizedKeysFile .ssh/authorized_keys
进行到这里的话,密钥登录就已经配置好了,若想在xshell5用这个密钥来登录服务器需要配置一下
右键服务器名选择属性
用户验证这里选择密钥选项,点击浏览将之前生成的私钥导入就行了
然后就可以用这个密钥登录服务器了。
3.git仓库搭建
在服务器上创建git仓库的文件目录,然后进行初始化
mkdir git
cd git
git init
这样服务器的git仓库就创建好了,可能会出一些问题,输入
git branch
查看一下有没有生成默认分支,若是没有生成的话需要进行添加提交的动作,随便拖一个文件,或着仓库里有文件,做一次
add跟
commit操作就可以了
git add .
git commit -m "first "
然后可以发现会生成一个master分支,接下来可以在sourcetree克隆服务端仓库到本地了
xshell5的地址栏有个地址,我的是ssh://[email protected]:22
把这个地址复制下来
打开sourcetree点击克隆
把地址粘贴到源路径,后面跟上服务端git仓库的地址/home/git,然后写上本地仓库的目标路径,然后点克隆就行了
这就是克隆完成了,不过可能还会有个推送的问题
[remote rejected]master -> master (branch is currently checkedout)
remote: error: refusing to update checked out branch:refs/heads/master
remote: error: By default, updating the current branch in anon-bare repository
remote: error: is denied, because it will make the index and worktree inconsistent
remote: error: with what you pushed, and will require 'git reset--hard' to match
remote: error: the work tree to HEAD.
remote: error:
...
出现这种情况的话需要找到服务端git仓库下的配置文件.git/config
右键打开编辑
在下面加上这行
[receive]
denyCurrentBranch = ignore
然后保存就可以推送了
这就推送完成了,或许还会有个问题,你在服务器端可能看不到你刚才推送的更新,这个时候你需要看一下缓存区的状态
git stash
若是已经在你刚提交的这个状态了,说明就推送到了,若是没有,那就输入
git log
查看一下版本,然后输入
git reset --hard <-版本编码->
定位到推送的版本,这样就可以查看刚才的推送了。对于无法及时检出推送的问题可以查看我的这篇博客点击打开链接