安装git
首先须要在服务器上安装git环境,以centos为例:node
yum install git
而后添加一个用户,就叫git吧。linux
adduser git passwd git input your password...
而后在终端输入 gitgit
添加信任关系
linux默认是不信任任何机器的,经过ssh登陆其余主机都须要输入密码,创建信任关系的过程就是一台主机生成公钥,把公钥放到其余主机上,而后这个主机经过ssh登陆其余机器就不须要输入密码了。 在用户家目录下默认是没有.ssh目录的:github
cd /home/git ls -al
由于没有生成过公钥,生成公钥和私钥的命令为:(-t 的意思是加密算法为rsa)算法
ssh-keygen -t rsa ls -al
一路回车,而后在用户的家目录下能看到 .ssh 目录。收集全部须要登陆的用户的公钥,就是该用户的/.ssh/id_rsa.pub文件,把全部公钥导入/home/git/.ssh/authorized_keys文件。而后就能够经过ssh username@ip 直接远程登陆其余机器,而不须要使用密码了。因为git跟远程仓库的交互主要依靠http和ssh,这个步骤的目的就是让远程提交的时候不须要每次都输入密码。shell
问题是window下如何生成这个公钥呢? 经过windows下的git工具就能够生成公钥了,并且生成的公钥也是在当前用户的家目录。windows
scp C:/Users/semptian/.ssh/id_rsa.pub git@47.95.11.33:/tmp ssh git@47.95.11.33 "cat /tmp/id_rsa.pub >> /home/git/.ssh/authorized_keys"
scp是远程复制的命令,把本地的公钥文件远程复制到/tmp下;而后登陆服务器,把/tmp下的文件添加到git用户的authorized_keys中。 本地经过ssh命令登陆到远程服务器不要密码,算是信任关系已经创建。centos
初始化git仓库
先选定一个目录做为远程git仓库。服务器
su root mkdir /srv/repository/sample cd /srv/repository/sample git init --bare sample.git ls -al
把远程仓库于本地之间的交互
在本地的一个目录下运行git Bashssh
git clone git@47.95.11.33:/srv/repository/sample/sample.git
本地代码的提交:
git init #初始化本地文件夹为git仓库 git add . #把当前文件夹中的全部文件添加到git仓库,也能够添加某一个文件。 git commit -m "commit" #提交 git remote add origin git@47.95.11.33:/srv/repository/sample/sample.git #与github仓库创建远程链接 git push -u origin master #把本地的项目推送到github远程仓库
一、git remote add origin git@47.95.11.33:/srv/repository/sample/sample.git #与远程仓库创建远程链接 二、git push -u origin master #把本地的项目推送到github远程仓库 一、2两个命令等价于如下这个命令: git push -u origin master git@47.95.11.33:/srv/repository/sample/sample.git
若是当前分支与多个主机存在追踪关系,可使用-u选项指定一个默认主机,这样后面就能够不加任何参数使用git push,而后下次就提交以后就能够直接 git push 了。
#与远程仓库同步 git pull --rebase origin master
遇到的一些错误
在提交的时候报错:
$ git commit -m "test_02" *** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'semptian@DESKTOP-QVJGTA9.(none)')
提示中git config --global 是全局的配置,单独为项目配置的方法(全局和单独配置都存在的时候会默认使用项目单独配置的): 1.打开项目所在目录,找到隐藏的.git文件夹。注意这个文件夹是隐藏的,显示隐藏出来就行。 2.打开文件夹里的config文件,推荐用nodepad++打开。 3.添加这三行到文件:
[user] name = XXX(本身的名称) email = XXXX(邮箱)
输入 git log 报错:
fatal: Not a git repository (or any of the parent directories): .git
须要在git仓库的根目录中使用git命令。
push到远程的时候报错:
fatal: remote part of refspec is not a valid name in git@47.95.11.33:/srv/repository/sample/sample.git
可能这是第二次提交,添加了远程仓库以后能够直接 git push 。