1. 初始化一个版本仓库
git init
该条命令会在当前目录下生成一个.git目录,该目录中存放着git需要的版本控制信息
git status
可以看到 git仓库当前的状态
”# Initial commit“
2. 增加一些文件
在当前目录下新增一些文件(try git 自动帮你新建完毕)和目录(也是自动的),通过git status命令查看当前版本库的状态
git add octocat.txt
将octocat.txt文件加入版本系统(注意,这只是
通知git去关注该文件,在提交之前,这次的改动还没有形成一个版本)也可以
通过通配符来批量添加文件
git add '*.txt'
注意 通配符 *.txt 外面引号,如果没有引号,则命令会被shell先解析,即*.txt的内容变成了当前目录下的所有txt文件,而忽略子目录中的所有txt文件,而‘*.txt’则会将通配符交给git来处理,在git内部完成
所有文件夹中txt文件搜索。
git commit -m "add some txt file"
向版本库中提交一个改动版本。
3. 增加一个github上的远端仓库(remote repository)
git remote add origin git@g.com:/try_git.git
这里ngloom需要变成你自己github用户名,这条命令会在
本地的配置文件中加入一条名字叫origin的github远端仓库配置。
4. 将本地版本 push 到 github
git push -u origin master
本
地仓库里在用的版本是master,而
远端github里的版本是origin,该命令将本地master里的版本信息push到github仓库里去(如果你github上的仓库名称不叫try_git,
要事先保证该仓库存在,try_git教程会帮你自动建好,所以push的时候不会出错,而
向一个github中不存在的仓库push的话,就要Repository Not Found错误了)
5. 从github 拉最新版本[假设别人在其它地方更新了github上的版本,需要将这些更新拉到本地来]
git pull origin master
从origin[github远端] 拉版本到本地的master 分支
git diff HEAD
查看新版本里有哪些变化
6. 查看Stage中的变化
之前提到过,git add 加进来的文件,并没有最终形成新的版本,而是被提交到一个叫做‘stage’的状态,所以在git add 之后,在commit之前,可以通过diff工具来查看stage中有哪些更新。
git diff --statged
(注:这时候如果对文件进行了修改,而没有重新git add,则stage中仍然保持着上次add的内容,这时CI也只会CI上次git add时候文件里的内容)
如果git add某个更新之后又突然不想提交了,
git reset filename
就会将stage中文件更新删除,但放心 ,并不会删除你本地文件内容的更新,
文件只是回到了modified状态。
7. 恢复文件
git reset只是将文件从staged状态重新置成modified状态,但如果想该文件上次提交后的所有更新,需要用到
git checkout --filename
注意,– 千万不能少,–表示单个文件,如果没有–,则表示分支名称,分支的概念后面再详细讲。
注意, git checkout 只能将处于modifed状态的文件revert到之前的末修改前的状态,而如果一个文件的已经git add进入了staged状态,则checkout对其没有效果。那么如何将一个处理staged状态的文件直接恢复到未修改的状态我还没找到,姑且先把问题留在这里吧是,菜鸟刚入门,大家见笑了。
8. 创建一个分支
git branch clean_up
创建一个叫做clean_up的分支(这里这个教程有些坑爹了,起个名字叫clean_up,加之英文没有注意,使得我一开始以为这是要对前的分支做一些清理工作,汗啊汗)
git branch
可以查看当前系统里有哪些分支,而且可以看出正在使用的是哪一个分支。
切换到clean_up分支
git checkout clean_up
之前用 git checkout 回滚文件修改时讲到过,– 是表示文件回滚,若没有”–“,则表示是一个分支的切换。
在clean_up分支中做一些改动,
git rm '*.txt'
提交
git commit -m 'remove all txt'
将clean_up版本push到github
git push origin clean_up
github就有两个版本,一个是master,一个是clean_up
切换回master分支,merge clean_up分支中的更新
git checkout master && git merge clean_up
clean_up已经完成了自己的使命,可以清除掉了
git branch -d clean_up
git push
将master中的最新版本push到github
至此,TryGit基本教程就结束了。学习过后,对repository,branch,modied 状态,Staged状态有简单的认识,对于一些基本命令的有一定的掌握。估计到熟练及精通还有很长的路要走,加油。
——————————————————-
TryGit地址:http://try.github.com
再补一个学习git的好地方,http://gitbook.liuhui998.com 这里比较偏重git的实现。
SVN大哥感觉有的时候还是不太给力,本想着换hg了,不过这次小强回来极力推荐git,加上搜了一下git windows下也有像totoise svn的工GUI工具了,Eclipse下的EGit支持也不错,那后面就转投git之下吧。下面是相关的开发工具和文档的链接:
Github for Windows: http://code.google.com/p/msysgit/downloads/list?can=3
TortoiseGit : http://code.google.com/p/tortoisegit/downloads/list
EGit: http://www.eclipse.org/egit/download/
tortoiseGit 是依赖github的,注意两个app的版本对应关系。
中文教程: http://www.bitsun.com/documents/gittutorcn.htm
http://progit.org/book/zh/
下面是大牛leemars推荐的一些书和网站:
Gitready: http://gitready.com/
Git from the bottom up
Pro Git
Git Immersion