美文网首页
Git 学习记录

Git 学习记录

作者: 捡个七 | 来源:发表于2019-01-07 14:23 被阅读0次

如何工作

版本控制系统

版本控制系统有两类:集中式分布式。 分布式版本系统的代表是 Git,而集中式版本系统的代表是 SVN(Subversion)。

集中式和分布式的区别在于:集中式只有中心服务器有一份代码,而分布式则是每个人的电脑上都有一份代码。这样就会存在安全问题,当中心服务器挂掉的时候,使用集中式版本控制系统的团队就没法工作了。而且集中式版本管理系统依赖中心服务器,所以必须联网才能操作。而 Git 没网也能进行创建项目,修改代码等操作,有网后再 push 到远程的服务端即可。

Git 的基本工作流


如上图所示,是 Git 的基本工作流。一个 Git 项目可以看成以下 3 部分:

  • Working Directory(工作目录):将会在该工作目录下完成所有的操作,如新建,编辑,删除和组织文件。
  • Staging Area(暂存区域):将在其中列出对工作目录所做的更改。
  • Repository(仓库):在其中 Git 将这些更改永久存储为项目的不同版本。

一个基本的 Git 工作流包括:编辑工作目录中的文件,将文件添加到临时区域以及将更改保存到 Git 仓库。

git init

初始化命令。该命令会初始化设置 Git 跟踪项目所做更改所需的所有工具。

git status

查询状态命令。可以在更改后使用该命令来查看当前的状态。

例如,我修改了 git_practice 本地仓库的 README.txt 中的内容。然后使用 git status 来查询当前的状态。如下所示,当前的状态是 modified

git diff

由于跟踪了文件,我们可以检查工作目录和暂存区域之间的差异。这时可以使用 git diff filename 这个命令。在将该文件 add 到暂存区域前使用。

git add

为了让 Git 开始跟踪 README.txt 文件,需要将文件添加到暂存区域。

可以使用 git add filename 这个命令来将文件添加到暂存区。


也可以一次性添加很多的文件:

git add scene-1.txt scene-2.txt scene-3.txt

git commit

git commit 是我们 Git 工作流程的最后一步。该命令用于永久存储来自仓库的暂存区域的更改。

但是,提交还需要一些代码,如选项 -m 后跟消息。如下例子所示:

git commit -m "First commit"  

提交消息的标准约定:

  • Must be in quotation marks 必须使用引号
  • Written in the present tense 使用现在时态
  • Should be brief (50 characters or less) when using -m 信息必须简短,少等于 50 个字符

git log

通常使用 Git 的时候,需要回顾一个项目的早期版本。提交按时间顺序存储在存储库中,所以可以通过 git log 命令查看。

在输出中,需要注意: 一串 40 个字符的代码,称为 SHA,用于唯一标识提交,以橙色文字显示。 之后还包含提交作者 ,提交的日期和时间以及提交消息。

git push

如果需要将本地代码更新至 GitHub 上,可以使用 git push 命令。

git pull

将远程仓库更新至本地仓库可以使用 git pull 命令。

关于 git pushgit pull ,更详细可以查看:阮一峰的博客 - Git远程操作详解

如何回溯

HEAD commit

在 Git 中,当前正在进行的提交称为 HEAD 提交。在许多情况下,最近的提交都是 HEAD 提交。查看 HEAD 提交可以使用git show HEAD 命令。

git checkout

当你不小心修改了源文件中的一些东西,这时候还没有执行 git add 操作,然后又不知道怎么执行 undo 的操作,可以使用这个命令:

git checkout HEAD filename

比如,我将自己 git_practice 这个 repo 的 README.txt 文件进行了一些修改。这时,可以先使用 git diff 来查看修改的内容:

然后使用上面那个新命令 git checkout HEAD README.txt ,最后回去查看 README.txt 文件,发现修改的内容被还原了:

git reset I

当你不小心修改了源文件中的一些东西,并且已经执行了 git add 操作,然后又不知道怎么执行 undo 的操作,可以使用这个命令:

git checkout HEAD filename

比如,我将 README.txtLet's play Git! 这条语句删除,并执行 add 操作。

这时,可以使用 git reset HEAD README.txt 命令。此命令将暂存区域中的文件重置为与 HEAD 提交相同。但它不会还原工作目录中的文件更改,只是将它们从暂存区域中删除。

git reset II

创建项目就像在森林里徒步旅行。有时你走错了路,发现自己迷路了。 就像在徒步旅行中回溯你的步骤一样,Git 也可以让你在转弯前回到部位。这时候可以使用 git reset commit_SHA 命令。

此命令通过使用先前提交的 SHA 的前 7 个字符来工作。例如,如果先前提交的 SHA 为 5d692065cf51a2f50ea8e7b19b5a7ae512f633ba,那么可以这样用:

git reset 5d69206

为了更好的理解这个 reset 的操作,可以看下面这幅图,其中每个圆圈代表一个提交。

  • 在 reset 之前:
    • HEAD 是最近的提交
  • 在 reset 之后:
    • HEAD 进入你之前做出的选择
    • 灰色的提交不再是你项目的一部分了
    • 这时候已经重绕了该项目的历史

遇到的一些问题

参考

[1]. codecademy - Learn Git
[2]. CS-Notes - git

相关文章

  • Git 学习记录

    Git 学习记录 设置Git的user name和email:git config --global user.n...

  • git学习记录

    git init创建git仓库 git add添加文件到仓库 git commit -m "xxx"提交文件到仓库...

  • git 学习记录

    1、git init :初始化所在目录为git仓库(在这个目录里,可以理解为一个虚拟的空间,.git文件隐藏存在,...

  • git 学习记录

    什么是git ,git是一个分布式版本控制工具 ,而svn 是 集中式 给当前的git仓库配置用户名和邮箱 配置用...

  • Git 学习记录

    Git作为项目管理工具,已经成为开发者首选。Git概念繁多,理解不清楚,还真不太好办事。现将这段时间学习使用Git...

  • git学习记录

    工作区{ } 版本库{ } git常用命令 多人协作

  • Git 学习记录

    git addgit commitgit statusgit loggit diffgit reloggit lo...

  • git学习记录

    2016-02-28 git --versiongit config --global user.name ***...

  • Git学习记录

    欢迎访问我的博客muhlenXi,该文章出自我的博客。 版权声明:本文为muhlenXi原创文章,转载请注明出处,...

  • 记录Git学习

    1.git简介 Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓...

网友评论

      本文标题:Git 学习记录

      本文链接:https://www.haomeiwen.com/subject/lnjjrqtx.html