一.什么是Github
Git是一个分布式的版本控制器,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。也就是说,即便服务器的磁盘发生故障,用任何一个克隆出来的客户端都可以重建服务器上的仓库,回到当初克隆时的状态。
当新版本提交后,Git 并不保存这些前后变化的差异数据。而是当每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。
二.Github中文件的三种状态
在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。
基本的 Git 工作流程如下所示:
1) 在工作目录中修改某些文件。
2)对这些修改了的文件作快照,并保存到暂存区域。
3)提交更新,将保存在暂存区域的文件快照转储到 git 目录中。
三.Github具体操作
1.安装git
apt-get instal git-core
2.从当前目录初始化
要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行一下命令,不过这时我们还没有开始跟踪管理项目中的任何一个文件。
git init
3.从现有仓库克隆
git clone + URL
4.跟踪新文件
git add 文件名
5.暂存已修改文件
git add 文件名
git add 是个多功能命令,根据目标文件的状态不同,此命令的效果也不同:可以用它开始跟踪新文
件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。
6.提交更新
git commit
只要在提交的时候,给git commit加上-a 选项,Git就会自动把所有已经跟踪过的文件暂存起来一并提交,从
而跳过git add 步骤。
7.查看文件状态
git status
暂存状态:
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: README #
未追踪状态
# On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # README nothing added to commit but untracked files present (use "git add" to track)
已修改但未暂存状态
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: README # # Changed but not updated: # (use "git add <file>..." to update what will be committed) # # modified: benchmarks.rb #
8.查看远程服务器上的github仓库
git remote
会列出每个远程库的简短名字。在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,Git 默认使用这个名字来标识你所克隆的原始仓库。也可以加上-v 选项(译注:此为 —verbose 的简写,取首字母),显示对应的克隆地址。
9.添加远程仓库
要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行git remote add [shortname] [url]
10.从远程仓库抓取信息
要抓取所有 Paul 有的,但本地仓库没有的信息,可以运行git fetch 【远程仓库名】。git fetch origin 会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新。
11.推送数据到远程仓库
项目进行到一个阶段,要同别人分享目前的成果,可以将本地仓库中的数据推送到远程仓库。实现这个任务的命令很简单:git push [remote-name] [branch-name]。如果要把本地的 master 分支推送到origin 服务器上(克隆操作会自动使用默认的master 和 origin 名字),可以运行下面的命令:
$ git push origin master
-------------------------------------------------------------------------
参考文献:
《pro git》中文版本