前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git 学习记录

Git 学习记录

作者头像
caoqi95
发布2019-03-28 11:59:03
3770
发布2019-03-28 11:59:03
举报

如何工作

版本控制系统

版本控制系统有两类:集中式分布式。 分布式版本系统的代表是 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 这个命令来将文件添加到暂存区。

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

代码语言:javascript
复制
git add scene-1.txt scene-2.txt scene-3.txt
git commit

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

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

代码语言:javascript
复制
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 的操作,可以使用这个命令:

代码语言:javascript
复制
git checkout HEAD filename

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

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

git reset I

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

代码语言:javascript
复制
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,那么可以这样用:

代码语言:javascript
复制
git reset 5d69206

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

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

遇到的一些问题

参考

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.01.07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何工作
    • 版本控制系统
      • Git 的基本工作流
        • git init
          • git status
            • git diff
              • git add
                • git commit
                  • git log
                    • git push
                      • git pull
                      • 如何回溯
                        • HEAD commit
                          • git checkout
                            • git reset I
                              • git reset II
                                • 遇到的一些问题
                                  • 参考
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档