<p>使用心得如下:</p><p>git有个hooks功能,每次push提交代码的时候,可以触发远程服务器上的hooks,执行shell。 利用这个功能,每次在本地写好内容,直接push到远程服务器上,就可以根据写好的shel自动部署了。用起来相当方便,下面就记录下配置过程:</p><p>一、在远程服务器上创建代码仓库(Linux)</p><pre class="brush:bash;toolbar:false">#mkdir-p/home/www/project.git #chmod777/home/www #cd/home/www/project.git #gitinit--bare//创建一个裸仓库 #useradd-s/bin/bashgit//因为需要执行shell,把shell指定成/usr/bin/git-shell或/sbin/nogin无法使用githooks来更新blog #chowngit:git-R/home/www/project.git</pre><p>二、配置本地无密码登录远程服务器(win)</p><pre class="brush:bash;toolbar:false">#ssh-keygen//一路回车</pre><p>然后复制生成的key(当前用户下的.ssh/id_rsa.pub)</p><p>切换到Linux</p><pre class="brush:bash;toolbar:false">#mkdir-p/home/git/.ssh #vim/home/git/.ssh/authorized_keys//把上面复制的key粘贴进去,后保存退出 #chowngit:git-R/home/git/.ssh #chmod600/home/git/.ssh/authorized_keys//权限不要出错 #chmod755/home/git/.ssh</pre><p>三、本地初始化git,并且添加远程仓库(win)</p><pre class="brush:bash;toolbar:false">#d://进入D盘 #mkdir-pproject #cdproject #gitinit #gitconfiguser.email&quot;wzp@qq.com&quot; #gitconfiguser.name&quot;wzp&quot; #echo&quot;1111&quot;&gt;1.txt #gitadd1.txt #gitcommit-m&quot;add1.txt&quot; #gitremoteaddblogssh://git@127.0.0.1:22/home/www/project.git//添加远程仓库还没有提交过,所以要先提交一次.注意ssh后面有:// #gitpushblogmaster//提交到主干</pre><p>git remote add &lt;分支名&gt; &lt;远程地址&gt; //上面的blog 就是分支,这个可以随便自定义</p><p>如果git remote add 加错了,可以使用 git remote rm &lt;分支名&gt; 来删掉:</p><pre class="brush:bash;toolbar:false">#gitremotermblog //以后使用这个克隆就行了 //gitclonessh://git@127.0.0.1:22/home/www/project //ssh协议,后面是用户@地址:端口/目录</pre><p>四、添加hooks</p><pre class="brush:bash;toolbar:false">#cd/home/www/project.git/hooks #vimpost-receive #!/bin/sh # PATH=$PATH:/usr/local/python27/bin GIT_WORK_TREE=/home/www/newprojectgitcheckout-f cd/home/www/newproject&amp;&amp;makehtml&gt;/dev/null2&gt;&amp;1 chmod+xpost-receive chowngit:git-R/home/www/newproject</pre><p>注意:写hooks的时候要特别注意环境变量问题。</p><p>错误记录:</p><p>文件冲突</p><pre class="brush:bash;toolbar:false">#gitpushblogmaster &gt;error:failedtopushsomerefsto&#39;ssh://git@127.0.0.1/home/www/project&#39; Topreventyoufromlosinghistory,non-fast-forwardupdateswererejected Mergetheremotechangesbeforepushingagain.Seethe&#39;Noteabout fast-forwards&#39;sectionof&#39;gitpush--help&#39;fordetails.</pre><p>这个是因为你本地的代码和git远程仓库的代码出现了冲突 解决办法:</p><p>1.先把远程文件拉下来,再push</p><pre class="brush:bash;toolbar:false">#gitconfigbranch.master.remoteblog #gitconfigbranch.master.mergerefs/heads/master #gitpullblogmaster #gitpushblogmaster</pre><p>2.强制更新</p><pre class="brush:bash;toolbar:false">#gitpush-fblogmaster</pre><p>//注意,会覆盖远程仓库上的文件,慎用</p><p>以上步骤就能解决了。</p><p>再来说说如果服务器上已经有项目的话如何快速git到本地,首先进入Liunx中项目根目录把项目拉取到服务器git仓库</p><pre class="brush:bash;toolbar:false">#cd/home/wwwroot/newproject//进入项目目录 #gitinit #gitadd. #gitconfiguser.email&quot;test@qq.com&quot; #gitconfiguser.name&quot;test&quot; #gitcommit-m&quot;firstup&quot; #gitstatus #gitremoteaddtestsgit@127.0.0.1:22/home/www/project.git #gitpushtestsmaster</pre><p>服务器git仓库拉取完成之后再在win用git工具把项目拉取下来。</p>
T:0.007894s,M:247.34 KB
返回顶部 留言