最全面的Git 使用规范装逼指南[转载]
<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> - ` pick`:正常选中</p><p><br /></p><p> - `reword`:选中,并且修改提交信息;</p><p><br /></p><p> - `edit`:选中,rebase时会暂停,允许你修改这个commit</p><p><br /></p><p> - `squash`:选中,会将当前commit与上一个commit合并</p><p><br /></p><p> - `fixup`:与squash相同,但不会保存当前commit的提交信息</p><p><br /></p><p> - `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 </p><p>$ git rebase -i --autosquash </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);"> 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>
最全面的Git 使用规范装逼指南[转载]的更多相关文章
- 最全面的 Android 编码规范指南
最全面的 Android 编码规范指南 本文word文档下载地址:http://pan.baidu.com/s/1bXT75O 1. 前言 这份文档参考了 Google Java 编程风格规范和 Go ...
- JavaScript装逼指南
如何写JavaScript才能逼格更高呢?怎样才能组织JavaScript才能让别人一眼看出你不简单呢?是否很期待别人在看完你的代码之后感叹一句“原来还可以这样写”呢?下面列出一些在JavaScrip ...
- JavaScript 装逼指南
Summary 本文秉承着 你看不懂是你sb,我写的代码就要牛逼 的理念来介绍一些js的装逼技巧. 下面的技巧,后三个,请谨慎用于团队项目中(主要考虑到可读性的问题),不然,leader 干你没商量. ...
- 这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已
Javascript是一门很吊的语言,我可能学了假的JavaScript,哈哈,大家还有什么推荐的,补充送那啥邀请码. 本文秉承着:你看不懂是你SB,我写的代码就要牛逼. 1.单行写一个评级组件 &q ...
- processon完全装逼指南
一.引言 作为一名IT从业者,不仅要有扎实的知识储备,出色的业务能力,还需要具备一定的软实力.软实力体现在具体事务的处理能力,包括沟通,协作,团队领导,问题的解决方案等,这些能力在关键时刻比硬性的技术 ...
- 菜鸟装逼指南--linux内核中听过就能记住的概念
打算给我们部门弄个内部分享.发现大家对一些底层知识的认知停留在一句一句的,比如听说JVM使用-XX:-UseBiasedLocking取消偏向锁可以提高性能,因为它只适用于非多线程高并发应用.使用数字 ...
- Runtime 全方位装逼指南
Runtime是什么?见名知意,其概念无非就是“因为 Objective-C 是一门动态语言,所以它需要一个运行时系统……这就是 Runtime 系统”云云.对博主这种菜鸟而言,Runtime 在实际 ...
- 一行能装逼的JavaScript代码的延伸
前段就是坑,入坑水真深. 先看看一个黑科技, 纳尼,这是什么东西. (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+ ...
- 前端 JSer 装逼手册
阅读 8143收藏 2352016-7-18 SegmentFault 分享:吉祥物 @ SegmentFault 在装逼成本越来越高的 JS 圈,是时候充值一下了 -- 题记. 作者:kenberk ...
随机推荐
- 201621123008 《Java程序设计》 第11周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 源代码阅读:多线程程序BounceThread 1.1 BallR ...
- Spring MVC 数据绑定和表单标签库
数据绑定是将用户输入绑定到领域模型的一种特性.作用是将 POJO 对象的属性值与表单组件的内容绑定. 数据绑定的好处: 1. 类型总是为 String 的 HTTP 请求参数,可用于填充不同类型的对象 ...
- Minimum Window Substring LT76
Given a string S and a string T, find the minimum window in S which will contain all the characters ...
- jetbrains产品的一些使用技巧
取消界限: 设置默认字符长度的准线,在图一中进行修改目前上限是1000 快捷键的使用: crtl+D:复制当前代码,获取多个类似内容的时候可以直接使用. crtl+F:查找代码中的内容,可以使用正则表 ...
- 35、输入框(UITextField)密码明暗文切换
- (IBAction)pwdTextSwitch:(UIButton *)sender { // 前提:在xib中设置按钮的默认与选中状态的背景图 // 切换按钮的状态 sender.selecte ...
- hadoop web管理界面不能打开问题
centos 7 安装好hadoop的,hadoop和yarn都正常启动,但是yarn的web界面(8088),hdfs的web界面(50070)都不能打开,防火墙是处于关闭状态. 修改默认启动级别, ...
- php 操作redis 以及几个常用命令
redis-cli -h host -p port -a password 首次进入redis 进行绑定ip和端口号 del key 删除指定key exists key 检查指定key是否存 ...
- java正则表达式笔记
import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntax ...
- excel2007自定义菜单项学习
参考: http://club.excelhome.net/thread-1288002-1-1.html http://club.excelhome.net/thread-709306-1-1.ht ...
- ActiveMQ实战之 Queue点对点消息
前言:ActiveMQ消息模式点对点编码 运行:先运行消费者在开启消息生产者即可接收到消息 消息生产者 /** * @摘要 测试发送单条数据的类 */ public class ZMQOneSendT ...