git

Posted on

git - the simple guide - no deep shit!

git - 简易指南

助你开始使用 git 的简易指南,木有高深内容,;)。 Tweet

作者:罗杰·杜德勒 感谢:@tfnico, @fhd and Namics 其他语言 english, deutsch, español, français, italiano, nederlands, português, русский, türkçe, မြန်မာ, 日本語, 한국어 如有纰漏,请到 github 填报

安装

下载 git OSX 版

下载 git Windows 版

下载 git Linux 版

创建新仓库

创建新文件夹,打开,然后执行

git init 以创建新的 git 仓库。

检出仓库

执行如下命令以创建一个本地仓库的克隆版本:

git clone /path/to/repository 如果是远端服务器上的仓库,你的命令会是这个样子:

git clone username@host:/path/to/repository

工作流

你的本地仓库由 git 维护的三棵“树”组成。第一个是你的

工作目录 ,它持有实际文件;第二个是

缓存区(Index) ,它像个缓存区域,临时保存你的改动;最后是

HEAD ,指向你最近一次提交后的结果。

添加与提交

你可以计划改动(把它们添加到缓存区),使用如下命令:

git add

git add /* 这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:

git commit -m "代码提交信息" 现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。

推送改动

你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:

git push origin master 可以把 master 换成你想要推送的任何分支。 如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:

git remote add origin 如此你就能够将你的改动推送到所添加的服务器上去了。

分支

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”。在其他分支上进行开发,完成后再将它们合并到主分支上。

创建一个叫做“feature_x”的分支,并切换过去:

git checkout -b feature_x 切换回主分支:

git checkout master 再把新建的分支删掉:

git branch -d feature_x 除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的:

git push origin

更新与合并

要更新你的本地仓库至最新改动,执行:

git pull 以在你的工作目录中 获取(fetch) 并 合并(merge) 远端的改动。 要合并其他分支到你的当前分支(例如 master),执行:

git merge 两种情况下,git 都会尝试去自动合并改动。不幸的是,自动合并并非次次都能成功,并可能导致 冲突(conflicts)。 这时候就需要你修改这些文件来人肉合并这些 冲突(conflicts) 了。改完之后,你需要执行如下命令以将它们标记为合并成功:

git add 在合并改动之前,也可以使用如下命令查看:

git diff

标签

在软件发布时创建标签,是被推荐的。这是个旧有概念,在 SVN 中也有。可以执行如下命令以创建一个叫做 1.0.0 的标签:

git tag 1.0.0 1b2e1d63ff 1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。使用如下命令获取提交 ID:

git log 你也可以用该提交 ID 的少一些的前几位,只要它是唯一的。

替换本地改动

假如你做错事(自然,这是不可能的),你可以使用如下命令替换掉本地改动:

git checkout -- 此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到缓存区的改动,以及新文件,都不受影响。

假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:

git fetch origin

git reset --hard origin/master

有用的贴士

内建的图形化 git:

gitk 彩色的 git 输出:

git config color.ui true 显示历史记录时,只显示一行注释信息:

git config format.pretty oneline 交互地添加文件至缓存区:

git add -i

链接与资源

图形化界面

指南与手册

评论

Please enable JavaScript to view the comments powered by Disqus.

bash

Posted on

bash: useradd :command not found

bash: useradd :command not found

在网上查了一下,发现应该如下操作: 利用su - ,而不是su进入root,然后再敲useradd test1,这样就OK了. 注意:是su - 而不是su,因为su是只取得ROOT的权限,su - 是取得ROOT的权限后还执行ROOT的PROFILE来取得ROOT的环境变量。

加了这个减号的目的是使环境变量和欲转换的用户相同、不加-是取得用户的临时权限 来源: [http://hi.baidu.com/peng123/item/0751b74478ccefeabdf451f0](http://hi.baidu.com/peng123/item/0751b74478ccefeabdf451f0) 对于bash:useradd:command not found错误

在命令行中添加用户时显示bash:useradd:command not found的错误,在网上查了一下资料。 思路: 在UNIX系统里面,每个系统用户都由自己的环境变量来定义自己登录上来的shell、终端类型、路径等。Linux下Bshell用户登录后执行主目录下的.bash_profile,Cshell用户执行.cshrc_profile文件。 当以普通用户登录主机,而此用户的环境里没有定义系统命令所在的路径,如/usr/bin,/usr/sbin等;或在一些情况下TELNET上主机后也会遗失环境变量。 解决方法: 1.在绝对路径/usr/sbin中执行; 2.用root用户执行命令。用“su -”可以取得root用户的权限和环境(注:是“su -”不是“su”,因为“su”只取得root的权限,“su -”取得root权限后还执行root的profile来取得root的环境变量) 3.如果确定要使用非root用户的当前用户来执行命令,需要把系统路径加到该用户的.bash_profile或者.cshrc_profile文件中去 附: useradd指令的用法 作用:账户建立或更新使用者的信息 语法:useradd <选项> 用户名 常用参数:

   1. -c comment
      新账号password档的说明栏
   2. -d home_dir
      新账号的家目录路径
   3. -e expire_date
      账号的截止日期,格式为MM/DD/YY
   4. -f inactive_days
      账号过期几日后永久封停。当值为0时账号立即被封停,当值为-1时则是关闭这个功能,默认为-1
   5. -g initial_group
      group名称或以数字来做为使用者登陆的起始组。组名必须是存在的名称
   6. -G group,[...]
      定义用户所属的其他组,可以有多个
   7. -m [-k skeleton_dir]
      用户家目录如果不存在则自动建立。如果使用-k选项,skeleton_dir内的文档会被复制到家目录下,而/etc/skel目录下的文档也会被复制过来
   8. -M
      强制不建立用户家目录,即使/etc/login.defs设定要建立家目录
   9. -s
      使用者登陆后使用的shell名称。预设是不填写,这样系统会指定预设的登陆shell
   10. -u
      手动设定用户的ID值,ID值必须是唯一的。

  userdel指令的用法

来源: [http://blog.163.com/bhjbhj@yeah/blog/static/6792210920128351534109/](http://blog.163.com/bhjbhj@yeah/blog/static/6792210920128351534109/)

git如何merge github forked repository里的代码更新 haoji

Posted on

git如何merge github forked repository里的代码更新 haojii

haojii

一个专注于技术的IT男

Search

Skip to primary content

Skip to secondary content

Post navigation

← Previous Next →

git如何merge github forked repository里的代码更新?

Posted on 2011/08/20 by Jacky

问题是这样的,github里有个项目ruby-gmail,我需要从fork自同一个项目的另一个repository拿一些Bug Fix的代码 link1:https://github.com/dcparker/ruby-gmail (原作者dcparker的repository) link2:https://github.com/jihao/ruby-gmail (我从link1 fork的repository) link3:https://github.com/geoffyoungs/ruby-gmail (geoffyoungs 从link1 fork的repository,然后他有些Bug修改,但是没被merge回原作者的link1的repository)

也就我git clone repository到本地后,发现link3有我想要的代码,我要把link3上的改动merge到我的repository上,避免我花精力改相同的bug

git如何merge github forked repository里的更新? 具体做法是下面三步,以前没用git这么搞过,知道之后其实蛮简单 **

  1. git remote add geoffyoungs http://github.com/geoffyoungs/ruby-gmail.git 2. >git fetch geoffyoungs 3. >git merge geoffyoungs/master **

本地的repository看上去是这样的:

git remote -v geoffyoungs http://github.com/geoffyoungs/ruby-gmail.git (fetch) geoffyoungs http://github.com/geoffyoungs/ruby-gmail.git (push) origin http://jihao@github.com/jihao/ruby-gmail.git (fetch) origin http://jihao@github.com/jihao/ruby-gmail.git (push) >git branch -a /* master remotes/geoffyoungs/gh-pages remotes/geoffyoungs/master remotes/origin/HEAD -> origin/master remotes/origin/adimircolen-master remotes/origin/gh-pages remotes/origin/master

想要保存喜欢过的文章吗?立即关联或创建无觅帐号

不再提示!

0 正在加载推荐文章

其他文章:

无觅 This entry was posted in 小问题 and tagged git, github, gmail by Jacky. Bookmark the permalink.

2 thoughts on “git如何merge github forked repository里的代码更新?”

  1. Christopher Meng on 2012/07/13 at 13:03 said:

什么时候直接网页操作就好了。。。

  1. lsff on 2013/01/07 at 10:38 said:

哇,这技术博客太漂亮了,博主自己弄得么?

发表评论 取消回复

电子邮件地址不会被公开。 必填项已用 /* 标注

姓名 /*

电子邮件 /*

站点

评论

您可以使用这些 HTML 标签和属性:

Proudly powered by WordPress

无觅相关文章插件,快速提升流量

Awk_百度百科

Posted on

Awk_百度百科

分享到

百度分享

新闻网页贴吧知道音乐图片视频地图百科文库


帮助

Awk

目录 awk释义awk简介调用方式语法内置变量内置函数命令行使用详细介绍变量运算与判断流程控制

  1. 1
  2. 2 函数输入输出展开awk释义awk简介调用方式语法内置变量内置函数命令行使用详细介绍变量运算与判断流程控制

  3. 1

  4. 2 函数输入输出展开

编辑本段awk释义

英文原义:Aho、Weinberger、Kernighan

中文释义:三位创造者Aho、Weinberger和Kernighan统称

编辑本段awk简介

AWK是一种优良的文本处理工具。它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母)的最大功能取决于一个人所拥有的知识。AWK 提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。实际上 AWK 的确拥有自己的语言:AWK 程序设计语言, 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

最简单地说, AWK 是一种用于处理文本的编程语言工具。AWK 在很多方面类似于 shell 编程语言,尽管 AWK 具有完全属于其本身的语法。它的设计思想来源于 SNOBOL4 、sed 、Marc Rochkind设计的有效性语言、语言工具 yacc 和 lex ,当然还从 C 语言中获取了一些优秀的思想。在最初创造 AWK 时,其目的是用于文本处理,并且这种语言的基础是,只要在输入数据中有模式匹配,就执行一系列指令。该实用工具扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式。如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。 尽管操作可能会很复杂,但命令的语法始终是:

awk '{pattern + action}' 或者 awk 'pattern {action}' 其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号 ({}) 不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。

gawk 是 AWK 的 GNU 版本。 一般的UNIX作业系统,本身即附有AWK,不同的UNIX作业系统所附的AWK其版本亦不尽相同,若读者所使用的系统上未附有AWK,可通过 anonymous ftp 到下列地方取得:

phi.sinica.edu.tw:/pub/gnu ftp.edu.tw:/UNIX/gnu

prep.ai.mit.edu:/pub/gnu 注 解:一种编程语言,因其模式匹配语法而特别有用,通常用于数据检索和数据转换。一个GNU版本称为Gawk。

编辑本段调用方式

awk提供了适应多种需要的不同解决方案,它们是:

一、 awk命令行,你可以象使用普通UNIX命令一样使用awk,在命令行中你也可以使用awk程序设计语言,虽然awk支持多行的录入,但是录入长长的命令行并保证其正确无误却是一件令人头疼的事,因此,这种方法一般只用于解决简单的问题。当然,你也可以在shell script程序中引用awk命令行甚至awk程序脚本。 二、使用-f选项调用awk程序。awk允许将一段awk程序写入一个文本文件,然后在awk命令行中用-f选项调用并执行这段程序。具体的方法我们将在后面的awk语法中讲到。

三、利用命令解释器调用awk程序:利用UNIX支持的命令解释器功能,我们可以将一段awk程序写入文本文件,然后在它的第一行加上: /#!/bin/awk -f

并赋予这个文本文件以执行的权限。这样做之后,你就可以在命令行中用类似于下面这样的方式调用并执行这段awk程序了。 awk脚本文本名 待处理文件

编辑本段语法

与其它UNIX命令一样,awk拥有自己的语法:

awk [ -F re] [parameter...] ['prog'] [-f progfile] 参数说明:

-F re:允许awk更改其字段分隔符。 parameter: 该参数帮助为不同的变量赋值。

'prog': awk的程序语句段。这个语句段必须用单拓号:'和'括起,以防被shell解释。这个程序语句段的标准形式为: 'pattern {action}'

其中pattern参数可以是egrep正则表达式中的任何一个,它可以使用语法/re/再加上一些样式匹配技巧构成。与sed类似,你也可以使用"," 分开两样式以选择某个范围。关于匹配的细节,你可以参考附录,如果仍不懂的话,找本UNIX书学学grep和sed(本人是在学习ed时掌握匹配技术的)。action参数总是被大括号包围,它由一系列awk语句组成,各语句之间用";"分隔。awk解释它们,并在pattern给定的样式匹配的记录上执行其操作。与shell类似,你也可以使用“/#”作为注释符,它使“/#”到行尾的内容成为注释,在解释执行时,它们将被忽略。你可以省略pattern和 action之一,但不能两者同时省略,当省略pattern时没有样式匹配,表示对所有行(记录)均执行操作,省略action时执行缺省的操作——在标准输出上显示。 -f progfile:允许awk调用并执行progfile指定有程序文件。progfile是一个文本文件,他必须符合awk的语法。

in_file:awk的输入文件,awk允许对多个输入文件进行处理。值得注意的是awk不修改输入文件。如果未指定输入文件,awk将接受标准输入,并将结果显示在标准输出上。awk支持输入输出重定向。

编辑本段内置变量

前面说过,awk处理的工作与数据库的处理方式有相同之处,其相同处之一就是awk支持对记录和字段的处理,其中对字段的处理是grep和sed不能实现的,这也是awk优于二者的原因之一。在awk中,缺省的情况下总是将文本文件中的一行视为一个记录,而将一行中的某一部分作为记录中的一个字段。为了操作这些不同的字段,awk借用shell的方法,用1,2,3...这样的方式来顺序地表示行(记录)中的不同字段。特殊地,awk用0表示整个行(记录)。不同的字段之间是用称作分隔符字符分隔开的。系统默认的分隔符是空格。awk允许在命令行中用-F re的形式来改变这个分隔符。事实上,awk用一个内置的变量FS来记忆这个分隔符。awk中有好几个这样的内置变量,例如,记录分隔符变量RS、当前工作的记录数NR等等,本文后面的附表列出了全部的内置变量。这些内置的变量可以在awk程序中引用或修改,例如,你可以利用NR变量在模式匹配中指定工作范围,也可以通过修改记录分隔符RS让一个特殊字符而不是换行符作为记录的分隔符。

例:显示文本文件myfile中第七行到第十五行中以字符%分隔的第一字段,第三字段和第七字段: awk -F % 'NR==7,NR==15 {print $1 $3 $7}' myfile

编辑本段内置函数

awk 之所以成为一种优秀的程序设计语言的原因之一是它吸收了某些优秀的程序设计语言(例如C)语言的许多优点。这些优点之一就是内置函数的使用,awk定义并支持了一系列的内置函数,由于这些函数的使用,使得awk提供的功能更为完善和强大,例如,awk使用了一系列的字符串处理内置函数(这些函数看起来与C 语言的字符串处理函数相似,其使用方式与C语言中的函数也相差无几),正是由于这些内置函数的使用,使awk处理字符串的功能更加强大。本文后面的附录中列有一般的awk所提供的内置函数,这些内置函数也许与你的awk版本有些出入,因此,在使用之前,最好参考一下你的系统中的联机帮助

内置的字符串函数 gsub(r,s)在整个$0中用s代替rgsub(r,s,t)在整个t中用s替代rindex(s,t)返回s中字符串t的第一位置length(s)返回s长度match(s,r)测试s是否包含匹配r的字符串split(s,a,fs)在fs上将s分成序列asprint(fmt,exp)返回经fmt格式化后的expsub(r,s)用$0中最左边最长的子串代替ssubstr(s,p)返回字符串s中从p开始的后缀部分substr(s,p,n)返回字符串s中从p开始长度为n的后缀部分

gsub函数有点类似于sed查找和替换。它允许替换一个字符串或字符为另一个字符串或字符,并以正则表达式的形式执行。第一个函数作用于记录$0,第二个gsub函数允许指定目标,然而,如果未指定目标,缺省为$0。 index(s,t)函数返回目标字符串s中查询字符串t的首位置。length函数返回字符串s字符长度。

match函数测试字符串s是否包含一个正则表达式r定义的匹配。 split使用域分隔符fs将字符串s划分为指定序列a。

sprint函数类似于printf函数,返回基本输出格式fmt的结果字符串exp。 sub(r,s)函数将用s替代$0中最左边最长的子串,该子串被r匹配。

substr(s,p)返回字符串s在位置p后的后缀。 substr(s,p,n)同上,并指定子串长度为n。

编辑本段命令行使用

按照顺序,我们应当讲解awk程序设计的内容了,但在讲解之前,我们将用一些例子来对前面的知识进行回顾,这些例子都是在命令行中使用的,由此我们可以知道在命令行中使用awk是多么的方便。这样做的原因一方面是为下面的内容作铺垫,另一方面是介绍一些解决简单问题的方法,我们完全没有必要用复杂的方法来解决简单的问题----既然awk提供了较为简单的方法的话。

例:显示文本文件mydoc匹配(含有)字符串"sun"的所有行。 awk '/sun/' mydoc

由于显示整个记录(全行)是awk的缺省动作,因此可以省略action项。 awk '/sun/' mydoc

例:下面是一个较为复杂的匹配的示例: awk '/[Ss]un/,/[Mm]oon/ ' myfile

它将显示第一个匹配Sun或sun的行与第一个匹配Moon或moon的行之间的行,并显示到标准输出上。 例:下面的示例显示了内置变量内置函数length()的使用:

awk 'length($0)>80 {print NR}' myfile 该命令行将显示文本myfile中所有超过80个字符的行号,在这里,用0表示整个记录(行),同时,内置变量NR不使用标志符''。

例:作为一个较为实际的例子,我们假设要对UNIX中的用户进行安全性检查,方法是考察/etc下的passwd文件,检查其中的passwd字段(第二字段)是否为"/",如不为"/",则表示该用户没有设置密码,显示出这些用户名(第一字段)。我们可以用如下语句实现: /#awk -F: '$2!="/*" {printf("%s no password!\n",$1)'} /etc/passwd

在这个示例中,passwd文件的字段分隔符是“:”,因此,必须用-F:来更改默认的字段分隔符,这个示例中也涉及到了内置函数printf的使用。

编辑本段详细介绍

awk提供了有很多内置变量,如果你经常使用awk处理文本,了解这些这些内置变量的使用是很有必要的。下面看一下这些内置变量的详细介绍。

ARGC 命令行参数个数(不包括awk的选项和awk的程序内容)。 ARGIND 当前正在处理的ARGV中的文件的索引值(同时处理多个文件时会用到)。

ARGV 命令行参数序列数组,下标从0开始。 CONVFMT 数字转换格式,和C语言中的数字输出格式化类似,默认为"%.6g"。

ENVIRON 当前系统的环境变量。 ERRNO 出错时的错误信息。

FIELDWIDTHS 以空格分隔的字段宽度,如果指定此变量,awk将会用指定的宽度替换变量FS指定的分隔符。看下面的例子: [LinuxSong@test /tmp]$ cat t

abcdefasfa abcdefasfa

abcdefasfa [LinuxSong@test /tmp]$ awk 'BEGIN {FIELDWIDTHS="2 3 4"}{print $1,$2,$3}' t

ab cde fasf ab cde fasf

ab cde fasf FILENAME 当前正在处理的文件名,该变量不能在BEGIN块中使用。

FNR 当前处理的记录号。 FS 字段的分隔符,默认为空格。

IGNORECASE 如果该变量设置为非0值,在进行字符串匹配时忽略大小写。 NF 当前记录中的字段个数。

NR 已经读出的记录数。 OFMT 数字的输出格式。

OFS 输出的字段分隔符,默认为空格。 ORS 输出的记录分隔符,默认为新行。

RS 输入记录的分隔符,默认为新行。 RSTART 被match()函数匹配的字符串的起始位置,如果没有匹配则为0(从1开始)。

RLENGTH 被match()函数匹配的字符串的长度。 SUBSEP 数组中多个下标的分隔符,默认为"\034"。

编辑本段变量

如同其它程序设计语言一样,awk允许在程序语言中设置变量,事实上,提供变量的功能是程序设计语言的基本要求。

awk 提供两种变量,一种是awk内置的变量,这前面我们已经讲过,需要着重指出的是,与后面提到的其它变量不同的是,在awk程序中引用内置变量不需要使用标志符""(回忆一下前面讲过的NR的使用)。awk提供的另一种变量是自定义变量。awk允许用户在awk程序语句中定义并调用自已的变量。当然这种变量不能与内置变量及其它awk保留字相同,在awk中引用自定义变量必须在它前面加上标志符""。与C语言不同的是,awk中不需要对变量进行初始化, awk根据其在awk中第一次出现的形式和上下文确定其具体的数据类型。当变量类型不确定时,awk默认其为字符串类型。这里有一个技巧:如果你要让你的 awk程序知道你所使用的变量的明确类型,你应当在在程序中给它赋初值。在后面的实例中,我们将用到这一技巧。

编辑本段运算与判断

作为一种程序设计语言所应具有的特点之一,awk支持多种运算,这些运算与C语言提供的基本相同:如+、-、/*、/、%等等,同时,awk也支持C语言中类似++、--、+=、-=、=+、=-之类的功能,这给熟悉C语言的使用者编写awk程序带来了极大的方便。作为对运算功能的一种扩展,awk还提供了一系列内置的运算函数(如log、sqr、cos、sin等等)和一些用于对字符串进行操作(运算)的函数(如length、substr等等)。这些函数的引用大大的提高了awk的运算功能。

作为对条件转移指令的一部分,关系判断是每种程序设计语言都具备的功能,awk也不例外。awk 中允许进行多种测试,如常用的==(等于)、!=(不等于)、>(大于)、>=(大于等于)、<=(小于等于)等等,同时,作为样式匹配,还提供了~(匹配于)和!~(不匹配于)判断。 作为对测试的一种扩充,awk也支持用逻辑运算符:!(非)、&&;(与)、||(或)和括号()进行多重判断,这大大增强了awk的功能。本文的附录中列出了awk所允许的运算、判断以及操作符的优先级。

编辑本段流程控制

流程控制语句是任何程序设计语言都不能缺少的部分。任何好的语言都有一些执行流程控制的语句。awk提供的完备的流程控制语句类似于C语言,这给我们编程带来了极大的方便。

1

在awk 中两个特别的表达式,BEGIN和END,这两者都可用于pattern中(参考前面的awk语法),提供BEGIN和END的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。任何在BEGIN之后列出的操作(在{}内)将在awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和预置(初始化)变量,使用END来输出最终结果。

例:累计销售文件xs中的销售金额(假设销售金额在记录的第三字段): awk

'BEGIN { FS=":";print "统计销售金额";total=0} {print $3;total=total+$3;}

END {printf "销售金额总计:%.2f",total}' sx (注:>;是shell提供的第二提示符,如要在shell程序awk语句和awk语言中换行,则需在行尾加反斜杠\)

在这里,BEGIN预置了内部变量FS(字段分隔符)和自定义变量total,同时在扫描之前显示出输出行头。而END则在扫描完成后打印出总合计。

2

awk提供了完备的流程控制语句,其用法与C语言类似。下面我们一一加以说明:

2.1、if...else语句: 格式:

if(表达式) 语句1

else 语句2

格式中"语句1"可以是多个语句,如果你为了方便awk判断也方便你自已阅读,你最好将多个语句用{}括起来。awk分枝结构允许嵌套,其格式为: if(表达式1)

{if(表达式2) 语句1

else 语句2

} 语句3

else {if(表达式3) 语句4

else 语句5

} 语句6

当然实际操作过程中你可能不会用到如此复杂的分枝结构,这里只是为了给出其样式罢了。 2.2、while语句

格式为: while(表达式

语句 2.3、do-while语句

格式为: do

{ 语句

}while(条件判断语句) 2.4、for语句

格式为: for(初始表达式;终止条件;步长表达式)

{语句} 在awk 的 while、do-while和for语句中允许使用break,continue语句来控制流程走向,也允许使用exit这样的语句来退出。break 中断当前正在执行的循环并跳到循环外执行下一条语句。continue从当前位置跳到循环开始处执行。对于exit的执行有两种情况:当exit语句不在 END中时,任何操作中的exit命令表现得如同到了文件尾,所有模式或操作执行将停止,END模式中的操作被执行。而出现在END中的exit将导致程序终止。

编辑本段函数

定义和调用用户自己的函数是几乎每个高级语言都具有的功能,awk也不例外,但原始的awk并不提供函数功能,只有在nawk或较新的awk版本中才可以增加函数。

函数的使用包含两部分:函数的定义与函数调用。其中函数定义又包括要执行的代码(函数本身)和从主程序代码传递到该函数的临时调用。 awk函数的定义方法如下:

function 函数名(参数表){ 函数体

} 在gawk中允许将function省略为func,但其它版本的awk不允许。函数名必须是一个合法的标志符,参数表中可以不提供参数(但在调用函数时函数名后的一对括号仍然是不可缺少的),也可以提供一个或多个参数。与C语言相似,awk的参数也是通过值来传递的。

在awk 中调用函数比较简单,其方法与C语言相似,但awk比C语言更为灵活,它不执行参数有效性检查。换句话说,在你调用函数时,可以列出比函数预计(函数定义中规定)的多或少的参数,多余的参数会被awk所忽略,而不足的参数,awk将它们置为缺省值0或空字符串,具体置为何值,将取决于参数的使用方式。 awk函数有两种返回方式:隐式返回和显式返回。当awk执行到函数的结尾时,它自动地返回到调用程序,这是函数是隐式返回的。如果需要在结束之前退出函数,可以明确地使用返回语句提前退出。方法是在函数中使用形如:return 返回值 格式的语句。

例:下面的例子演示了函数的使用。在这个示例中,定义了一个名为print_header的函数,该函数调用了两个参数FileName和 PageNum, FileName参数传给函数当前使用的文件名,PageNum参数是当前页的页号。这个函数的功能是打印(显示)出当前文件的文件名,和当前页的页号。完成这个功能后,这个函数将返回下一页的页号。 nawk

'BEGIN{pageno=1;file=FILENAME pageno=print_header(file,pageno);/#调用函数print_header

printf("当前页页号是:%d\n",pageno); }

/#定义函数print_header function print_header(FileName,PageNum){

printf("%s %d\n",FileName,PageNum); >PageNum++;return PageNUm; }

}' myfile 执行这个程序将显示如下内容:

myfile 1 当前页页号是:2

编辑本段输入输出

1.读取下一条记录:

awk的next语句导致awk读取下一个记录并完成模式匹配,然后立即执行相应的操作。通常它用匹配的模式执行操作中的代码。next导致这个记录的任何额外匹配模式被忽略。 2.简单地读取一条记录

awk 的 getline语句用于简单地读取一条记录。如果用户有一个数据记录类似两个物理记录,那么getline将尤其有用。它完成一般字段的分离(设置字段变量0FNRNF NR)。如果成功则返回1,失败则返回0(到达文件尾)。如果需简单地读取一个文件,则可以编写以下代码: 例:示例getline的使用

{while(getline==1) {

/#process the inputted fields }

} 也可以使getline保存输入数据在一个字段中,而不是通过使用getline variable的形式处理一般字段。当使用这种方式时,NF被置成0,FNR和NR被增值。

用户也可以使用getline"datafile" 或

printf("hello word!\n"

"datafile"

  1. 输出记录 可以通过print 和 printf 将结果输出:

awk '{ print $1,$2 }' file 4.输出到一个命令

awk中允许用如下方式将结果输出到一个命令: printf("hello word!\n"

|"sort-t','" awk与shell script混合编程

因为awk可以作为一个shell命令使用,因此awk能与shell批处理程序很好的融合在一起,这给实现awk与shell程序的混合编程提供了可能。实现混合编程的关键是awk与shell script之间的对话,换言之,就是awk与shell script之间的信息交流:awk从shell script中获取所需的信息(通常是变量的值)、在awk中执行shell命令行、shell script将命令执行的结果送给awk处理以及shell scrit读取awk的执行结果等等。 1.awk**读取Shell script**程序变量

在awk中我们可以通过“'$**变量名'**”的方式读取sell scrpit程序中的变量。 例:在下面的示例中,我们将读取sell scrpit程序中的变量Name,该变量存放的是文本myfile的撰写者,awk将打印出这个人名。

$cat writename :

/# @(/#) /#

Name="张三" nawk 'BEGIN {name="'Name'";\ printf("\t%s\t撰写者%s\n",FILENAME,name");}\ {...}END{...}' myfile

2.**将shell命令的执行结果送给awk处理** 作为信息传送的一种方法,我们可以将一条shell命令的结果通过管道线(|)传递给awk处理:

例:示例awk处理shell命令的执行结果 $who -u | awk '{printf("%s正在执行%s\n",$2,$1)}'

该命令将打印出注册终端正在执行的程序名。 3.shell script**程序读awk**的执行结果

为了实现shell script程序读取awk执行的结果,我们可以采取一些特殊的方法,例如我们可以用变量名=awk语句的形式将awk执行的结果存放入一个shell script变量。当然也可以用管道线的方法将awk执行结果传递给shell script程序处理。 例:作为传送消息的机制之一,UNIX提供了一个向其所有用户传送消息的命令wall(意思是write to all写给所有用户),该命令允许向所有工作中的用户(终端)发送消息。为此,我们可以通过一段shell批处理程序wall.shell来模拟这一程序(事实上比较老的版本中wall就是一段shell批处理程序:

$cat wall.shell :

/# @(/#) wall.shell:发送消息给每个已注册终端 /#

cat >/tmp/$$ /#用户录入消息文本who -u | awk '{print $2}' | while read tty

do cat /tmp/$$>$tty

done 在这个程序里,awk接受who -u命令的执行结果,该命令打印出所有已注册终端的信息,其中第二个字段是已注册终端的设备名,因此用awk命令析出该设备名,然后用while read tty语句循环读出这些文件名到变量(shell script变量)tty中,作为信息传送的终结地址。

4.**在awk中执行shell命令行----**嵌入函数system() system()是一个不适合字符或数字类型的嵌入函数,该函数的功能是处理作为参数传递给它的字符串。system对这个参数的处理就是将其作为命令处理,也就是说将其当作命令行一样加以执行。这使得用户在自己的awk程序需要时可以灵活地执行命令或脚本。

例:下面的程序将使用system嵌入函数打印用户编制好的报表文件,这个文件存放在名为myreport.txt的文件中。为简约起见,我们只列出了其END部分: END {close("myreport.txt");system("lp myreport.txt");}

在这个示例中,我们首先使用close语句关闭了文件myreport.txt文件,然后使用system嵌入函数将myreport.txt送入打印机打印。

Unix命令行程序和内建指令(更多)

文件系统 ▪ catcdchmodchownchgrpcksumcmpcpdudffsckfuserlnlslsattrlsofmkdirmountmvpwdrmrmdirsplittouchumask 程序 ▪ atbgchrootcronexitfgjobskillkillallnicepgreppidofpkillpspstreesleeptimetopwait 使用环境 ▪ envfingeridlognamemesgpasswdsusudouptimewwallwhowhoamiwrite 文字编辑 ▪ awkcommcutedexfmtheadiconvjoinlessmorepastesedsortstringstalktactailtruniqviwcxargs Shell 程序 ▪ aliasbasenamedirnameechoexprfalseprintftesttrueunset 网络 ▪ inetdnetstatpingrloginnetcattraceroute 搜索 ▪ findgreplocatewhereiswhich 杂项 ▪ aproposbannerbccalcleardateddfilehelpinfosizelpmanhistoryteetputtypeyesunamewhatis

开放分类: 网络程序设计

我来完善 “Awk”相关词条: GREPSED

GREP SED

百度百科中的词条正文与判断内容均由用户提供,不代表百度百科立场。如果您需要解决具体问题(如法律、医学等领域),建议您咨询相关领域专业人士。 433本词条对我有帮助 添加到收藏

分享到:

更多 合作编辑者 seagull007AleXu039nwpujunesky906412558zsf8510哎_又见落叶rhyain 更多

如果您认为本词条还需进一步完善,百科欢迎您也来参与 编辑词条 在开始编辑前,您还可以先学习如何编辑词条

如想投诉,请到百度百科投诉中心;如想提出意见、建议,请到意见反馈

百度百科内容方针

  • 提倡有可靠依据、权威可信的内容
  • 鼓励客观、中立、严谨的表达观点
  • 不欢迎恶意破坏、自我或商业宣传

在这里你可以

编辑质疑投诉

全方位的质量监督

百科蝌蚪团百科分类管理员核心用户jywv

00 去兑换>>您尚无道具可使用

成长任务

日常任务

编辑热词可获得额外经验值

词条动态

进入我的百科

您目前的等级是2级 您目前的经验值是236点 您还需264点经验值即可升为3级 词条统计浏览次数:约 177858次编辑次数:34次 历史版本词条讨论:1次 讨论历史最近更新:2013-07-09创建者:xztlsy

更多贡献光荣榜辛勤贡献者:哎_又见落...用户等级为词条改进贡献了复杂版本的用户,被称为辛勤贡献者 版本906412558用户等级为词条改进贡献了复杂版本的用户,被称为辛勤贡献者 版本我是加百力用户等级为词条改进贡献了复杂版本的用户,被称为辛勤贡献者 版本goodzili用户等级为词条改进贡献了复杂版本的用户,被称为辛勤贡献者 版本sania9用户等级为词条改进贡献了复杂版本的用户,被称为辛勤贡献者 版本查看更多贡献者 最新动态全国首家3D全景博物馆: 百科消息:快来下载全新百科客户端2.0版【百科mini】无锡百科城市手册【有奖调研】给词条页提提建议【百科mini】曼德拉的光辉岁月好声音第二季 独家音频首发 © 2013 Baidu 使用百度前必读 | 百科协议 | 百度百科合作平台

Awk

awk释义

awk简介

调用方式

语法

内置变量

内置函数

命令行使用

详细介绍

变量

运算与判断

流程控制

1

2

函数

输入输出

参考资料

会员:发帖:

词条页面有奖调研

想让词条页的展现形式更丰富多彩吗?只要你敢想,百科就可能帮你实现。参加调研问卷,还能获得精美礼品!查看更多关闭

如何高效利用GitHub ← 阳志平的个人网站 技术

Posted on

如何高效利用GitHub ← 阳志平的个人网站 技术

阳志平的个人网站::技术

如何高效利用GitHub

正是Github,让社会化编程成为现实。本文尝试谈谈GitHub的文化、技巧与影响。

Q1:GitHub是什么

A1:一家公司

github

位于旧金山,由Chris Wanstrath, PJ HyettTom Preston-Werner三位开发者在2008年4月创办。迄今拥有59名全职员工,主要提供基于git的版本托管服务。

在此之前,它是由TomChris在本地程序员聚会中,开始的一个用于托管git的项目。正如每个伟大的传奇都开始于一场冒险,Tom在这篇文章我如何辞掉微软30万年薪邀约,创办GitHub中谈到: 当我老去,回顾一生,我想说,“哇,那是一场冒险“;而不是,“哇,我真的很安稳。“

另一位创始人Chris也详细描述了GitHub初创的前因后果,他说道:

Do whatever you want.

于是,在2008年4月10号这一天,GitHub正式成立。

目前看来,GitHub这场冒险已经胜出。根据来自维基百科关于GitHub的描述,我们可以形象地看出GitHub的增长速度:

github

今天,GitHub已是:

  • 一个拥有143万开发者的社区。其中不乏Linux发明者Torvalds这样的顶级黑客,以及Rails创始人DHH这样的年轻极客。
  • 这个星球上最流行的开源托管服务。目前已托管431万git项目,不仅越来越多知名开源项目迁入GitHub,比如Ruby on Rails、jQuery、Ruby、Erlang/OTP;近三年流行的开源库往往在GitHub首发,例如:BootStrapNode.jsCoffeScript等。
  • alexa全球排名414的网站。

Q2:GitHub风格

A2: GitHub只是GitHub

强调敏捷开发与快速原型,而又的确成功的创业团队,常具备一个重要气质:有自己的文化风格。如GitHub,又如37signals。通过他们的快速开发,向用户证明了团队在技术上的能力,并且时常有惊喜。同时,通过强调特立独行的文化,将对半衰期过短的产品族群的信任转为对GitHub团队的信任。

Gravatars的创始人(对,就是互联网最流行的头像托管系统)、Jekyll(对,它就是我近几年用的博客系统)作者、GitHub创始人,现任CTO Tom在GitHub第一年学到的10大教训创业学校演讲中谈到GitHub文化的方方面面。我尝试将这种风格总结为以下要点:

  • 专注创作,高创意
  • 运营良好与较高的内外满意度
  • 高利润,较低的融资额或零融资

创业公司多半死在钱上,就让我们先从钱谈起:

高利润,较低的融资额或者零融资

类似于GitHub这样的公司,拿到风险投资很难吗?恰恰相反,创始人PJ Hyett 在Hacker News的一篇评论中提到,自从GitHub创办以来,已与几十个VC沟通过。但是,直到今天,GitHub的融资额还是为零,并引以为豪。让我们看看GitHub官网的自我介绍:

image

运营良好与较高的内外满意度

在Quora上有人问道,GitHub是否寻找被收购?,还是PJ Hyett ,他的回答是:No。

GitHub从一开始就运营良好,员工拥有较高满意度,看看这些不太一样的做法:

  • 每一位GitHub公司的新员工,官方博客将发表文章欢迎。
  • 在GitHub内部,没有经理,需求内容与优先级由项目组自行决策。
  • 选择自己的工作时间、工作地点。
  • 员工来自开源社区。
  • 能开源的尽可能开源。

富有激情、创意的员工使得GitHub得到了社区的广泛认同,从而拥有极高的客户满意度,并从创业一开始就盈利。一份早期的调查表明,GitHub很快成为Git托管首选。

专注创作,高创意

GitHub59名全职员工仅有29名员工在本地工作!不仅仅是工作地点的安排富有创意,GitHub员工Holman, 详细介绍了GitHub的工作方式:

Q3:在GitHub,如何跟牛人学习

A3:在学习区刻意练习

追随牛人,与他们一起修行

修行之道: 关注大师的言行, 跟随大师的举动, 和大师一并修行, 领会大师的意境, 成为真正的大师。

正如这首禅诗所言,与其在墙内仰望牛人,不如直接在GitHub:

  • watch、fork牛人们
  • 对他们的项目提交pull request
  • 主动给牛人们的项目写wiki或提交测试用例,或者问题
  • 还可以帮他们翻译中文

GitHub本身建构在git之上,git成为勾搭大师们的必要工具,以下读物成为首选:

如果希望进一步深入,可以阅读已有中文翻译版的材料:

同样,如果希望了解更多GitHub自身的知识,GitHub官方文档值得推荐:

牛人在哪里?

关于学习的心理学研究,常常会谈到一个术语:元认知、元学习、元知识。是的,关于认知的认知、关于学习的学习、关于知识的知识,你对这些信息的偏好与熟练掌握,会让你在学习一门新东西时更加轻车熟路。对一手信息进行回溯,比如作者、创始人、最初文献出处,总是会让你更容易理解知识。

在学习区刻意练习:借助GitStats进行项目统计

如何学习一门新的编程语言?——在学习区刻意练习中,我已谈过: 学习编程最好的方式是在学习区刻意练习。

如何进行自我监督?

借助于GitStats,我们能很好地统计自己的每个项目的工作量,从而看到工作进展。

用法如下, /#复制GitStats项目到本地 cd ~/dev git clone git://github.com/trybeee/GitStats.git python ~/dev/gitstats/git-stats /youproject public

以下为生成结果示范:

每周代码提交次数:

github

每天代码提交行数:

github

如果Fork别人的项目或者多人合作项目,最好每人都拥有一个独立分支,然后由项目维护人合并。如何建立自己的分支? /# 分支的创建和合并 /# git branch yourbranch /# git checkout yourbranch 切换到yourbranch /# 开发yourbranch分支,然后开发之后与master分支合并 /# git checkout master /# git merge yourbranch /# git branch -d yourbranch 合并完后删除本地分支

如何将牛人的远程分支更新到自己的本地分支?

/# 查看当前项目下远程 /# git remote /# 增加新的分支链接,例如 git remote add niuren giturl… /# 获取牛人的远程更新 git fetch niuren /# 将牛人的远程更新合并到本地分支 git merge niuren/master

生产力小技巧

codeshelver:给git库做标签

观察的项目如果多了,怎么管理?用codeshelver,安装扩展之后,可以对GitHub项目做标签。

gollum:利用git与github做wiki

gollum是一个基于git的轻型wiki系统。

GitHubwatcher: 监测重点项目

GitHubwatcher适用于通知不频繁的情景。

GitHub官方资源

GitHub官方列出了一些有用的脚本与书签

社区驱动的安装与配置文件

GitHub中各类配置文件层出不穷,一些常用的:

  • osh-my-zsh:将终端从bash改为zsh之后,可考虑安装社区驱动的zsh配置文件,含有多个插件。可参考旧文zsh与oh-my-zsh
  • gitignore:GitHub官方出品
  • yourchili:服务器各类安装shell,比如安装nginx等。

Q4: 享受纯粹的写作与演讲

A4:回归创作的初始

写作

早在2008年,就有技术图书作者通过Git来写作,以下是示范:

你能想到的技术前沿话题,大多能在GitHub找到相应的培训材料或者开源图书。

个人写作照样适用。在前文理想的写作环境:Git+GitHub+Markdown+Jekyll,我已经格外赞美过这些美好事物了。

暖色调的灯光,足够宽度的工作台,听着清脆的键盘声音,基于Git、GitHub、Markdown与Jekyll来写作,不担心写废与排版,只关注最纯粹的写作,是一种享受。我有时候会想,如果Git、Github、Markdown、Jekyll,再加上Yaml、Json的作者,让这些作者们重新来设计今天互联网基础架构偏文本的部分,会诞生一些什么?

个人博客

借助于Jekyllbootstrap,可以在Github上快速搭建一个基于jekyll的博客系统。

除了这个简单易行的办法之外,还存在一些其他方法,例如:

演讲

借助于GitHub,可以享受更纯粹、更酷的演讲。GitHub 2011年收购Ordered List之后,从此可以通过speakerdeck更好的分享ppt文档。

我们还可以:

  • 使用GitHub著名传教士、Progit作者Scott Chacon开发的showoff
  • 来自开源社区的其他演讲库impress.js

Q5: 代码帮你找工作

A5:GitHub简历很诚实

NumEricR(非GitHub工作人员)基于GitHub Pages功能做了一个简历生成器,使用极其简单,登陆网站GitHub简历生成器,填入你的GitHub网站用户名即可。

fredwu是Ruby中文社区活跃份子,他的开源项目angel_nest,一个天使投资与创业者对接的网站,适合Ruby初学者升级为Ruby中级开发者时学习,也在Hacker News上被热烈讨论过,让我们来看看他的简历:

http://resume.GitHub.com/?fredwu

正是因为GitHub上的代码无法造假,也容易通过你关注的项目来了解知识面的宽度与深度。现在越来越多知名公司活跃在GitHub,发布开源库并招募各类人才,例如:FacebookTwitterYahoo ...

开始有了第三方网站提供基于GitHub的人才招聘服务,例如:

  • GitHire:通过它,可以找出你所在地区的程序员。
  • Gitalytics.com:通过它,能评估某位程序员在GitHub、LinkedIn、StackOverflow、hackernews等多个网站的影响力。

Q6: GitHub还在影响一些什么

A6:让计算机增强人类智慧

很多年前,在某个名声显赫的学府中,两位先后拿过图灵奖的牛人有一段对话:

  • 牛人A:我们要给机器赋予智慧,让他们有自我意识!
  • 牛人B:你要给机器做那么多好事?那你打算给人类做点什么呢?

这段对话来自《失控》。牛人A是明斯基,他最喜欢将人类看做有血肉的机器,他的框架理论成为认知心理学、人工智能入门基础。牛人B则是恩格尔巴特。当明斯基1961年发表他著名的文章人工智能走向时,恩格尔巴特还籍籍无名。直到次年,恩格尔巴特发表宏文:人类智力的增强:一种概念框架。提出不同于明斯基的另一条增强人类智力的道路:不要尝试发明自动打字的机器,而是尝试发明鼠标,并且他真的发明鼠标成功了!

从近些年的发展来看,仍然是明斯基占上风,但是,三十年河东,三十年河西,明斯基的人工智能方向又有多少年没有大突破了?相反,来自恩格尔巴特的群件、集体智慧等思想,逐步成为步入Web2.0时代之后的共识。无关对错,可以说,恩格尔巴特为增强人类智力,提供了可行的框架。与其去发明聪明的、昂贵的、功能一体化的智能机器人,还不如发明类似于鼠标这样笨笨的、廉价的、功能单一的人类智慧服务单件。明斯基的机器人很容易陷入死胡同,没有上升到哲学的高度。现在慢慢又回到恩格尔巴特这个方向来了。比如现在IBM开始宣传认知计算

从git与GitHub设计与解决的问题本质来看,明显加速了代码生产流程,促进了卓越智力产品的诞生。这就是一种典型的web2.0对智力生产流程的改良与人类智慧的增强。同样,某种意义上,小说写作网站也起到类似作用。但是,学术界尤其是社会科学类的智力产品生产似乎还停留在一个古老阶段。在开源领域,好想法层出不穷,极客影响极客,最终产生的是酷玩意。这些酷玩意抛弃浮华,直奔问题本质。那么,有没有科学界的GitHub?

类似问题层出不穷,以下为其他领域产品不完全名单。

学术研究

数据

科学计算

  • opani:雏形中,支持R、Python等多种。

教育

  • OpenStudy:一个社会性学习网络,通过互助来更好地学习,主题涉及到计算机、数学、写作等。
  • openhatch: 通过练习、任务等帮助新手更好地进入开源社区

Q7:除了GitHub,还可以选择什么?

A7:nil

因为进化的需要,多数裸猿存在选择强迫症:哪种程序语言更好?哪个web开发框架更好?当然,最令宅男技术男们羡慕的问题是,高白瘦御姐还是青春小萝莉好?:D

除了GitHub之外,

  • 中国山寨品是不是更好?(为什么不写他们名字,你懂的,山寨品总是善于争论谁是第一个山寨的,各自的排名先后:D)
  • 免费的BitBucket是不是更适合Python程序员?
  • 作为一名折腾族,我不自己搭建一个gitlabhq,是不是对不起自己?

我们可以理解,正是因为无数条分岔路口,让人类不再受制于某种基因、特定疾病、独裁家族,从而拥有无限的可能。但是,这种选择强迫症与远古时代可怜的信息量相比较,

  • 今天这个大数据时代,它还会有助于人类作为族群的整体进化与作为个体的幸福吗?
  • 今天一位一线城市30岁大学毕业生经历的选择与孔子整个一生经历的选择,纯论数量,谁多谁少?

生命如此短暂,为什么总要将青春浪费在不断的选择之中呢?罚你,回头阅读心理学家施瓦茨(Barry Schwartz)的TED演讲:选择之困惑——为何多即是少,1百遍啊1百遍。请记住施瓦茨的演讲要点:

  • 更多的选择不代表更多的自由;
  • 更多的选择导致决策的延迟和降低的满意感;
  • 快乐之秘诀,在于降低自己的期望值。

最后,让我再抒情一把吧, 美好的事物总是离不开被墙的命运,让我们静静地期待那一天的来临… 也让我们在各自行业的努力,让下一代、下一代、下一代…(希望N<=1,如果N>=4,我做鬼也放不过你们!)不再拥有这一天。

相关参考

本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 Unported许可协议进行许可。 04 March 2012

分享到: 更多 DISQUS...

Glad you liked it. Would you like to share?

Facebook

Twitter

Sharing this page … Thanks! Close 登录

添加新的评论

  • 以什么身份发表 …
  • Image *

排序 受欢迎的 排序 best rating 排序 后发表在前 排序 先发表在前

显示 82 评论

*

phiree yuen 1 comment collapsed Collapse Expand

末尾的抒情是亮点. 钦此.

haiweili 1 comment collapsed Collapse Expand

I like this .

laughing 1 comment collapsed Collapse Expand

好文章,记得半年前看过一次,今天再次碰到,又从头到尾读了一遍,还是有收获。

YC 1 comment collapsed Collapse Expand

受教!博主很有才!

Piaodan 1 comment collapsed Collapse Expand

赞!学习了,增加了对GitHub的了解。

nourlcn 1 comment collapsed Collapse Expand

大赞!好文!!

Luser News, I'm a luser. 1 comment collapsed Collapse Expand

信息量很大.

kimigao 1 comment collapsed Collapse Expand

very good!

Bbf266 1 comment collapsed Collapse Expand

Nice

John Hoo 1 comment collapsed Collapse Expand

赞!~~

Pkme0119 1 comment collapsed Collapse Expand

极好地文章

Ryderkun 1 comment collapsed Collapse Expand

i like it !

Devafree 1 comment collapsed Collapse Expand

good, favorite

jl2005 1 comment collapsed Collapse Expand

信息量很大,需要慢慢消化。

Shuaiyang Yu 1 comment collapsed Collapse Expand

好文章

枭鹏 郭 1 comment collapsed Collapse Expand

Thank you, I like github!I'll try it...;-)

Mingshen Sun 1 comment collapsed Collapse Expand

好文章,内容十分丰富,非常感谢!

kuke 1 comment collapsed Collapse Expand

zan

袁源, 我是袁源 职业是前端开发 1 comment collapsed Collapse Expand

收益很大!!谢谢!!

更多的选择不代表更多的自由;更多的选择导致决策的延迟和降低的满意感;快乐之秘诀,在于降低自己的期望值。

ADoyle 1 comment collapsed Collapse Expand

阅读过很多技术博客,但像这般写作质量如此高的真是很难得,钦佩博主的细心。

tracysu 1 comment collapsed Collapse Expand

ThumbUp

ringtail 1 comment collapsed Collapse Expand

哈哈,不错不错

超 刘 1 comment collapsed Collapse Expand

不错,喜欢那个“修行之道”。 sourceforge.net就被墙过,希望Github不会被墙。

Qingshanli1988 1 comment collapsed Collapse Expand

太好了

zhkzyth 1 comment collapsed Collapse Expand

谢谢志平前辈, 下次不再用doc之类的格式来存文档了~~~~

wang3feng 1 comment collapsed Collapse Expand

学习了,真的很有启发,打算把自己的博客也迁移到github上了。

Phnix liang 1 comment collapsed Collapse Expand

博主这文章的信息量很大啊. ps:这个博客的界面很喜欢...

bestop 1 comment collapsed Collapse Expand

很强大的网站,适合IT相关人士,前几天看到一篇用Github做个人网页的文章,也很有才

john_chou 1 comment collapsed Collapse Expand

美好的事物总是离不开被墙的命运,让我们静静地期待那一天的来临…也让我们在各自行业的努力,让下一代、下一代、下一代…

麦时 1 comment collapsed Collapse Expand

来学习

D T Ubest 1 comment collapsed Collapse Expand

有才

袁源, 我是袁源 职业是前端开发 1 comment collapsed Collapse Expand

喜欢

hustcalm 1 comment collapsed Collapse Expand

好文!~

Charlie Chen 1 comment collapsed Collapse Expand

写的非常好,学习了。 最近GitHub发了一封邮件,开头很有爱。 “We're sending you this email because we love you.”

qinzjy 1 comment collapsed Collapse Expand

顶!

Young 1 comment collapsed Collapse Expand

再高的山峰也会被征服,再厚的墙也会被打穿

刘彪 马 1 comment collapsed Collapse Expand

赞抒情

oulan 1 comment collapsed Collapse Expand

如何高效利用GitHub

Tanzek 1 comment collapsed Collapse Expand

哈哈,末尾的抒情相当欢乐啊! 感谢这么精彩的博文。

Haichong20 1 comment collapsed Collapse Expand

看完文章后,对Github有了点认识

shishougang 1 comment collapsed Collapse Expand

总结的很好,thx

Cloudaice 1 comment collapsed Collapse Expand

真的真的写的非常好。

Jiye Qian 1 comment collapsed Collapse Expand

Good!

Lhrafh 1 comment collapsed Collapse Expand

好文章,收藏了!

chxkyy 1 comment collapsed Collapse Expand

美好的事物总是离不开被墙的命运,让我们静静地期待那一天的来临…也让我们在各自行业的努力,让下一代、下一代、下一代…(希望N<=1,如果N>=4,我做鬼也放不过你们!)不再拥有这一天。

chxkyy 1 comment collapsed Collapse Expand

好文分享。

Sury 1 comment collapsed Collapse Expand

看得很有快感……

Seongbin Joo 1 comment collapsed Collapse Expand

文章很精彩~

Sp163mail 1 comment collapsed Collapse Expand

好厉害。文章中的超链接就够开阔眼界的了。

Rei 2 comments collapsed Collapse Expand

6、7点扩展的我的思路,写得好。

alswl, ☑ArchLinux ☑Vim ☑Python ☑Shanghai ☑1988 ☑log4d.com 1 comment collapsed Collapse Expand

我也特别喜欢 Q7,尤其是「生命如此短暂,为什么总要将青春浪费在不断的选择之中呢?」

Jasonllinux 2 comments collapsed Collapse Expand

很好的博文 赞一个

hexiaowen 1 comment collapsed Collapse Expand

sdaf

Orange8637 1 comment collapsed Collapse Expand

大菠萝怒赞!

Isaac Koo, Keep it simple, stupid. 1 comment collapsed Collapse Expand

志平老师的文章很好啊。

Vincentltz 1 comment collapsed Collapse Expand

Wow, I am really glad that I ran into this blog. How lucky I am! Great post, I always want to try new things but lack of time. Recently, I am busy with learning ARM and MCU. I want to set up my own blog with my old computer for a long time because I don't like sina or other companies. Now I may try it on GitHub. XD

Mathison 1 comment collapsed Collapse Expand

赞一个

Jizhouli 1 comment collapsed Collapse Expand

原以为懂GitHub,看了这篇文章发现自己什么都不懂

bluekurk 1 comment collapsed Collapse Expand

正在翻Got Git是看到了这篇 收藏

juanfatas 1 comment collapsed Collapse Expand

寫的太好了!

freealbert 1 comment collapsed Collapse Expand

Thanks~

code6 1 comment collapsed Collapse Expand

nice!

Jonas Tang 1 comment collapsed Collapse Expand

收藏了,写的真不错

ChenYu Xiao 1 comment collapsed Collapse Expand

上班都抵住压力慢慢看。

zernel 1 comment collapsed Collapse Expand

学习了

lwjef 2 comments collapsed Collapse Expand

gitgnore:GitHub官方出品
有个小错误 应该是gitignore

Zhiping Yang, Computational Psychology 1 comment collapsed Collapse Expand

Thanks. 已更正.

Camel Song 1 comment collapsed Collapse Expand

Great as always!

oppih Xue 1 comment collapsed Collapse Expand

COOL, Evernote 收藏 :)

yish 1 comment collapsed Collapse Expand

学习了

SamQiu 1 comment collapsed Collapse Expand

赞!

iuhoay 1 comment collapsed Collapse Expand

我真的看完了,收藏了

海坡 杨 1 comment collapsed Collapse Expand

谢谢你的整理,非常开阔了我的视野。

kamal 2 comments collapsed Collapse Expand

使用 BitBucket只有一个理由,创建私人项目不收费。

efuil 1 comment collapsed Collapse Expand

说对了

fancyoung 1 comment collapsed Collapse Expand

看完一遍博文,赞。文中链接信息非常好,收藏慢慢学习。

snip.wu 1 comment collapsed Collapse Expand

辛苦了,如此信息量大的文章相信博主写起来也很辛苦。很感动有人能把这个总结写出来,经典会好好学习的。

kimigao 1 comment collapsed Collapse Expand

又读了一遍!文中的分享也很经典,辛苦作者了,非常感谢!

hai zheng 1 comment collapsed Collapse Expand

感谢!

LiuJin 1 comment collapsed Collapse Expand

信息很多,慢慢研究

Jerry Bian 1 comment collapsed Collapse Expand

nice post

herosea 1 comment collapsed Collapse Expand

好文章啊

Reactions

[转]如何高效利用GitHub[转]:[转载自:http://t.co/i6H02zGv] 正是Github,让社会化编程成为现实。本文尝试谈谈G… http://t.co/C9JFjRsM http://t.co/eWmF70nW

2 星期前 @PuttoXu

如何高效利用GitHub http://t.co/92jGL4Ey

2 月前 @cloudbeyond

如何高效利用GitHub http://t.co/xNnmaMZe

2 月前 @Pazzilivo 引用通告网址