最全面的Git 使用规范装逼指南[转载]

时间:2021-11-22 06:42:09
    <script type="text/javascript">
window.logs = {
pagetime: {}
};
window.logs.pagetime['html_begin'] = (+new Date());
</script>
    <link rel="dns-prefetch" href="//res.wx.qq.com">
    <title>最全面的Git 使用规范装逼指南</title>
</style>

</head>
<body id="activity-detail" class="zh_CN mm_appmsg" ontouchstart=""> <script type="text/javascript">
var write_sceen_time = (+new Date());
</script> <div id="js_cmt_mine" class="discuss_container editing access" style="display:none;">
<div class="discuss_container_inner">
<h2 class="rich_media_title">最全面的Git 使用规范装逼指南</h2>
<span id="log"></span>
<div class="frm_textarea_box_wrp">
<span class="frm_textarea_box">
<textarea id="js_cmt_input" class="frm_textarea" placeholder="留言将由公众号筛选后显示,对所有人可见。"></textarea>
<div class="emotion_tool">
<span class="emotion_switch" style="display:none;"></span>
<span id="js_emotion_switch" class="pic_emotion_switch_wrp">
<img class="pic_default" src="http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/emotion/icon_emotion_switch.2x278965.png" alt="">
<img class="pic_active" src="http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/emotion/icon_emotion_switch_active.2x278965.png" alt="">
</span>
<div class="emotion_panel" id="js_emotion_panel">
<span class="emotion_panel_arrow_wrp" id="js_emotion_panel_arrow_wrp">
<i class="emotion_panel_arrow arrow_out"></i>
<i class="emotion_panel_arrow arrow_in"></i>
</span>
<div class="emotion_list_wrp" id="js_slide_wrapper"> </div>
<ul class="emotion_navs" id="js_navbar"> </ul>
</div>
</div>
</span>
</div>
<div class="discuss_btn_wrp"><a id="js_cmt_submit" class="btn btn_primary btn_discuss btn_disabled" href="javascript:;">提交</a></div>
<div class="discuss_list_wrp" style="display:none">
<div class="rich_tips with_line title_tips discuss_title_line">
<span class="tips">我的留言</span>
</div>
<ul class="discuss_list" id="js_cmt_mylist"></ul>
</div>
<div class="rich_tips tips_global loading_tips" id="js_mycmt_loading">
<img src="http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/icon_loading_white2805ea.gif" class="rich_icon icon_loading_white" alt="">
<span class="tips">加载中</span>
</div>
<div class="wx_poptips" id="js_cmt_toast" style="display:none;">
<img alt="" class="icon_toast" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGoAAABqCAYAAABUIcSXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDoyMTUxMzkxZS1jYWVhLTRmZTMtYTY2NS0xNTRkNDJiOGQyMWIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTA3QzM2RTg3N0UwMTFFNEIzQURGMTQzNzQzMDAxQTUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTA3QzM2RTc3N0UwMTFFNEIzQURGMTQzNzQzMDAxQTUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NWMyOGVjZTMtNzllZS00ODlhLWIxZTYtYzNmM2RjNzg2YjI2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIxNTEzOTFlLWNhZWEtNGZlMy1hNjY1LTE1NGQ0MmI4ZDIxYiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pmvxj1gAAAVrSURBVHja7J15rF1TFMbXk74q1ZKHGlMkJVIhIgg1FH+YEpEQJCKmGBpThRoSs5jVVNrSQUvEEENIhGiiNf9BiERICCFIRbUiDa2qvudbOetF3Tzv7XWGffa55/uS7593977n3vO7e5+199p7v56BgQGh0tcmvAUERREUQVEERREUQVEERREUQVEERREUQVEERREUQVEERREUQVEERVAUQVEERVAUQbVYk+HdvZVG8b5F0xj4RvhouB+eCy8KrdzDJc1RtAX8ILxvx98V1GyCSkN98Cx4z/95/Wn4fj6j6tUEeN4wkFSnw1MJqj5NhBfAuwaUHREUg4lqNMmePVsHll/HFhVfe1t3FwpJI8DXCCquDrCWNN4B6Tb4M3Z98aTPmTvh0YHl18PXw29yZiKejoPvcUD6E74yFBJbVDk6Bb7K8aP/Hb4c/tRzEYIqprPhSxzlf4Uvhb/0Xoig8qnHAJ3lqPMzfDH8XZ4LEpRf2sVdA5/sqPO9Qfop70UJyn+/boaPddT5yrq7VUUvTIVJI7q74MMddXR8NB1eXcYvhBpZm0s2w72/o86HFoKvLau/pYaXzjLMdUJ6y0LwtWV9CIIaXtvA8+G9HHV03u5q+K+yH47U0NoRngPv7KjzHDwTLj0bS1BDazfJJlcnOOostC6ysnCT+q80G/sIvFVgeW09D8FPVT0uoP7VfvAD8NjA8pqmuAN+OcYAjso0RbIZ8DGB5TVNcRO8JMaHY9SXSdfa3eeANJimWBLrA7JFiZwIXye+NMUV8CcxP2SRFjXefok7NRjSGZJlWUPvw2/wtNiQirSoXWyMsR28wR7AzzYM0oXw+Y7yK+CLJGeaoqjyrJSdZJD6Ov4+z5y6NJc0Az7NUecHydIUy+v60KNyQHoM3nKI1y7YCFiq0i7uBvgER52vDdKqWn9djhY1Dn4G3n6Ecqm2rF74dvgoR53S0hQxW9RJAZAGW5bSn58QJA27dQ7uIEedjywEX5NKVxCqsY6y+qA+LxFI4+yZ6oH0trWkNan80jygtIUsc5SflgAsDXgehfdx1KkkTRE76tN+Xue2jnTU0Ru1oIbvpt30bBtKhOp5yaaRkts0lic8V1i6dPcIRx2d/l8Y8XtNNEg7OOo8bl1kmmOKnDsO88CaYzejau0hWZqiL7C83oCH4SeTHvwV2BqqsHRVztSEYOmWF80NeXZT6Hd4KflResE9vCnBOlCyGfDNAstHTVPUDWoQ1t3iW+9WNizvlhfd4aerXd+ThqiMfNR6+9LvOOro5OY5JX2H4+F7HZD+kGzlamMgldWiirQsjcwWFbjmqZJteekJLK9pisvgL6RhKvuciZiwzrWWGapfrPy30kBVcSBIrw0aD3PU0XB6cehntq7rTMf7/2iQlktDVdXJLXlg6VjmiYBn6rWSTRCH6hvJ0hQrpcGq8oidsmHpTP8t8DGO9/vcWt9qabiqPgup1yKyQwvC2tSefZ73SSpNkUJ4PlLorlHZ+446nc8f3fIyywlJhwrTuwVSjBa1ccvSxN0hjjoK5xVrYZMd9V6XbFfgBukixTwGLg8sDam3dZR/wZ6L/dJlin1en8LS+bgpFbz3Ygvzu1J1HKxYNqxGpCmaCEo12rrBorD6LRp8UbpcdR5VWhTW35KlKd6QFqjuM2XzwlpnMxTvSkuUwuG/Xlg6NtPjbT6WFimF/VG6LEvXgn8QGDjMbBukVECFwhpoS+CQatfX2Q1q6H7wENHdrfCr0lKleEB9JyxNneus+VJpsVL9TwI6W65LovWIGl3KtVJaLv7LBwYTFEERFEVQFEERFEVQFEERFEVQFEERFEVQFEERFEVQFEERFFWq/hFgADUMN4RzT6/OAAAAAElFTkSuQmCC">
<p class="toast_content">已留言</p>
</div>
</div>
</div> <div id="js_article" class="rich_media"> <div id="js_top_ad_area" class="top_banner"> </div> <div class="rich_media_inner">
<div id="page-content">
<div id="img-content" class="rich_media_area_primary">
<h2 class="rich_media_title" id="activity-name">
最全面的Git 使用规范装逼指南
</h2>
<div class="rich_media_meta_list">
<em id="post-date" class="rich_media_meta rich_media_meta_text">2016-05-11</em> <a class="rich_media_meta rich_media_meta_link rich_media_meta_nickname" href="javascript:void(0);" id="post-user">慕课网imooc订阅号</a>
<span class="rich_media_meta rich_media_meta_text rich_media_meta_nickname">慕课网imooc订阅号</span> <div id="js_profile_qrcode" class="profile_container" style="display:none;">
<div class="profile_inner">
<strong class="profile_nickname">慕课网imooc订阅号</strong>
<img class="profile_avatar" id="js_profile_qrcode_img" src="" alt=""> <p class="profile_meta">
<label class="profile_meta_label">微信号</label>
<span class="profile_meta_value">imooc--com</span>
</p> <p class="profile_meta">
<label class="profile_meta_label">功能介绍</label>
<span class="profile_meta_value">免费的IT技术视频学习、分享网站。可以学习在线编程、前端开发技术、Python、JAVA、C++、安卓开发等互联网技术。</span>
</p> </div>
<span class="profile_arrow_wrp" id="js_profile_arrow_wrp">
<i class="profile_arrow arrow_out"></i>
<i class="profile_arrow arrow_in"></i>
</span>
</div>
</div> <div class="rich_media_content " id="js_content"> <p><span style="color: rgb(255, 104, 39);"><em>文章来源:慕课网手记用户</em></span></p><p><br /></p><p>团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。</p><p><br /></p><p>否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。</p><p><br /></p><p>下面是<span style="color: rgb(0, 122, 170);"><strong>**[ThoughtBot]**</strong></span> 的Git使用规范流程。我从中学到了很多,推荐你也这样使用Git。</p><p><br /></p><p><br /></p><p><img data-s="300,640" data-type="png" data-src="http://mmbiz.qpic.cn/mmbiz/QWwuAJUbQpMotSQM47gnQGp067OnAia66xFy7jdMp2kz850uy6bpL9KCqCniaHVzcVAibPO9zjhficeiaUGGupsooaQ/0?wx_fmt=png" data-ratio="0.814748201438849" data-w="" /><br /></p><p><br /></p><p><span style="color: rgb(255, 76, 0);"><strong><em>第一步:新建分支</em></strong></span></p><p><br /></p><p>首先,每次开发新功能,都应该新建一个单独的分支(这方面可以参考<span style="color: rgb(0, 122, 170);">**[《Git分支管理策略》]**</span>)。</p><p><br /></p><p># 获取主干最新代码</p><p><br /></p><p>$ git checkout master</p><p>$ git pull</p><p><br /></p><p># 新建一个开发分支myfeature</p><p><br /></p><p>$ git checkout -b myfeature</p><p><br /></p><p><span style="color: rgb(255, 76, 0);"><em><strong>第二步:提交分支commit</strong></em></span></p><p><br /></p><p>分支修改后,就可以提交commit了。</p><p><br /></p><p>$ git add --all</p><p>$ git status</p><p>$ git commit --verbose</p><p><br /></p><p>`git add` 命令的all参数,表示保存所有变化(包括新建、修改和删除)。从Git 2.0开始,all是 git add 的默认参数,所以也可以用 `git add .` 代替。</p><p><br /></p><p>`git status` 命令,用来查看发生变动的文件。</p><p><br /></p><p>`git commit` 命令的verbose参数,会列出 <span style="color: rgb(0, 122, 170);"><strong>**[diff]**</strong></span> 的结果。</p><p><br /></p><p><em><span style="color: rgb(255, 76, 0);"><strong>第三步:撰写提交信息</strong></span></em></p><p><br /></p><p>提交commit时,必须给出完整扼要的提交信息,下面是一个范本。</p><p><br /></p><p>Present-tense summary under 50 characters</p><p><br /></p><p>* More information about commit (under 72 characters).</p><p>* More information about commit (under 72 characters).</p><p><br /></p><p>http://project.management-system.com/ticket/123</p><p><br /></p><p>第一行是不超过50个字的提要,然后空一行,罗列出改动原因、主要变动、以及需要注意的问题。最后,提供对应的网址(比如Bug ticket)。</p><p><br /></p><p><span style="color: rgb(255, 76, 0);"><em><strong>第四步:与主干同步</strong></em></span></p><p><br /></p><p>分支的开发过程中,要经常与主干保持同步。</p><p><span style="line-height: 1.6;"><br /></span></p><p><span style="line-height: 1.6;">$ git fetch origin</span><br /></p><p>$ git rebase origin/master</p><p><br /></p><p><span style="color: rgb(255, 76, 0);"><em><strong>第五步:合并commit</strong></em></span></p><p><br /></p><p>分支开发完成后,很可能有一堆commit,但是合并到主干的时候,往往希望只有一个(或最多两三个)commit,这样不仅清晰,也容易管理。</p><p><br /></p><p>那么,怎样才能将多个commit合并呢?这就要用到 `git rebase` 命令。</p><p><br /></p><p>$ git rebase -i origin/master</p><p><br /></p><p>`git rebase`命令的i参数表示互动(interactive),这时git会打开一个互动界面,进行下一步操作。</p><p><br /></p><p>下面采用<span style="color: rgb(0, 122, 170);"><strong>**[Tute Costa]**</strong></span>的例子,来解释怎么合并commit。</p><p><br /></p><p><img data-s="300,640" data-type="jpeg" data-src="http://mmbiz.qpic.cn/mmbiz/QWwuAJUbQpMotSQM47gnQGp067OnAia665M0Sk3TqwK3q5UgwaRZxiblCsqhw2J2WBcyicfwXYJVgD2Q4BPdKibTtQ/0?wx_fmt=jpeg" data-ratio="0.5467625899280576" data-w="" /><br /></p><p>上面的互动界面,先列出当前分支最新的4个commit(越下面越新)。每个commit前面有一个操作命令,默认是pick,表示该行commit被选中,要进行rebase操作。</p><p><br /></p><p>4个commit的下面是一大堆注释,列出可以使用的命令。</p><p><br /></p><p>&nbsp;- ` pick`:正常选中</p><p><br /></p><p>&nbsp;- `reword`:选中,并且修改提交信息;</p><p><br /></p><p>&nbsp;- `edit`:选中,rebase时会暂停,允许你修改这个commit</p><p><br /></p><p>&nbsp;- `squash`:选中,会将当前commit与上一个commit合并</p><p><br /></p><p>&nbsp;- `fixup`:与squash相同,但不会保存当前commit的提交信息</p><p><br /></p><p>&nbsp;- `exec`:执行其他shell命令</p><p><br /></p><p>上面这6个命令当中,`squash`和`fixup`可以用来合并commit。先把需要合并的commit前面的动词,改成`squash`(或者s)。</p><p><br /></p><p><span style="line-height: 1.6;">pick 07c5abd Introduce OpenPGP and teach basic usage</span><br /></p><p><span style="line-height: 1.6;"><br /></span></p><p>s de9b1eb Fix PostChecker::Post#urls</p><p><br /></p><p>s 3e7ee36 Hey kids, stop all the highlighting</p><p><br /></p><p>pick fa20af3 git interactive rebase, squash, amend</p><p><br /></p><p>这样一改,执行后,当前分支只会剩下两个commit。第二行和第三行的commit,都会合并到第一行的commit。提交信息会同时包含,这三个commit的提交信息。</p><p><br /></p><p><img data-s="300,640" data-type="jpeg" data-src="http://mmbiz.qpic.cn/mmbiz/QWwuAJUbQpMotSQM47gnQGp067OnAia66MH9AdriaND7kBRE8AJKD2JWibdbCocz5tvVjuEwrmkjbc0thbOkcCHOQ/0?wx_fmt=jpeg" data-ratio="0.302158273381295" data-w="" /><br /></p><p>如果将第三行的`squash`命令改成`fixup`命令。</p><p><br /></p><p><span style="line-height: 1.6;">pick 07c5abd Introduce OpenPGP and teach basic usage</span><br /></p><p>s de9b1eb Fix PostChecker::Post#urls</p><p>f 3e7ee36 Hey kids, stop all the highlighting</p><p>pick fa20af3 git interactive rebase, squash, amend</p><p><br /></p><p>运行结果相同,还是会生成两个commit,第二行和第三行的commit,都合并到第一行的commit。但是,新的提交信息里面,第三行commit的提交信息,会被注释掉。</p><p><br /></p><p><img data-s="300,640" data-type="jpeg" data-src="http://mmbiz.qpic.cn/mmbiz/QWwuAJUbQpMotSQM47gnQGp067OnAia66u0kbNcYia97XJBPCIHBCqMTm9GOPiaXoZQfktoctL6icAKPpFgyH762wQ/0?wx_fmt=jpeg" data-ratio="0.29136690647482016" data-w="" /><br /></p><p>`squash`和`fixup`命令,还可以当作命令行参数使用,自动合并commit。</p><p><br /></p><p>$ git commit --fixup &nbsp;</p><p>$ git rebase -i --autosquash&nbsp;</p><p><br /></p><p>这个用法这里就不解释了。</p><p><br /></p><p><span style="color: rgb(255, 76, 0);"><em><strong>第六步:推送到远程仓库</strong></em></span></p><p><br /></p><p>合并commit后,就可以推送当前分支到远程仓库了。</p><p><br /></p><p>$ git push --force origin myfeature</p><p><br /></p><p>`git push`命令要加上force参数,因为rebase以后,分支历史改变了,跟远程分支不一定兼容,有可能要强行推送。</p><p><br /></p><p><span style="color: rgb(255, 76, 0);"><em><strong>第七步:发出Pull Request</strong></em></span></p><p><br /></p><p>提交到远程仓库以后,就可以发出 Pull Request 到master分支,然后请求别人进行代码review,确认可以合并到master。</p><p><br /></p><p>作者:阮一峰</p><p><br /></p><p>文章源自:http://www.ruanyifeng.com/blog/2015/08/git-use-process.html</p><p><br /></p><p style="line-height: 25.6px; white-space: normal;"><strong><span style="color: rgb(255, 41, 65);">更多干货文章或者也想在微信里看到自己的文章,四爷在这里等你:</span></strong></p><p style="line-height: 25.6px; white-space: normal;"><strong><span style="color: rgb(255, 41, 65);">&nbsp;http://www.imooc.com/article</span></strong></p><p style="line-height: 25.6px; white-space: normal;"><strong style="line-height: 25.6px; max-width: 100%; color: rgb(25, 24, 23); white-space: pre-wrap; box-sizing: border-box !important; word-wrap: break-word !important; background-color: rgb(255, 255, 255);"></strong></p><p style="line-height: 25.6px; white-space: normal;"><br /></p><section style="line-height: 25.6px; white-space: normal; widows: auto; max-width: 100%; color: rgb(62, 62, 62); box-sizing: border-box !important; word-wrap: break-word !important; background-color: rgb(255, 255, 255);"><section class="Powered-by-XIUMI V5" style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><section class="" style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"><section class="" style="max-width: 100%; box-sizing: border-box; color: rgb(25, 24, 23); word-wrap: break-word !important;"><section class="tn-html-box inner ng-binding" style="max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;"><section style="margin: 1em; padding: 0.5em 1em; max-width: 100%; box-sizing: border-box; text-align: center; border: 1px solid rgb(204, 204, 204); min-width: -webkit-min-content; border-radius: 0.3em; word-wrap: break-word !important;"><section style="margin-top: -1em; max-width: 100%; box-sizing: border-box; line-height: 1.4em; border: none; word-wrap: break-word !important;"><fieldset style="padding: 15px; max-width: 100%; min-width: 0px; border: 1px dotted rgb(0, 187, 236); line-height: 2em; font-family: inherit; min-height: 1.5em; border-bottom-right-radius: 15px; border-bottom-left-radius: 10px; box-sizing: border-box !important; word-wrap: break-word !important;"><legend style="max-width: 100%; font-family: inherit; box-sizing: border-box !important; word-wrap: break-word !important;"><p style="padding-right: 20px; padding-bottom: 4px; padding-left: 20px; max-width: 100%; word-wrap: normal; min-height: 1.5em; white-space: pre-wrap; line-height: 2em; color: rgb(255, 255, 255); font-size: 14px; word-break: normal; border-bottom-right-radius: 100%; border-bottom-left-radius: 100%; box-sizing: border-box !important; background-color: rgb(0, 187, 236);"><span style="max-width: 100%; line-height: 1.5em; font-size: 16px; box-sizing: border-box !important; word-wrap: break-word !important;"><strong style="max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;">慕课网</strong></span></p></legend><p style="max-width: 100%; word-wrap: normal; min-height: 1.5em; white-space: pre-wrap; word-break: normal; line-height: 1.5em; box-sizing: border-box !important;"><span style="max-width: 100%; line-height: 2em; font-size: 14px; color: rgb(63, 63, 63); box-sizing: border-box !important; word-wrap: break-word !important;">中国最大的IT技能学习平台</span></p><p style="max-width: 100%; word-wrap: normal; min-height: 1.5em; white-space: pre-wrap; word-break: normal; line-height: 1.5em; box-sizing: border-box !important;"><span style="max-width: 100%; line-height: 2em; box-sizing: border-box !important; word-wrap: break-word !important;">微信号:imooc--com</span></p></fieldset><p style="margin-bottom: 15px; max-width: 100%; min-height: 1em; white-space: pre-wrap; text-indent: 0em; line-height: 1.5em; box-sizing: border-box !important; word-wrap: break-word !important;"><span style="max-width: 100%; line-height: 1.5em; font-size: 12px; box-sizing: border-box !important; word-wrap: break-word !important;"><img data-w="258" data-ratio="1" data-s="300,640" data-type="jpeg" width="auto" data-src="http://mmbiz.qpic.cn/mmbiz/gPKgoIgeYlONGe0dpYHOzJZD3NLRYcYHMqsRZTow5Ec9jURrrpZSRKGMqVWhiapTufBlRYicEibkyloU6XibVtMDLA/640?wx_fmt=jpeg" style="box-sizing: border-box !important; word-wrap: break-word !important; width: auto !important; visibility: visible !important;" /><br style="max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;" /><span style="max-width: 100%; line-height: 1.5em; color: rgb(89, 89, 89);"><strong style="max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;">长按二维码点击“识别图中二维码”即可关注</strong></span></span></p><p style="max-width: 100%; min-height: 1em; white-space: pre-wrap; line-height: 1.5em; box-sizing: border-box !important; word-wrap: break-word !important;"><span style="max-width: 100%; line-height: 1.5em; font-size: 12px; color: rgb(255, 0, 0); box-sizing: border-box !important; word-wrap: break-word !important;">微博</span><span style="max-width: 100%; line-height: 1.5em; font-size: 12px; box-sizing: border-box !important; word-wrap: break-word !important;">: @慕课网</span></p><p style="max-width: 100%; min-height: 1em; white-space: pre-wrap; box-sizing: border-box !important; word-wrap: break-word !important;"><br /></p></section></section></section></section></section></section></section><p><br /></p>
</div>
<script type="text/javascript">
var first_sceen__time = (+new Date()); if ("" == 1 && document.getElementById('js_content'))
document.getElementById('js_content').addEventListener("selectstart",function(e){ e.preventDefault(); }); (function(){
if (navigator.userAgent.indexOf("WindowsWechat") != -1){
var link = document.createElement('link');
var head = document.getElementsByTagName('head')[0];
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_winwx2c9cd6.css";
head.appendChild(link);
}
})();
</script>
<link rel="stylesheet" type="text/css" href="http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg/page_mp_article_improve_combo2d1390.css"> <div class="rich_media_tool" id="js_toobar3">
<a class="media_tool_meta meta_primary" id="js_view_source" href="javascript:void(0);">阅读原文</a>
<div id="js_read_area3" class="media_tool_meta tips_global meta_primary" style="display:none;">阅读 <span id="readNum3"></span></div> <span style="display:none;" class="media_tool_meta meta_primary tips_global meta_praise" id="like3">
<i class="icon_praise_gray"></i><span class="praise_num" id="likeNum3"></span>
</span> <a id="js_report_article3" style="display:none;" class="media_tool_meta tips_global meta_extra" href="javascript:void(0);">投诉</a> </div> </div> <div class="rich_media_area_primary sougou" id="sg_tj" style="display:none"> </div> <div class="rich_media_area_extra"> <div class="mpda_bottom_container" id="js_bottom_ad_area"> </div> <div id="js_iframetest" style="display:none;"></div> </div> </div>
<div id="js_pc_qr_code" class="qr_code_pc_outer" style="display:none;">
<div class="qr_code_pc_inner">
<div class="qr_code_pc">
<img id="js_pc_qr_code_img" class="qr_code_pc_img">
<p>微信扫一扫<br>关注该公众号</p>
</div>
</div>
</div> </div>
</div> <script>
var __DEBUGINFO = {
debug_js : "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/debug/console2ca724.js",
safe_js : "http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/safe/moonsafe2d5cb8.js",
res_list: []
};
<script id="qqmusic_tpl" type="text/html">
<span id="qqmusic_main_<#=comment_id#>_<#=posIndex#>" class="db qqmusic_area <#if(!musicSupport){#> unsupport<#}#>">
<span class="tc tips_global unsupport_tips" <#if(show_not_support!==true){#>style="display:none;"<#}#>>
当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放 </span>
<span class="db qqmusic_wrp">
<span class="db qqmusic_bd">
<span id="qqmusic_play_<#=musicid#>_<#=posIndex#>" class="play_area">
<i class="icon_qqmusic_switch"></i>
<img src="http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/qqmusic/icon_qqmusic_default.2x26f1f1.png" alt="" class="pic_qqmusic_default">
<img src="<#=music_img#>" data-autourl="<#=audiourl#>" data-musicid="<#=musicid#>" class="qqmusic_thumb" alt="">
</span>
<a id="qqmusic_home_<#=musicid#>_<#=posIndex#>" href="javascript:void(0);" class="access_area">
<span class="qqmusic_songname"><#=music_name#></span>
<span class="qqmusic_singername"><#=singer#></span>
<span class="qqmusic_source"><img src="http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/qqmusic/icon_qqmusic_source263724.png" alt=""></span>
</a>
</span>
</span>
</span>
</script>
</body>