class="archive category category-study category-1 site-layout-2 site-minicat">
欢迎光临小考拉のBlog

Starting vsftpd for vsftpd: [FAILED]问题的解决

koala_chy阅读(1509)评论(0)

问题描述

[root@bigdatamaster etc]# rpm -qa| grep vsftpd
vsftpd-2.2.2-24.el6.x86_64
[root@bigdatamaster etc]# 

 

 

 

[root@bigdatamaster etc]# service vsftpd start
Starting vsftpd for vsftpd:                                [FAILED]
[root@bigdatamaster etc]# 

 

解决办法

检查ftp端口20,21是否被占用

netstat -natp |grep 20 netstat -natp |grep 21 

这个大家的机器有所不同。我的是如下,作为参考

复制代码
[root@bigdatamaster etc]# netstat -natp |grep 20 tcp 0 0 192.168.80.10:52124 184.28.218.96:80 ESTABLISHED 2073/clock-applet   
[root@bigdatamaster etc]# netstat -natp |grep 21 tcp 0 0 0.0.0.0:21 0.0.0.0:*                   LISTEN 2407/vsftpd         
tcp 0 0 127.0.0.1:6010 0.0.0.0:*                   LISTEN 2171/sshd           
tcp 0 0 192.168.80.10:52124 184.28.218.96:80 FIN_WAIT2   - tcp 0 0 192.168.80.10:52136 184.28.218.96:80 ESTABLISHED 2073/clock-applet   
tcp 0 52 192.168.80.10:22 192.168.80.1:51175 ESTABLISHED 2169/sshd           
tcp 0 0 ::1:6010 :::*                        LISTEN 2171/sshd           
[root@bigdatamaster etc]# 
复制代码

 

 

 

 

 

端口21被vsftpd占用。没事,先把它停止低矮,再开启。(如果这里,你的端口被其他进程占用的话,比如如下,作为给大家的一个参考)

 

 

   我的是如下

service vsftpd stop 

 

 

[root@bigdatamaster etc]# service vsftpd stop 
Shutting down vsftpd:                                      [  OK  ]
[root@bigdatamaster etc]# service vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
[root@bigdatamaster etc]# 

问题解决!

CentOS 6.5下快速搭建ftp服务器

koala_chy阅读(404)评论(0)

1、用root 进入系统

2、使用命令 rpm  -qa|grep vsftpd 查看系统是否安装了ftp,若安装了vsftp,使用这个命令会在屏幕上显示vsftpd的版本 

3、使用命令rpm -e vsftpd 即可卸载ftp

4、再使用rpm  -qa|grep vsftpd 查看系统是否已删除ftp,若删除成功,屏幕上显示vsftpd的版本

一:安装vsftpd

查看是否已经安装vsftpd
rpm -qa | grep vsftpd

如果没有,就安装,并设置开机启动
yum -y install vsftpd
chkconfig vsftpd on

安装时发现错误:

Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os error was
14: PYCURL ERROR 6 – “Couldn’t resolve host ‘mirrorlist.centos.org'”
Error: Cannot find a valid baseurl for repo: base

是因为缺少DNS,解决如下:到/etc目录下配置resolv.conf加入nameserver IP:
[root@localhost ~]# vi /etc/resolv.conf

#下面地址是安徽电信DNS
nameserver  202.102.192.68

管理vsftpd相关命令:

启动vsftpd:  service vsftpd start

停止vsftpd:  service vsftpd stop

重启vsftpd:  service vsftpd restart

二、配置防火墙

打开/etc/sysconfig/iptables文件
vi /etc/sysconfig/iptables

在REJECT行之前添加如下代码
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT

保存和关闭文件,重启防火墙
service iptables start

三、配置vsftpd服务器

1.默认的配置文件是/etc/vsftpd/vsftpd.conf,你可以用文本编辑器打开。
vi /etc/vsftpd/vsftpd.conf

2.添加ftp用户

下面是添加ftpuser用户,设置根目录为/home/wwwroot/ftpuser,禁止此用户登录SSH的权限,并限制其访问其它目录。
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list

改为
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

3.增加用户ftpuser,指向目录/home/wwwroot/ftpuser,禁止登录SSH权限。
useradd -d /home/wwwroot/ftpuser -g ftp -s /sbin/nologin ftpuser

4.设置用户口令
passwd ftpuser

5、编辑文件chroot_list:
vi /etc/vsftpd/chroot_list

内容为ftp用户名,每个用户占一行,如:

peter
john

6、重新启动vsftpd
service vsftpd restart

另外,如果觉得以后管理ftp用户名嫌麻烦,可以使用centos官方发布的脚本管理。地址如下:(未用过)

http://wiki.centos.org/HowTos/Chroot_Vsftpd_with_non-system_users

———————————-

出现的错误

1、500 OOPS: cannot change directory
解决方法:

在终端输入命令:

1.setsebool -P ftpd_disable_trans 1

2.service vsftpd restart

就OK了!
原因:这是因为服务器开启了selinux,这限制了FTP的登录。

Composer 使用示例(一)

koala_chy阅读(410)评论(0)

最近准备和小伙伴研究 laraver 框架,Composer 的使用当然是必不可少的,以下算是一个学习总结吧

首先得需要在 Github  创建仓库

如下:

我们将仓库拉取下来:

打开命令行:

至此我们已创建了  composer 的json 文件

接下来 我们可以安装  (输入  composer install  命令)

Git忽略规则和.gitignore规则不生效的解决办法

koala_chy阅读(788)评论(0)

Git忽略规则:

在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如果没有这个文件,则需自己手工建立此文件)。这个文件每一行保存了一个匹配的规则例如:

# 此为注释 – 将被 Git 忽略

*.sample    # 忽略所有 .sample 结尾的文件
!lib.sample    # 但 lib.sample 除外
/TODO    # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/    # 忽略 build/ 目录下的所有文件
doc/*.txt   # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

.gitignore规则不生效的解决办法

把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:

git rm -r –cached .
git add .
git commit -m ‘update .gitignore’

Mysql权限控制 – 允许用户远程连接

koala_chy阅读(283)评论(0)

Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作:

一、允许root用户在任何地方进行远程登录,并具有所有库任何操作权限,

具体操作如下:

在本机先使用root用户登录mysql: mysql -u root -p”youpassword” 进行授权操作:

mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘youpassword’ WITH GRANT OPTION;

重载授权表:

FLUSH PRIVILEGES;

退出mysql数据库:

exit

 

二、允许root用户在一个特定的IP进行远程登录,并具有所有库任何操作权限,具体操作如下: 在本机先使用root用户登录mysql: mysql -u root -p”youpassword” 进行授权操作: GRANT ALL PRIVILEGES ON *.* TO root@”172.16.16.152” IDENTIFIED BY “youpassword” WITH GRANT OPTION; 重载授权表: FLUSH PRIVILEGES; 退出mysql数据库: exit

 

三、允许root用户在一个特定的IP进行远程登录,并具有所有库特定操作权限,具体操作如下: 在本机先使用root用户登录mysql: mysql -u root -p”youpassword” 进行授权操作: GRANT select,insert,update,delete ON *.* TO root@”172.16.16.152” IDENTIFIED BY “youpassword”; 重载授权表: FLUSH PRIVILEGES; 退出mysql数据库: exit

 

四、删除用户授权,需要使用REVOKE命令,具体命令格式为: REVOKE privileges ON 数据库[.表名] FROM user-name; 具体实例,先在本机登录mysql: mysql -u root -p”youpassword” 进行授权操作: GRANT select,insert,update,delete ON TEST-DB TO test-user@”172.16.16.152” IDENTIFIED BY “youpassword”; 再进行删除授权操作: REVOKE all on TEST-DB from test-user; ****注:该操作只是清除了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。 最后从用户表内清除用户: DELETE FROM user WHERE user=”test-user”; 重载授权表: FLUSH PRIVILEGES; 退出mysql数据库: exit

 
五、MYSQL权限详细分类: 全局管理权限: FILE: 在MySQL服务器上读写文件。 PROCESS: 显示或杀死属于其它用户的服务线程。 RELOAD: 重载访问控制表,刷新日志等。 SHUTDOWN: 关闭MySQL服务。 数据库/数据表/数据列权限: ALTER: 修改已存在的数据表(例如增加/删除列)和索引。 CREATE: 建立新的数据库或数据表。 DELETE: 删除表的记录。 DROP: 删除数据表或数据库。 INDEX: 建立或删除索引。 INSERT: 增加表的记录。 SELECT: 显示/搜索表的记录。 UPDATE: 修改表中已存在的记录。 特别的权限: ALL: 允许做任何事(和root一样)。 USAGE: 只允许登录–其它什么也不允许做。

linux下xdebug的安装和配置方法

koala_chy阅读(312)评论(0)

xdebug简介

Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况。

xdebug安装

首先让php错误显示,只需要修改php.ini当中的2条指令,把 displayerrors和htmlerrors都设置为On,如下所示

html_errors = On
display_errors = On

当然如果你要需要查看更多信息,比如说打印调用栈,哪就需要安装xdebug,这个对于比较复杂的代码系统特别有帮助

xdebug是php的一个module,需要编译安装,我用lnmp安装的php,php被默认安装到/usr/local/php,然后做一个硬链接到/usr/bin

先编译xdebug

下载xdebug wget http://www.xdebug.org/files/xdebug-2.2.3.tgz

然后开始编译

tar xzf xdebug-2.2.3.tgz

cd xdebug-2.2.3

/usr/bin/phpize

./configure –with-php-config=/usr/local/php/bin/php-config

make 

make test

这里我遇到一个问题就是在 php.ini  文件中要开启  proc_open

make install

编译完成接下来修改php.ini配置, 在次之前你也可以先去 你的 php 安装路径下的lib 库目录看看是否生成了xdebug.so文件,如果生成了就把下面这些加入 php.ini 文件

;no-debug-non-zts-20090626 这个文件夹名称和php版本是一一对应的

zend_extension= “/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so”

xdebug.default_enable = On

xdebug.show_exception_trace = On

xdebug.show_local_vars = 1

xdebug.max_nesting_level = 50

xdebug.var_display_max_depth = 6

xdebug.dump_once = On

xdebug.dump_globals = On

xdebug.dump_undefined = On

xdebug.dump.REQUEST = *

xdebug.cli_color = 2

重启php-fpm,随便写段错误的php代码,刷新浏览器,就能看到错误提示。

PHP 设置调试工具XDebug PHPStorm IDE

koala_chy阅读(279)评论(0)

先下载PHP扩展Xdebug https://xdebug.org, 可以复制自己的phpinfo粘贴到https://xdebug.org/wizard.php中, 会生成需要下载的版本, php.ini的设置语句.

下载好之后放入php目录的ext文件夹中, 然后设置php.ini, 在最后加上

zend_extension = C:\path\php\ext\php_xdebug-2.4.0rc4-5.6-vc11-x86_64.dll
xdebug.remote_enable =1
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost
xdebug.remote_mode = req
xdebug.remote_port = 9000
xdebug.idekey=PHPSTORM

然后重启apache, 去设置phpstorm

 

1. 进入File>Settings>PHP>Servers,这里要填写服务器端的相关信息: 
name: localhost, 
host: localhost, 
port: 80, 
debugger: XDebug

如果是自定域名则host设置自定域名, 如laravel5.io


2. 进入File>Settings>PHP>Debug,找到XDebug选项卡,port填9000
进入File>Settings>PHP>Debug>DBGp Proxy 填写: 
IDE key: phpStorm 
host: localhost 
port: 80


设置完毕,点OK退出。

 

点菜单栏的Run>Edit Configurations… 在弹出的窗口中添加一个调试配置:

点击左上角加号,选择PHP Web Application

填写完毕后,在代码里设置断点, 再开启电话icno监听, 点小甲壳虫启动调试

再下个浏览器插件, xdebug helper, 下载好之后点选项, IDE选PHPSTORM, 不想让所以网页显示小甲虫, 可以设置domain filter

基本完事了, 调试就点开电话图标监听, 设置好断点, 点小甲虫开启调试了, 刷新页面可见结果

TP框架调用阿里大于短信接口详解

koala_chy阅读(376)评论(0)

首先去阿里大于官方网站使用手机淘宝扫描登录,进入首页会弹出流程指南,创建应用,得到Appkey,点击设置查看得到APPsecret,APPkey和APPsecret将在调用SDK的时候用到;
然后根据指南,创建短信签名及短信模板,麻烦但简单,没有不可理解,这里不再赘述,请自行创建!由于大平台,所以流程有些繁琐,签名及模板需要审批,所幸时间短,二十分钟左右即可审批!在等待审批的时间里可以先去下载SDK了,,点击SDK下载选中PHP版,下载解压,得到如图,全部选中,放到项目如图文件夹啊下,里面的参数什么都不用改,已经设定好,只需要再创建一个SendSMS.class.php,代码如图
然后到项目模块中新建控制器,代码如图
然后打开浏览器访问此控制器下的index,就会收到短信啦!
最后的调用代码其实很少很简单,重点在于调用API的时候传的几个参数,即SendSMS.class.php中的$recNum,$smsParam,$smsTemplateCode,$smsFreeSignName这四个参数,具体都是什么可以到如图短信发送API中去详细了解!
其实官网还有应用测试和测试工具等,你可以先在这里体验一下各种参数的使用,然后再去项目中具体调用,更能便于理解!

GitHub 使用攻略

koala_chy阅读(380)评论(0)

说明: 首先,你需要注册一个 github 账号,最好取一个有意义的名字,比如姓名全拼,昵称全拼,如果被占用,可以加上有意义的数字.
本文中假设用户名为 tiemaocsdn
1. 注册账号:

地址: https://github.com/
输入账号、邮箱、密码,然后点击注册按钮.

图1 第1步

2. 初始设置
注册完成后,选择Free免费账号完成设置。

图2 第2步

2.1 验证邮箱
请打开你的邮箱,查看发送给你的确认邮件,你需要验证邮箱后,后面生成的个人主页才会被接受和发布.

3. 创建页面仓库
地址: https://github.com/new
这个仓库的名字需要和你的账号对应, 如 tiemaocsdn.github.io
输入基本信息,然后点击创建仓库.

图3 第3步

4. 进入项目设置页面
因为这个项目就是专门的放页面的,所以master分支即可. 如果是你的某个仓库的页面,你需要设置到 gh-pages 分支中,关于这些,请参考本文末尾提到的参考资料.

图4 第4步

5. 进入自动页面生成器
在设置页面,下拉到底部, 默认分支(master)不用管.

图5 第5步

6.1 创建用户页面(即技术博客站点)
输入一些内容,可以自己编辑,也可以从readme加载:

图6-1 第6-1步

6.2 继续,选择主题

图6-2 第6-2步

7. 选择主题,然后发布
如下图所示,其实这些以后你都可以自己修改替换,这只是生成一些css,html,img到你的仓库里面.

图7 第7步

8. 查看效果
现在,你可以访问自己的GitHub.io 上的主页了,例如:
http://tiemaocsdn.github.io/
页面效果如下图所示:

图8 第8步

9. CNAME绑定域名

到这一步,其实已经很明确了, http://tiemaocsdn.github.io/ 这么一个域名,就指向了刚刚构建的这个站点/页面。 如果嫌弃这个域名太土了怎么办? 

其实很好办,花钱买个喜欢的域名映射过去就好了。 在根路径下创建一个文件, 文件名是大写的 “CNAME“, 注意没有后缀。 因为tiemaocsdn 没有购买域名,那么就拿另一个来说事吧。

类似下面这样:

https://github.com/renfufei/renfufei.github.io/blob/master/CNAME

里面的内容,就是访问此 xxx.github.io 时会重定向到此域名,所以其实这个地址可以是任意值。 但是为了有意义,我们可以定义为某个固定的域名,例如 :

[plain] view plain copy

 在CODE上查看代码片派生到我的代码片

  1. blog.cncounter.com  

文件的内容只有一行,这样访问 http://renfufei.github.io 时浏览器就接收到重定向指令,跳转到CNAME里面指定的域名去了。  

大致的响应头和状态码如下,你也可以使用Chrome打开NetWork,勾选上 Preserve Log 保留日志看一看相关信息:

[plain] view plain copy

 在CODE上查看代码片派生到我的代码片

  1. Request URL:http://renfufei.github.io/  
  2. Request Method:GET  
  3. Status Code:301 Moved Permanently  
  4.   
  5. Location:http://blog.cncounter.com/  
  6. Server:GitHub.com  

这样就很明白了,访问此站点时,如果域名不是 blog.cncounter.com ,那么就会跳转到 http://blog.cncounter.com/,个人恶意推测,即便你将CNAME文件的内容设置为 www.baidu.com 也是可行的,这样访问的时候直接跳转到百度了。
但是,如果 http://blog.cncounter.com/ 是空的怎么办?  这就需要你自己保证咯。

当然,要是这么结束掉,那本文就是一篇坑文。 
如果你持有这个域名,那么你可以将域名的对应记录也CNAME到 “renfufei.github.io” . 记住, renfufei.github.io 已经是一个互联网上能明确定位到的地址,所以DNS记录完全可以映射到此路径.

例如如下的记录, DNS中,A记录那就是直接指定一个IP。 CNAME就是重命名,指向另一个域名。 主机记录就是前缀,例如: blog, 与 cncounter.com 拼接在一起就是 blog.cncounter.com ,如果你想映射 www.cncounter.com,那么主机记录就是 www ,记录类型是CNAME,记录值是renfufei.github.io;如果想将 http://cncounter.com 这个根域名也映射到,那么记录类型也是CNAME,主机记录就是一个英文的 at: “@“. 你可以将多个域名都映射到 xxxxx.github.io 之类的你自己的站点上,但原则上都会跳转到你新建的 CNAME文件中的域名上。【放心,不会死循环。。。】.好的,恭喜你!

10. 仓库的页面

创建好个人或组织的Github首页之后,就拥有了一个固定的二级域名。 

那么,每个项目都可以使用页面生成器生成一个项目的页面(page)。 当然,项目使用的 pages 就不是 master 分支了,而是一个叫做 gh-pages 的分支。gh 是 github 的简称, github会自动解析下面的页面。

相应的访问路径类似 http: //xxx.github.io/project-name/ 这样。例如: http://blog.cncounter.com/cncounter/

对应的分支为: https://github.com/cncounter/cncounter/tree/gh-pages

有兴趣你可以点进去看看,生成方式和上面的基本一样。 当然,Github现在改版了,新版的布局,Settings 被挪到了上方,但是基本操作还是不变的。

cnc-github

注意事项:

  • 如果报404,或者其他错误,请稍等,或者检查你的邮箱,看看构建失败的提示信息.
  • 比如我的,因为最初没有验证邮箱,结果收到了好几次发布失败的通知(如下面的邮件提示)。
  • 以后每次你提交(或在线修改后提交)文件到这个仓库,GitHub 都会自动为你构建,并发布。
  • 所以,有问题,请修改并提交某个文件,重新试试吧!
[plain] view plain copy

 在CODE上查看代码片派生到我的代码片

  1. The page build failed with the following error:  
  2.   
  3.   
  4. You need a verified email address in your GitHub account to publish Pages.  
  5. You can verify your email addresses from your Settings panel:  
  6.   
  7.   
  8.     https://github.com/settings/emails  
  9.   
  10.   
  11. If you have any questions please contact us at https://github.com/contact.  

下面是参考的一部分:

您可以通过GitHub的页面自动生成器快速为 项目,用户(User,比如你的账号),或组织(Organization, 比如 alibaba) 创建一个网站(其实就是技术博客啦)。

生成用户/组织的网页

要生成用户/组织的网站页面,你需要创建一个仓库(repository,代码库),名为: username.github.io 或 orgname.github.io ; 用户名或组织名 必须 是你自己的账号/或所属的组织, 否则GitHub Pages 站点不会帮你生成(build,构建,编译,)。 GitHub的页面自动生成器可以通过仓库的设置页面(Settings page)看到。 您可以阅读更多关于用户和组织页面的内容 。

警告: GitHub页面网站在互联网上是公开,即使其所属的仓库是私有的。 如果你有敏感数据在页面仓库中,您可能需要在发布之前删除他们。

参考地址:

Git与TortoiseGit基本操作

koala_chy阅读(298)评论(0)

1. GitHub操作

本节先简单介绍 Git 的使用与操作, 然后再介绍 TortoiseGit 的使用与操作.

先看看SVN的操作吧, 最常见的是 检出(Check out …), 更新 (Update …), 以及 提交(Commit …); 相当于有一个服务器端, 可以多个客户端进行访问和操作.

Git是SVN以后的新一代的版本控制系统/协议. 适合于大规模的开源软件多人协作的开发. 有一个总仓库(如GitHub,CSDN,OSchina等提供), 每个客户端都有一个本地仓库(这个本地仓库有点对应于SVN的服务端仓库), 以及一个可以看见的本地项目.

让我们想想,至少需要有哪些功能.以 GitHub为例,首先,必须得有一个线上仓库(Repository), 这首先得新建一个仓库.

要创建仓库,必须得先注册账号. 请参考: 创建GitHub技术博客全攻略: http://blog.csdn.net/renfufei/article/details/37725057

然后,登录 GitHub, 在右上角找到 New Repository 或者 加号下拉按钮(+),点击进入新建仓库页面: https://github.com/new, 如下图所示:

依次填写仓库名,以及其他信息后,点击 “Create repository” 按钮,即可创建一个在线仓库. 因为这个仓库是挂在你的账号下的,所以可以是任意合法的字符,只要和你的其他仓库不冲突即可.

仓库创建成功后,就会进入仓库预览页面, 如下图所示:

然后,我们可以点击右边的 HTTPS 链接, 上方的文本框里面就显示了 HTTPS协议下的仓库访问地址, 可以点击进去全选,也可以点击右边的复制按钮复制到剪贴板. 例如,刚刚创建的项目访问路径是:

https://github.com/cncounter/LispGentleIntro.git

是一个以 https:// 开始,以 .git 结尾的 URL,根据提示,叫做 clone URL.

好了,仓库创建完成,可以进入下一步了.

2. Git使用与操作

如果你偏爱命令行,那么可以简单参考下这一小节. 否则,请往下翻,直接看 TortoiseGit使用与操作

2.1 克隆项目(clone …)

Win+R 快捷键打开运行对话框,输入 cmd 回车, 在 cmd 中(其实在 GitBash中也可以), cd 切换到存放git项目的目录, 如:

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>F:

F:\>cd GIT_ALL

然后执行命令: git clone https://github.com/cncounter/LispGentleIntro.git ,就会把项目克隆到当前目录下, 项目的目录名字默认为 LispGentleIntro.

F:\GIT_ALL>git clone https://github.com/cncounter/LispGentleIntro.git
Cloning into 'LispGentleIntro'...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (5/5), done.
Checking connectivity... done.

命令行截图如下:

2.2 提交项目(commit …)

然后可以 cd 切换到 LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作. 实际情况可能是 使用 Eclipse 导入项目(不要拷贝,Copy…)进行一些编辑, 然后将当前目录下的所有有变动的文件告诉索引库,接着提交到本地仓库.

F:\GIT_ALL>cd LispGentleIntro

F:\GIT_ALL\LispGentleIntro>echo some content >> cncounter.txt

F:\GIT_ALL\LispGentleIntro>echo by cncounter >> README.md

F:\GIT_ALL\LispGentleIntro>git add .

F:\GIT_ALL\LispGentleIntro>git commit -m "add some info."
[master 86d090f] add some info.
 2 files changed, 4 insertions(+)
 create mode 100644 cncounter.txt

提交到本地仓库有什么好处呢? 本地仓库就是一个版本管理库,我们在编写代码时,如果写错了,那么可能需要 Ctrl+Z 来撤销,撤销撤销,如果很多,而且跨文件,就很麻烦,可能需要Copy文件什么的。 这时候本地仓库就很有用了. 修改到某个阶段,然后就提交到本地仓库. 可以有效防止丢失,方便回退. 而且,提交到本地仓库不会影响别人看到的内容(只有本机可见).

2.3 推送项目(push …)

如果完成到一定程度,那么可以推送到远端在线仓库. 推送之前,请确保你已经设置了全局的 user.name 和 user.email, 如果没有设置,或者不想使用全局的信息,可以在当前项目下设置:

F:\GIT_ALL\LispGentleIntro>git config user.name "renfufei"

F:\GIT_ALL\LispGentleIntro>git config user.email "renfufei@qq.com"

接着,可以执行推送(push), 推送就是将已经提交到本地仓库的那部分内容给推到远端在线仓库.(修改了,但没提交的那部分内容,不会被推送). 执行 git push 命令即可:

F:\GIT_ALL\LispGentleIntro>git push
Username for 'https://github.com': renfufei
Password for 'https://renfufei@github.com':
Counting objects: 6, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 402 bytes | 0 bytes/s, done.
Total 4 (delta 1), reused 0 (delta 0)
To https://github.com/cncounter/LispGentleIntro.git
   e8c0fb1..6407079  master -> master

在连接上远端服务器之后,会要求你输入用户名与密码. 其中,用户名是你注册GitHub时的账号,不是邮箱. 接着是密码,注意密码是没有回显的,也就是为了安全,不告诉你具体输入了几个字符,输入完成回车即可. 截图如下:

好了,推送完成,这时候用浏览器打开在线仓库,看看内容是不是已经变了?

2.4 拉取项目(pull …)

当然,如果多人协作, 或者多个客户端进行修改, 那么我们还要拉取(Pull … )别人推送到在线仓库的内容下来。 大神们是不推荐使用 pull 命令进行拉取的, 因为封装了细节(git pull == git fetch + git merge). 对于这群更喜欢用命令行的神们来说, 一切在掌控之中是一种强迫症!!!(开个玩笑, 其实项目成员复杂,约定不好以后, pull 确实会有很多问题,会坑人.)

常规使用,我们执行 git pull 即可:

F:\GIT_ALL\LispGentleIntro>git pull
Already up-to-date.

当然,因为没有其他文件被修改,所以直接提示 已经更新到最新. 常规操作就这些,需要注意的是,和使用SVN的好习惯一样,你在修改本地内容之前,最好先 pull 一下,减少冲突的可能.

3. TortoiseGit使用与操作

使用 Git命令有时候确实不怎么方便,特别是每次都要输入密码,如果配置 SSH 的方式,又实在是很麻烦.(当然,必须使用 Windows 神器才有方便友好的客户端图形界面啦!!!)

关于 TortoiseGit 的安装请参考 前一小节.

3.1 克隆项目

打开资源管理器(我的电脑/计算机), 进入规划好的某个目录中, 然后在空白处点击鼠标右键, 选择 TortoiseGit –> 克隆… (Clone…).

弹出克隆项目对话框:

在对话框的 URL中输入项目地址,如:

https://github.com/cncounter/LispGentleIntro.git

确定本地目录,然后点击 确定 按钮. 等待完成后,点击关闭按钮即可.

3.2 修改提交项目

项目克隆完成后(可以将克隆 clone 理解为 下载, 检出 checkout 操作). 修改本地项目中的某些文件,如 将 README.md 修改为如下内容:

LispGentleIntro
===============

Lisp-符号计算入门指引翻译

<a href="http://cncounter.duapp.com/">天朝计数器</a>

还可以试试增加一些文件. 如 files.txt .

然后在本地项目的空白处点击鼠标右键, 选择 TortoiseGit –> 提交(C) -> “master”… 或: Commit -> “master”….

弹出提交(Commit)对话框:

作为好习惯,填写提交日志,勾选需要提交的文件,然后点击 “确定” 按钮, 即提交到本地仓库.

3.3 将提交到本地的项目推送到在线仓库

推送是提交的下一步操作.

在本地项目的空白处点击鼠标右键, 选择 TortoiseGit –> 推送… 或: Push….

弹出推送(push)对话框:

一般保持默认,点击 “确定” 按钮.

然后弹出推送进度界面, 可能要求你输入用户名:

确定OK,然后要求输入密码:

密码输入正确后,OK,显示推送成功界面:

如果你按照上一小节的设置操作,则输入密码以后会记住密码. 密码会明文保存在 C:\Users\Administrator\.git-credentials 这种文件中, 请小心使用.

3.4 拉取项目(pull …)

如果本地的项目没有在线仓库的新,则需要执行拉取操作(Pull …).

在本地项目的空白处点击鼠标右键, 选择 TortoiseGit –> 拉取… 或: Pull….

弹出拉取(pull)对话框:

【如果拉取有BUG,请不要使用 rebase, 下载最新的 TortoiseGit 即可】, 进入 拉取进度界面:

然后执行变基:

【如果拉取有BUG,请不要使用 rebase, 下载最新的 TortoiseGit 即可】

然后完成即可.

这应该是 TortoiseGit 的一个BUG, 要解决这个问题,请参考 解决 TortoiseGit 诡异的 Bad file number 问题 (或者可以换回老版本. 如果你没有出这个问题,那么,可能是我的机器哪里损坏了).

4. 更复杂的操作

当然,多人协作过程中,避免不了会有各种意外情况需要处理,比如冲突,合并,变基等等, 关于这些复杂的操作,请参考: GotGitHub系列: http://www.worldhello.net/gotgithub/01-explore-github/010-what-is-github.html

5. 相关文章

  1. 目录
  2. 安装及配置Git
  3. 安装及配置TortoiseGit
  4. Git与TortoiseGit基本操作
  5. MarkDown示例
  6. 解决 TortoiseGit 诡异的 Bad file number 问题

Stay Hungry, Stay Foolish