ProGit学习3
Contents
配置用户信息
安装完Git之后,要做的第一件事情就是设置你的用户名和邮件地址。这一点很重要,因为每个Git提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改:
|
|
再次强调,如果使用了 –global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运 行没有 –global 选项的命令来配置。
Git基础
获取Git仓库
通常有两种方式:
-
将尚未进行版本控制的本地目录转换为 Git 仓库,使用命令 git init。该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。 但是,在这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪。
-
从其它服务器 克隆 一个已存在的 Git 仓库。克隆仓库的命令是 git clone 。比如,要克隆 Git 的链接库 libgit2,可以用下面的命令: $ git clone https://github.com/libgit2/libgit2.这会在当前目录下创建一个名为 “libgit2” 的目录,并在这个目录下初始化一个 .git 文件夹, 从远程仓库拉 取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。 如果你进入到这个新建的 libgit2 文 件夹,你会发现所有的项目文件已经在里面了,准备就绪等待后续的开发和使用。
如果你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以通过额外的参数指定新的目录名: $ git clone https://github.com/libgit2/libgit2 mylibgit. 这会执行与上一条命令相同的操作,但目标目录名变为了 mylibgit。
记录每次更新到仓库
对于Git仓库中的文件都不外乎两种状态:已跟踪 或 未跟踪。
-
$\color{red}{已跟踪文件}$:指那些被纳入版本控制的文件,在上一次快照中有它们的记录,在工作一段时候后,它们的状态可能是未修改、已修改 或 已放入暂存区。简而言之,就是Git已经知道的文件。
初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态,因为 Git 刚刚检出了它们, 而你尚未编辑过它们
-
$\color{red}{未跟踪文件}$:除了已跟踪外的所有文件。它们既不存在快照中,也没有被放入暂存区。比如:刚刚提交一次新的快照后新建的文件。
Figure1: 文件的状态变化周期
检查当前文件状态:git status。
跟踪新文件:git add xxfile。即给新文件一个快照。git add命令是精确地将文件状态添加到下一次提交中,也就是说在你提交以前,只要是对文件有新的操作,都应该再此执行此命令,才能保证把最新的修改提交上去。
查看已暂存和未暂存的修改:git diff。此命令比较的是工作目录中当前文件和暂存区域快照之间的差异。 也就是修改之后还没有暂存起来的变化内容。若要查看已暂存的将要添加到下次提交里的内容,可以用 **git diff –staged **命令。 这条命令将比对已暂存 文件与最后一次提交的文件差异。
提交更新:git commit。另外,你也可以在 commit 命令后添加 -m 选项,将提交信息与命令放在同一行,如下所示:
|
|
好,现在你已经创建了第一个提交! 可以看到,提交后它会告诉你,当前是在哪个分支(master)提交的,本 次提交的完整 SHA-1 校验和是什么(463dc4f),以及在本次提交中,有多少文件修订过,多少行添加和删改过。
跳过使用暂存区:git commit -a。只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add步骤。省去了,对暂存文件修改后,每次运行git add。
移除文件:git rm file。要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。 可以用git rm命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。如果要删除之前修改过或已经放到暂存区的文件,则必须使用 强制删除选项 -f(译注:即 force 的首字母)。
改名文件:git mv file_from file_to。其实,运行git mv就相当于运行了下面三条命令:
|
|
查看提交历史:git log
取消暂存的文件:git reset HEAD … 来取消暂存。
取消对文件的修改:git checkout – 。
|
|
查看远程仓库:git remote。你也可以指定选项 -v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。
添加远程仓库:git remote add 添加一个新的远程 Git 仓库。
从远程仓库中抓取与拉取:git fetch ,git clone, git pull。
推送到远程仓库:git push 。