在Git中如果你创建了一个空仓库,Git能够分辨从未见过的文件,如上图中的红色的A文件,如果我们需要通过Git来跟踪我们的文件,我们需要将文件添加到仓库中,但是我们不能直接将这些文件直接移动到仓库区中。 上述A文件必须先移动到暂存区,我们可以使用 git add 指令将A文件更改移动到暂存区(暂存区可以存放所有即将提交的文件)。当文件提交到暂存区中后,我们可以使用git cmomit指令将A文件移动到仓库区去。
关于 git add 与 git commit 这两个指令,在接下来的文章中会进行讲解。需要注意的是只有暂存区的内容才会被提交到仓库中去。
同样的修改仓库中的文件,也需要先将修改的文件先添加到暂存区中,然后从暂存区提交到仓库。
开始一个工作区(另见:git help tutorial) clone 将存储库克隆到新目录 init 创建一个空的 Git 存储库或重新初始化一个现有的 处理当前的变化(另见:git help daily) add 将文件内容添加到索引 mv 移动或重命名文件、目录或符号链接 restore 恢复工作树文件 rm 从工作树和索引中删除文件 sparse-checkout 初始化和修改sparse-checkout 检查历史和状态(另见:git help revisions) bisect 使用二分法查找引入错误的提交 diff 显示提交、提交和工作树等之间的变化 grep 打印与模式匹配的行 log 显示提交日志 show 显示各种类型的对象 status 显示工作树状态 增长、标记和调整你的共同历史 branch 列出、创建或删除分支 commit 记录对存储库的更改 merge 将两个或多个开发历史连接在一起 rebase 在另一个基本提示之上重新应用提交 reset 将当前 HEAD 重置为指定状态 switch 切换分支 tag 创建、列出、删除或验证使用 GPG 签名的标签对象 协作(另请参阅:git 帮助工作流程) fetch 从另一个存储库获取下载对象和引用 pull 从另一个存储库或本地分支中提取并集成 push 推送更新远程引用以及关联的对象
查看已有的配置信息 git config –list
(使用“git add/rm ...”更新将要提交的内容) (使用“git restore ...”丢弃工作目录中的更改)
git init 命令的作用 当我们使用 git init 命令创建仓库后,我们能在当前目录下得到一个隐藏的 .git 文件夹,该文件夹下的内容记录了我们所有的commit,及其他信息。该文件下的内容如下所示 在没有向仓库提交任何commit时,多次运行git init命令是没有关系的,git init命令只会多次重新初始化仓库
Git目录结构
该目录下的各个文件的作用大致如下:
branchs 目录 - 存储了所有项目有关的分支信息。 config 文件 - 存储了所有与项目有关的配置设置。 Git 会查看 Git 目录下你当前所使用仓库对应的配置文件(.git/config)中的配置值。这些值仅适用于当前仓库。 例如,假设你将 Git 全局配置为使用你的个人电子邮箱。如果你想针对某个项目使用你的工作邮箱,则此项更改会被添加到该文件中。 Head 文件 - 指示当前Git项目处于哪个分支。 description 文件 - 此文件仅用于 GitWeb程序使用,我们无需关系。 hooks 目录 - 我们会在此处放置客户端或服务器端脚本,以便用来连接到 Git 的不同生命周期事件 info 目录 - 目录包含一个全局性排除(global exclude)文件,用以放置那些不希望被记录在 .gitignore 文件中的忽略模式(ignored patterns) objects 目录 - 此目录将存储我们提交的所有commit refs 目录 - 此目录存储了指向 commit 的指针(通常是“分支”和“标签”)
git clone克隆现有仓库 当然除了使用 git init 来创建仓库以外,我们还可以通过 git clone 命令来克隆现有的项目。通过 git clone 命令我们可以完全拷贝一个项目。而被克隆的项目完全是另一个项目的副本。 克隆一个项目的具体步骤为:输入命令 git clone,然后输入你要克隆的 Git 仓库的路径。 git clone https://github.com/AndyJennifer/SimpleEyes 当然除了使用Http协议克隆项目以外。我们还可以使用本地协议、SSH协议与Git协议。这里以Git协议为例:git clone [email protected]:AndyJennifer/SimpleEyes.git 克隆项目并使用不同的名称 需要注意的是通过 git clone 命令克隆项目,默认情况下,Git会把路径最后一级目录名作为新克隆项目的目录名(如果你的最后一级目录名包括.git,会将该后缀去掉)。如果说我们自定义项目名称呢?粗暴而又简单的方式是找到我们克隆项目的地址,手动重命名即可。但是我们不采用这种粗暴的方法。我们可以 使用如下命令: git clone https://github.com/AndyJennifer/SimpleEyes MyProject 就是在原有的命令中添加空格,并输入我们自定义的项目名称就可以啦。
git status判断仓库的状态 使用 git status 命令可以显示工作目录和暂存区的状态(在上篇文章我们曾经提到过,Git的工作流程主要围绕三个部分,工作区,暂存区与仓库区)。它可以让你看到哪些更改已经被转移,哪些没有转移,哪些文件没有被Git跟踪。进入我们创建的Git仓库,并输入 git status 时,我们能得到下图的输出结果:
On branch master - 这部分告诉我们 Git 位于 master 分支上。关于"master"分支(也就是默认分支)。 No commits yet - 表示项目中没有任何提交,关于commit我们也会在下文进行介绍。 nothing to commit (create/copy files and use "git add" to track) –表示没有任何的提交信息,我们可以通过git add添加文件,使Git能够跟踪。
git log 查看现有的提交信息 默认情况下,使用 git log 命令会显示仓库中每个 commit 的详细提交信息。结合上图,我们来分析下每行所代表的具体内容。这里以第一个历史提交记录为例: commit头信息 commit 543019ea4bca77c31ccd1d06c4ca2ca4b1d69b23 (HEAD -> master, origin/master, origin/HEAD) 在Git中会为每个提交生成一个ID,也就是SHA。在本行中不仅显示了提交的ID,当前所指向的分支为 master git log 命令行日志浏览快捷键 如何加载更多的历史记录呢?在我们的界面中末尾有个冒号:,该冒号表明还可以显示更多的输出行。 当冒号变为单词END时,表示记录显示完毕,那么我们可以按下 q 可以离开分页器
git log --oneline • 每行显示一个 commit • 显示 commit 的 SHA 的前 7 个字符 • 显示 commit 的消息
git log –stat
git log –p git show +sha 使用 git show + SHA 的方式,可以显示特定的提交信息。
git add 命令