标签:
git文档一些摘抄,都是些基本的操作。
请大家多多指教。
完整版在线地址:http://git-scm.com/book/zh/v1
1.文件的三种状态(1.3)
好,现在请注意,接下来要讲的概念非常重要。对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。
由此我们看到 Git 管理项目时,文件流转的三个工作区域:Git 的工作目录,暂存区域,以及本地仓库。
2.Git的安装(1.4)
在 Windows 上安装 Git 同样轻松,有个叫做 msysGit 的项目提供了安装包,可以到 GitHub 的页面上下载 exe 安装文件并运行:
http://msysgit.github.com/
完成安装之后,就可以使用命令行的 git
工具(已经自带了 ssh 客户端)了,另外还有一个图形界面的 Git 项目管理工具。
3.Git如何获取帮助(1.6)
想了解 Git 的各式工具该怎么用,可以阅读它们的使用帮助,方法有三:
$ git help <verb> $ git <verb> --help $ man git-<verb>
比如,要学习 config 命令可以怎么用,运行:
$ git help config
4.git内文件生命周期
请记住,工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新,已修改或者已放入暂存区。而所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区域。初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。
在编辑过某些文件之后,Git 将这些文件标为已修改。我们逐步把这些修改过的文件放到暂存区域,直到最后一次性提交所有这些暂存起来的文件,如此重复。所以使用 Git 时的文件状态变化周期如图 2-1 所示。
图 2-1. 文件的状态变化周期
要确定哪些文件当前处于什么状态,可以用 git status
命令。如果在克隆仓库之后立即执行此命令,会看到类似这样的输出:
$ git status On branch master nothing to commit, working directory clean
创建分支,合并分支,打tag略过。
5.分支的衍合(rebase)(3.6)
它的原理是回到两个分支最近的共同祖先,根据当前分支(也就是要进行衍合的分支 experiment
)后续的历次提交对象(这里只有一个 C3),生成一系列文件补丁,然后以基底分支(也就是主干分支master
)最后一个提交对象(C4)为新的出发点,逐个应用之前准备好的补丁文件,最后会生成一个新的合并提交对象(C3‘),从而改写 experiment
的提交历史,使它成为 master
分支的直接下游。
如果把衍合当成一种在推送之前清理提交历史的手段,而且仅仅衍合那些尚未公开的提交对象,就没问题。如果衍合那些已经公开的提交对象,并且已经有人基于这些提交对象开展了后续开发工作的话,就会出现叫人沮丧的麻烦。
6.远程仓库的创建和clone(4.4)
Join,Josie 或者 Jessica 就可以把它加为远程仓库,推送一个分支,从而把第一个版本的项目文件上传到仓库里了。值得注意的是,每次添加一个新项目都需要通过 shell 登入主机并创建一个裸仓库目录。我们不妨以 gitserver
作为 git
用户及项目仓库所在的主机名。如果在网络内部运行该主机,并在 DNS 中设定 gitserver
指向该主机,那么以下这些命令都是可用的:
# 在 John 的电脑上 $ cd myproject $ git init //初始化 $ git add . //暂存 $ git commit -m ‘initial commit‘ //提交到本地 $ git remote add origin git@gitserver:/opt/git/project.git //添加到远程 $ git push origin master //上传
这样,其他人的克隆和推送也一样变得很简单:
$ git clone git@gitserver:/opt/git/project.git //克隆 $ cd project $ vim README //修改 $ git commit -am ‘fix for the README file‘ //添加暂存并提交 $ git push origin master //上传
用这个方法可以很快捷地为少数几个开发者架设一个可读写的 Git 服务。
7.github 的fork是啥意思(4.10)
如果要为一个自己没有推送权限的项目贡献代码,GitHub 鼓励使用派生(fork)。到那个感兴趣的项目主页上,点击页面上方的 "fork" 按钮,GitHub 就会为你复制一份该项目的副本到你的仓库中,这样你就可以向自己的这个副本推送数据了。
采取这种办法的好处是,项目拥有者不必忙于应付赋予他人推送权限的工作。随便谁都可以通过派生得到一个项目副本并在其中展开工作,事后只需要项目维护者将这些副本仓库加为远程仓库,然后提取更新合并即可。
要派生一个项目,到原始项目的页面(本例中是 mojombo/chronic)点击 "fork" 按钮(见图 4-14):
图 4-14. 点击 "fork" 按钮获得任意项目的可写副本
几秒钟之后,你将进入新建的项目页面,会显示该项目派生自哪一个项目(见图 4-15):
图 4-15. 派生后得到的项目副本
标签:
原文地址:http://my.oschina.net/u/1376359/blog/425570