<div id="mainContent"> <div class="forFlow"> <div id="post_detail"> <!--done--> <div id="topics"> <div class="post"> <h1 class="postTitle"> <a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/dee0912/p/5815267.html">在 Linux 下搭建 Git 服务器</a> </h1> <div class="clear"></div> <div class="postBody"> <div id="cnblogs_post_body"><div class="cnblogs_code"> <pre><span style="color: #000000;">环境:</span><span style="color: #000000;"> 服务器 CentOS6.6 + git(version </span><span style="color: #800080;">1.7</span>.<span style="color: #800080;">1)<br><span style="color: #000000;">客户端 Windows10 + </span></span>git(version 2.8.4.windows.1)</pre> </div> <h2> </h2> <h2>① 安装 Git</h2> <p>Linux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git</p> <p><strong>服务器端:</strong></p> <div class="cnblogs_code"> <pre>#yum install -y git</pre> </div> <p>安装完后,查看 Git 版本</p> <div class="cnblogs_code"> <pre>[root@localhost ~]# git --<span style="color: #000000;">version git version </span><span style="color: #800080;">1.7</span>.<span style="color: #800080;">1</span></pre> </div> <p> </p> <p><strong>客户端:</strong></p> <p>下载 <a href="https://github.com/git-for-windows/git/releases/download/v2.9.3.windows.2/Git-2.9.3.2-64-bit.exe" target="_blank">Git for Windows</a>,地址:<a href="https://git-for-windows.github.io/" target="_blank">https://git-for-windows.github.io/</a></p> <p>安装完之后,可以使用 Git Bash 作为命令行客户端。</p> <p>安装完之后,查看 Git 版本</p> <div class="cnblogs_code"> <pre>$ git --<span style="color: #000000;">version git version </span><span style="color: #800080;">2.8</span>.<span style="color: #800080;">4</span>.windows.<span style="color: #800080;">1</span></pre> </div> <p> </p> <h2>② 服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码</h2> <div class="cnblogs_code"> <pre><span style="color: #000000;">[root@localhost home]# id git id: git:无此用户 [root@localhost home]# useradd git [root@localhost home]# passwd git<br></span></pre> </div> <p> </p> <h2>③ 服务器端创建 Git 仓库</h2> <p>设置 /home/data/git/gittest.git 为 Git 仓库</p> <p>然后把 Git 仓库的 owner 修改为 git</p> <div class="cnblogs_code"> <pre>[root@localhost home]# mkdir -p data/git/<span style="color: #000000;">gittest.git [root@localhost home]# git init </span>--bare data/git/<span style="color: #000000;">gittest.git Initialized empty Git repository </span><span style="color: #0000ff;">in</span> /home/data/git/gittest.git/<span style="color: #000000;"> [root@localhost home]# cd data</span>/git/<span style="color: #000000;"> [root@localhost git]# chown </span>-R git:git gittest.git/</pre> </div> <p> </p> <h2>④ 客户端 clone 远程仓库</h2> <p>进入 Git Bash 命令行客户端,创建项目地址(设置在 d:/wamp64/www/gittest_gitbash)并进入:</p> <div class="cnblogs_code"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div> <pre>dee@Lenovo-PC MINGW64 /<span style="color: #000000;">d $ cd wamp64</span>/<span style="color: #000000;">www dee@Lenovo</span>-PC MINGW64 /d/wamp64/<span style="color: #000000;">www $ mkdir gittest_gitbash dee@Lenovo</span>-PC MINGW64 /d/wamp64/<span style="color: #000000;">www $ cd gittest_gitbash dee@Lenovo</span>-PC MINGW64 /d/wamp64/www/<span style="color: #000000;">gittest_gitbash $</span></pre> <div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div> <p> </p> <p>然后从 Linux Git 服务器上 clone 项目:</p> <div class="cnblogs_Highlighter sh-gutter"> <div><div id="highlighter_218259" class="syntaxhighlighter csharp"><div class="toolbar"><span><a href="#" class="toolbar_item command_help help">?</a></span></div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">$ git clone git@192.168.56.101:/home/data/gittest.git</code></div></div></td></tr></tbody></table></div></div> </div> <p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828224409166-1327160680.png" alt=""> </p> <p>当第一次连接到目标 Git 服务器时会得到一个提示:</p> <div class="cnblogs_code"> <pre>The authenticity of host <span style="color: #800000;">'</span><span style="color: #800000;">192.168.56.101 (192.168.56.101)</span><span style="color: #800000;">'</span> can<span style="color: #800000;">'</span><span style="color: #800000;">t be established.</span> RSA key fingerprint <span style="color: #0000ff;">is</span> SHA256:Ve6WV/<span style="color: #000000;">SCA059EqoUOzbFoZdfmMh3B259nigfmvdadqQ. Are you sure you want to </span><span style="color: #0000ff;">continue</span> connecting (yes/no)? </pre> </div> <p>选择 yes:</p> <div class="cnblogs_code"> <pre>Warning: Permanently added <span style="color: #800000;">'</span><span style="color: #800000;">192.168.56.101</span><span style="color: #800000;">'</span> (RSA) to the list of known hosts.</pre> </div> <p>此时 C:\Users\用户名\.ssh 下会多出一个文件 known_hosts,以后在这台电脑上再次连接目标 Git 服务器时不会再提示上面的语句。</p> <p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828225138698-412131557.png" alt=""></p> <p>后面提示要输入密码,可以采用 SSH 公钥来进行验证。</p> <p> </p> <h2>⑤ 客户端创建 SSH 公钥和私钥</h2> <div class="cnblogs_code"> <pre>$ ssh-keygen -t rsa -C <span style="color: #800000;">"</span><span style="color: #800000;">472323087@qq.com</span><span style="color: #800000;">"</span></pre> </div> <p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828225309533-1152112221.png" alt=""></p> <p>此时 C:\Users\用户名\.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub</p> <p>id_rsa 是私钥</p> <p>id_rsa.pub 是公钥</p> <p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828225436257-770631205.png" alt="" width="890" height="356"></p> <p> </p> <h2>⑥ 服务器端 Git 打开 RSA 认证</h2> <p>进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释:</p> <div class="cnblogs_code"> <pre><span style="color: #000000;">RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh</span>/authorized_keys</pre> </div> <p>保存并重启 sshd 服务:</p> <div class="cnblogs_code"> <pre>[root@localhost ssh]# /etc/rc.d/init.d/sshd restart</pre> </div> <p> </p> <p>由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 git,所以实际存放公钥的路径是 /home/git/.ssh/authorized_keys</p> <p>在 /home/git/ 下创建目录 .ssh</p> <div class="cnblogs_code"> <pre><span style="color: #000000;">[root@localhost git]# pwd </span>/home/<span style="color: #000000;">git<br></span>[root@localhost git]# mkdir .ssh<br><span>[root@localhost git]# ls </span>-<span>a <br>. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla .ssh</span></pre> </div> <p>然后把 .ssh 文件夹的 owner 修改为 git</p> <div class="cnblogs_code"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div> <pre>[root@localhost git]# chown -<span style="color: #000000;">R git:git .ssh [root@localhost git]# ll </span>-<span style="color: #000000;">a 总用量 </span><span style="color: #800080;">32</span><span style="color: #000000;"> drwx</span>------. <span style="color: #800080;">5</span> git git <span style="color: #800080;">4096</span> 8月 <span style="color: #800080;">28</span> <span style="color: #800080;">20</span>:<span style="color: #800080;">04</span><span style="color: #000000;"> . drwxr</span>-xr-x. <span style="color: #800080;">8</span> root root <span style="color: #800080;">4096</span> 8月 <span style="color: #800080;">28</span> <span style="color: #800080;">19</span>:<span style="color: #800080;">32</span><span style="color: #000000;"> .. </span>-rw-r--r--. <span style="color: #800080;">1</span> git git <span style="color: #800080;">18</span> 10月 <span style="color: #800080;">16</span> <span style="color: #800080;">2014</span><span style="color: #000000;"> .bash_logout </span>-rw-r--r--. <span style="color: #800080;">1</span> git git <span style="color: #800080;">176</span> 10月 <span style="color: #800080;">16</span> <span style="color: #800080;">2014</span><span style="color: #000000;"> .bash_profile </span>-rw-r--r--. <span style="color: #800080;">1</span> git git <span style="color: #800080;">124</span> 10月 <span style="color: #800080;">16</span> <span style="color: #800080;">2014</span><span style="color: #000000;"> .bashrc drwxr</span>-xr-x. <span style="color: #800080;">2</span> git git <span style="color: #800080;">4096</span> 11月 <span style="color: #800080;">12</span> <span style="color: #800080;">2010</span><span style="color: #000000;"> .gnome2 drwxr</span>-xr-x. <span style="color: #800080;">4</span> git git <span style="color: #800080;">4096</span> 5月 <span style="color: #800080;">8</span> <span style="color: #800080;">12</span>:<span style="color: #800080;">22</span><span style="color: #000000;"> .mozilla drwxr</span>-xr-x. <span style="color: #800080;">2</span> git git <span style="color: #800080;">4096</span> 8月 <span style="color: #800080;">28</span> <span style="color: #800080;">20</span>:<span style="color: #800080;">08</span> .ssh</pre> <div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div> <p> </p> <h2>⑦ 将客户端公钥导入服务器端 /home/git/.ssh/authorized_keys 文件</h2> <p>回到 Git Bash 下,导入文件:</p> <div class="cnblogs_code"> <pre>$ ssh git@<span style="color: #800080;">192.168</span>.<span style="color: #800080;">56.101</span> <span style="color: #800000;">'</span><span style="color: #800000;">cat >> .ssh/authorized_keys</span><span style="color: #800000;">'</span> < ~/.ssh/id_rsa.pub</pre> </div> <p>需要输入服务器端 git 用户的密码</p> <p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828230957010-2048402011.png" alt=""></p> <p> </p> <p>回到服务器端,查看 .ssh 下是否存在 authorized_keys 文件:</p> <div class="cnblogs_code"> <pre><span style="color: #000000;">[root@localhost git]# cd .ssh [root@localhost .ssh]# ll 总用量 </span><span style="color: #800080;">4</span> -rw-rw-r--. <span style="color: #800080;">1</span> git git <span style="color: #800080;">398</span> 8月 <span style="color: #800080;">28</span> <span style="color: #800080;">20</span>:<span style="color: #800080;">08</span> authorized_keys</pre> </div> <p>可以查看一下是否是客户端生成的公钥。</p> <p> </p> <p><strong><span style="color: #ff0000;">重要:</span></strong></p> <p><strong><span style="color: #ff0000;">修改 .ssh 目录的权限为 700</span></strong></p> <p><strong><span style="color: #ff0000;">修改 .ssh/authorized_keys 文件的权限为 600</span></strong></p> <div class="cnblogs_code"> <pre>[root@localhost git]# chmod <span style="color: #800080;">700</span><span style="color: #000000;"> .ssh [root@localhost git]# cd .ssh [root@localhost .ssh]# chmod </span><span style="color: #800080;">600</span> authorized_keys </pre> </div> <p> </p> <h2>⑧ 客户端再次 clone 远程仓库</h2> <div class="cnblogs_code"> <pre>$ git clone git@<span style="color: #800080;">192.168</span>.<span style="color: #800080;">56.101</span>:/home/data/git/gittest.git</pre> </div> <p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828232005724-1805448371.png" alt=""></p> <p> </p> <p>查看客户端项目目录:</p> <p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828232049743-1094594088.png" alt="" width="887" height="342"></p> <p> </p> <p>项目已经 clone 了。</p> <p> </p> <p>也可以使用 tortoiseGit 客户端来管理项目:</p> <p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828232607719-1403152861.png" alt="" width="884" height="509"></p> <p>clone</p> <p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828232757086-2087480963.png" alt=""></p> <p> </p> <h2>⑨ 禁止 git 用户 ssh 登录服务器</h2> <p>之前在服务器端创建的 git 用户不允许 ssh 登录服务器</p> <p>编辑 /etc/passwd</p> <p>找到:</p> <div class="cnblogs_code"> <pre>git:x:<span style="color: #800080;">502</span>:<span style="color: #800080;">504</span>::/home/git:/bin/bash</pre> </div> <p>修改为</p> <div class="cnblogs_code"> <pre>git:x:<span style="color: #800080;">502</span>:<span style="color: #800080;">504</span>::/home/git:/bin/git-shell</pre> </div> <p>此时 git 用户可以正常通过 ssh 使用 git,但无法通过 ssh 登录系统。</p> <p> </p> <p>参考:<a href="http://blog.csdn.net/wave_1102/article/details/47779401" target="_blank">在CentOS下搭建自己的Git服务器</a></p></div><div id="MySignature"></div> <div class="clear"></div> <div id="blog_post_info_block"> <div id="BlogPostCategory"></div> <div id="EntryTag">标签: <a href="http://www.cnblogs.com/dee0912/tag/git/">git</a></div> <div id="blog_post_info"><div id="green_channel"> <a href="javascript:void(0);" id="green_channel_digg" οnclick="DiggIt(5815267,cb_blogId,1);green_channel_success(this,'谢谢推荐!');">好文要顶</a> <a id="green_channel_follow" οnclick="follow('b4fd652a-8fc9-e211-8d02-90b11c0b17d6');" href="javascript:void(0);">关注我</a> <a id="green_channel_favorite" οnclick="AddToWz(cb_entryId);return false;" href="javascript:void(0);">收藏该文</a> <a id="green_channel_weibo" href="javascript:void(0);" title="分享至新浪微博" οnclick="ShareToTsina()"><img src="//common.cnblogs.com/images/icon_weibo_24.png" alt=""></a> <a id="green_channel_wechat" href="javascript:void(0);" title="分享至微信" οnclick="shareOnWechat()"><img src="//common.cnblogs.com/images/wechat.png" alt=""></a> </div> <div id="author_profile"> <div id="author_profile_info" class="author_profile_info"> <a href="http://home.cnblogs.com/u/dee0912/" target="_blank"><img src="//pic.cnblogs.com/face/534303/20160707124938.png" class="author_avatar" alt=""></a> <div id="author_profile_detail" class="author_profile_info"> <a href="http://home.cnblogs.com/u/dee0912/">黄棣-dee</a><br> <a href="http://home.cnblogs.com/u/dee0912/followees">关注 - 7</a><br> <a href="http://home.cnblogs.com/u/dee0912/followers">粉丝 - 44</a> </div> </div> <div class="clear"></div> <div id="author_profile_honor"></div> <div id="author_profile_follow"> <a href="javascript:void(0);" οnclick="follow('b4fd652a-8fc9-e211-8d02-90b11c0b17d6');return false;">+加关注</a> </div> </div> <div id="div_digg"> <div class="diggit" οnclick="votePost(5815267,'Digg')"> <span class="diggnum" id="digg_count">4</span> </div> <div class="buryit" οnclick="votePost(5815267,'Bury')"> <span class="burynum" id="bury_count">0</span> </div> <div class="clear"></div> <div class="diggword" id="digg_tips"> </div> </div> </div> <div class="clear"></div> <div id="post_next_prev"><a href="http://www.cnblogs.com/dee0912/p/5795511.html" class="p_n_p_prefix">« </a> 上一篇:<a href="http://www.cnblogs.com/dee0912/p/5795511.html" title="发布于2016-08-22 14:33">使用 SVN Hook 实现服务器端代码自动更新</a><br><a href="http://www.cnblogs.com/dee0912/p/5940288.html" class="p_n_p_prefix">» </a> 下一篇:<a href="http://www.cnblogs.com/dee0912/p/5940288.html" title="发布于2016-10-08 21:44">PHP 使用 curl_* 系列函数和 curl_multi_* 系列函数进行多接口调用时的性能对比</a><br></div> </div> </div> <div class="postDesc">posted @ <span id="post-date">2016-08-28 23:36</span> <a href="http://www.cnblogs.com/dee0912/">黄棣-dee</a> 阅读(<span id="post_view_count">14075</span>) 评论(<span id="post_comment_count">2</span>) <a href="https://i.cnblogs.com/EditPosts.aspx?postid=5815267" rel="nofollow">编辑</a> <a href="#" οnclick="AddToWz(5815267);return false;">收藏</a></div> </div> <script type="text/javascript">var allowComments=true,cb_blogId=196695,cb_entryId=5815267,cb_blogApp=currentBlogApp,cb_blogUserGuid='b4fd652a-8fc9-e211-8d02-90b11c0b17d6',cb_entryCreatedDate='2016/8/28 23:36:00';loadViewCount(cb_entryId);</script> </div><!--end: topics 文章、评论容器--> </div><a name="!comments"></a><div id="blog-comments-placeholder"><div id="comments_pager_top"></div> <!--done--> <div class="feedback_area_title">评论列表</div> <div class="feedbackNoItems"></div> <div class="feedbackItem"> <div class="feedbackListSubtitle"> <div class="feedbackManage"> <span class="comment_actions"></span> </div> <a href="#3536957" class="layer">#1楼</a><a name="3536957" id="comment_anchor_3536957"></a> <span class="comment_date">2016-10-20 15:26</span> <a id="a_comment_author_3536957" href="http://home.cnblogs.com/u/911276/" target="_blank">ck2016</a> <a href="http://msg.cnblogs.com/send/ck2016" title="发送站内短消息" class="sendMsg2This"> </a> </div> <div class="feedbackCon"> <div id="comment_body_3536957" class="blog_comment_body">楼主辛苦了,谢谢</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" οnclick="return voteComment(3536957,'Digg',this)">支持(1)</a><a href="javascript:void(0);" class="comment_bury" οnclick="return voteComment(3536957,'Bury',this)">反对(0)</a></div> </div> </div> <div class="feedbackItem"> <div class="feedbackListSubtitle"> <div class="feedbackManage"> <span class="comment_actions"></span> </div> <a href="#3644941" class="layer">#2楼</a><a name="3644941" id="comment_anchor_3644941"></a><span id="comment-maxId" style="display:none;">3644941</span><span id="comment-maxDate" style="display:none;">2017/3/19 15:53:29</span> <span class="comment_date">2017-03-19 15:53</span> <a id="a_comment_author_3644941" href="http://www.cnblogs.com/zhouqiren/" target="_blank">mrossZ</a> <a href="http://msg.cnblogs.com/send/mrossZ" title="发送站内短消息" class="sendMsg2This"> </a> </div> <div class="feedbackCon"> <div id="comment_body_3644941" class="blog_comment_body">很好,按照楼主所写的 搭建成功了。多谢!</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" οnclick="return voteComment(3644941,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" οnclick="return voteComment(3644941,'Bury',this)">反对(0)</a></div><span id="comment_3644941_avatar" style="display:none;">http://pic.cnblogs.com/face/871928/20160103210017.png</span> </div> </div> <div id="comments_pager_bottom"></div></div><script type="text/javascript">var commentManager = new blogCommentManager();commentManager.renderComments(0);</script> <div id="comment_form" class="commentform"> <a name="commentform"></a> <div id="divCommentShow"></div> <div id="comment_nav"><span id="span_refresh_tips"></span><a href="javascript:void(0);" οnclick="return RefreshCommentList();" id="lnk_RefreshComments" runat="server" clientidmode="Static">刷新评论</a><a href="#" οnclick="return RefreshPage();">刷新页面</a><a href="#top">返回顶部</a></div> <div id="comment_form_container"><div class="login_tips">注册用户登录后才能发表评论,请 <a rel="nofollow" href="javascript:void(0);" class="underline" οnclick="return login('commentform');">登录</a> 或 <a rel="nofollow" href="javascript:void(0);" class="underline" οnclick="return register();">注册</a>,<a href="http://www.cnblogs.com">访问</a>网站首页。</div></div> <div class="ad_text_commentbox" id="ad_text_under_commentbox"></div> <div id="ad_t2"><a href="http://www.ucancode.com/index.htm" target="_blank">【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库</a><br><a href="http://www.gcpowertools.com.cn/products/activereports/excel.htm?utm_source=cnblogs&utm_medium=blogpage&utm_term=bottom&utm_content=AR&utm_campaign=community" target="_blank">【报表】Excel 报表开发18 招式,人人都能做报表</a><br><a href="http://click.aliyun.com/m/15483" target="_blank">【活动】阿里云海外云服务全面降价助力企业全球布局</a><br><a href="https://group.cnblogs.com/topic/76829.html" target="_blank">【实用】40+篇云服务器操作及运维基础知识!</a><br></div> <div id="opt_under_post"></div> <div id="cnblogs_c1" class="c_ad_block"><a href="https://cn.udacity.com/course/deep-learning-nanodegree-foundation--nd101/?utm_source=cnblogs&utm_medium=referral&utm_campaign=DLND03" target="_blank"><img width="300" height="250" src="https://images2015.cnblogs.com/news/24442/201705/24442-20170517165947322-839645573.jpg" alt="深度学习0525"></a></div> <div id="under_post_news"><div class="itnews c_ad_block"><b>最新IT新闻</b>:<br> · <a href="http://news.cnblogs.com/n/570180/" target="_blank">周鸿祎:初创公司快速成长的“四步走”战略</a><br> · <a href="http://news.cnblogs.com/n/570175/" target="_blank">售价5000美元:初代iPad原型机亮相eBay</a><br> · <a href="http://news.cnblogs.com/n/570179/" target="_blank">emoi基本生活回应毛巾哥:当年的抄袭,几近拖垮基本生活</a><br> · <a href="http://news.cnblogs.com/n/570178/" target="_blank">这就是特斯拉的先进生产线?事故率伤亡率远远高于同行</a><br> · <a href="http://news.cnblogs.com/n/570177/" target="_blank">一张图看懂小米Max 2!1699元/5300mAh续航神机</a><br>» <a href="http://news.cnblogs.com/" title="IT新闻" target="_blank">更多新闻...</a></div></div> <div id="cnblogs_c2" class="c_ad_block"><a href="http://click.aliyun.com/m/17215/" target="_blank"><img width="468" height="60" src="//images2015.cnblogs.com/news/24442/201704/24442-20170417123605337-535991337.jpg" alt="阿里云E4"></a></div> <div id="under_post_kb"><div class="itnews c_ad_block" id="kb_block"><b>最新知识库文章</b>:<br><div id="kb_recent"> · <a href="http://kb.cnblogs.com/page/569992/" target="_blank">程序员的工作、学习与绩效</a><br> · <a href="http://kb.cnblogs.com/page/569056/" target="_blank">软件开发为什么很难</a><br> · <a href="http://kb.cnblogs.com/page/565901/" target="_blank">唱吧DevOps的落地,微服务CI/CD的范本技术解读</a><br> · <a href="http://kb.cnblogs.com/page/566523/" target="_blank">程序员,如何从平庸走向理想?</a><br> · <a href="http://kb.cnblogs.com/page/566318/" target="_blank">我为什么鼓励工程师写blog</a><br></div>» <a href="http://kb.cnblogs.com/" target="_blank">更多知识库文章...</a></div></div> <div id="HistoryToday" class="c_ad_block"></div> <script type="text/javascript"> fixPostBody(); setTimeout(function () { incrementViewCount(cb_entryId); }, 50); deliverAdT2(); deliverAdC1(); deliverAdC2(); loadNewsAndKb(); loadBlogSignature(); LoadPostInfoBlock(cb_blogId, cb_entryId, cb_blogApp, cb_blogUserGuid); GetPrevNextPost(cb_entryId, cb_blogId, cb_entryCreatedDate); loadOptUnderPost(); GetHistoryToday(cb_blogId, cb_blogApp, cb_entryCreatedDate); </script> </div> </div><!--end: forFlow --> </div>
在 Linux 下搭建 Git 服务器
最新推荐文章于 2024-05-16 02:45:31 发布