codeschool ‘Try Git’课程试用感想

之前在微博上看到有人介绍code school, 评价课程体验非常好。“要想知道梨子的滋味,还得自己尝一尝。”作为公开课爱好者(作者正在努力克服enroll里以后没办法坚持到底的问题…),自然不能放过这样的机会,注册了一个帐号玩了一把,感想是——

非常赞!强力推荐!

之前也读过一些git教程,比如Github自带的入门文档和我最喜欢的入门教程git-简易指南,但这些文档似乎太过简略了一些,注解也少了一些,操作了一遍还是感觉云雾缭绕。而图书馆里的《Git权威指南》之类的大部头又没耐心看下去。code school的Try Git在难易繁简的平衡中可谓恰到好处,所介绍的git命令足以应付初级使用者的需求,关于命令的注释和使用tip又很贴心,交互式的环境能够给出实时的feedback(主要功能还是通过“逼迫”学习者亲手敲一遍命令来巩固记忆)

以下内容是Try Git课程中提到的git命令,给还没有上过这门课程的童鞋一个预览,也是自己的Git命令速查手册。

在当前目录下创建git目录,生成/.git的隐藏目录

git init

查看当前repo的状态

git status

加入文件到staging area

git add [filename]

[注] 若要加入当前目录下的所有文件

git add .

若要加入git目录下(包括子目录)所有以suffix为后缀的文件,此处若没有’’,则shell将解析正则表达式,将当前路径下(不包括子目录)的文件加入staging area

git add '*.suffix'

将文件从staging area删除

git remove [filename]

查看git commit历史

git log

设定remote repo的URL地址,为将本地代码仓库push到远程服务器做准备

git remote add [repo name]

Git doesn’t care what you name your remotes, but it’s typical to name your main one origin.

将local repo push到服务器端。-u 参数可以记忆设置,下次push时只需使用git push命令即可

git push -u origin master

origin是remote git repo的名字, master是local repo的默认branch name

隐藏更改

git stash

将remote repo下载到本地

git pull origin master

查看更改

git diff

如果想查看最近一次的更改,使用git diff HEAD命令, HEAD指针指向最近一次的更改.

从staging area中删除file

git reset [filename]

恢复到上次commit的状态

git checkout -- [filename] 

创建新分支

git branch [branch_name]

查看当前分支情况

git branch

切换当前分支

git checkout [branch_name] 

创建并切换到名为branch_name的分支

git checkout -b [branch_name]

同时从物理目录和git staging area中删除文件

git rm [filename]

删除文件夹及其子目录中的内容

git rm -r [folder_name]

将branch_name分支下的内容和当前分支合并

git merge [branch_name]

[注] 有时会出现conflict, 解决的思路是“确定究竟哪部分代码是要保留的”,似乎属于比较高级的议题,参见pro git

删除分支

git branch -d [branch_name] 

[注]未经merge操作的分支不能通过上述命令删除,使用git branch -D/--force/-f [branch_name]强制删除