前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git 整理 v1.0 | Git 操作整理-基础篇

Git 整理 v1.0 | Git 操作整理-基础篇

作者头像
syy
发布2020-04-13 19:48:17
3940
发布2020-04-13 19:48:17
举报
文章被收录于专栏:多选参数多选参数

0. 前言

这是一份学习和使用 Git 做的一份整理,附上了本篇内容的提纲。

1. Git 的三个区域

在正式 git 之前,我们先来了解一下 git 的 3 个区域,分别是工作目录、暂存区、版本历史。这个知识点是尤为重要的,在理解了这三个区域之后,git 的操作才会显得很容易。

  • 工作目录是直接跟文件相关的,比如被 git 管理起来的文件被修改了的话,在使用 git status 命令查看的时候会显示出来。显示的内容就是相比之前的版本 A 变更了的哪些文件;
  • 当使用 git add 命令之后,文件修改的东西就被提交到暂存区了,而工作目录中版本是变化之后了的,比如版本 B。那么使用 git status 之后,暂存区显示的内容是相对版本 A 的变化的文件信息,也相当于是版本 B 的情况;
  • 当使用 git commit 之后,这个更改就被提交到了版本历史中,那么版本历史就从版本 A 变到了版本 B;

2. Git 基础使用

2.1. Git 配置相关

在使用 Git 管理文件系统的时候,需要进行一些配置,比如用户信息的配置。Git 管理文件系统主要分为三个层次,如下所示(PS:只输入下面这些命令是不行的)

代码语言:javascript
复制
# config的三个作用域
# 缺省等同于local
$ git config --local# local只对某个仓库有效
$ git config --global 	# global对登录用户所有仓库有效,在用户根目录下,比如 root 用户就在 /root 目录下有个关于 git 的配置文件
$ git config --system 	# system对系统所有登录的用户有效,基本不用

★ 优先级 local > global > system,也就是说当对一个仓库同时设置了 global 和 local 那么采用local配置的信息。 ”

  • 查看配置信息 有些时候我们也会查看 Git 配置信息等,使用如下命令可以查看相应层次的配置信息 # 显示 config 的配置 加--list $ git config --list --local# 这个只能在git仓库中使用 $ git config --list --global $ git config --list --system
  • 配置信息---以用户信息为例 $ git config --global user.name 'your_name ' $ git config --global user.email 'your_email@domain.com' Git 相对于其他版本控制系统需要这些信息,是因为在版本控制中,做出的修改是跟这些用户信息捆绑在一起的。绑定的 email 是为了,当评审人员对代码提出了相应的修改,那么 Git 管理系统会对修改代码的提交者绑定的 email 发送邮件。所以email 需要是一个有效的 email,能收的到邮件的 email。
  • 清除配置信息 $ git config --unset --local user.name $ git config --unset --global user.name

2.2. 建立 Git 仓库

  • 把已有的项目代码纳入 Git 管理
代码语言:javascript
复制
$ cd 项目代码所在的文件夹
$ git init
  • 新建的项目直接用Git管理
代码语言:javascript
复制
$ git init your_project # 会在当前路径下创建和项目名称同名的文件夹
$ cd your_project

2.3. 仓库管理常用命令

  • git add 主要是把新文件或者文件变动的情况添加到暂存区 $ git add readme.md # 将 readme.md 文件添加到暂存区 $ git add . # 将当前工作目录的所有文件添加到暂存区 $ git add -u # 把修改之后的文件(这些文件已经被管理起来了)一次性提交到暂存区 ★ 暂存区的文件也是相当于被 git 管理了的。 ”
  • git status 可以查看工作目录和暂存区的状态 $ git status ★ Tips:假如 bash 有颜色显示的话,会看到红色是代表工作目录,绿色代表暂存区。 ”
  • git commit 命令进行提交,提交的历史会被记录下来 $ git commit -m 'Add readme.md'# -m 指定 commit 的信息 $ git commit # 这时候会跳出一个文本输入界面,让你输入更多的 commit 信息
  • git mv 将 git 管理的文件进行重命名 git mv readme readme.md # 使用git的方式对文件进行重命名
  • git rm 从 git 管理的文件删除某个已管理的文件,同时把修改的情况添加到暂存区
  • git log 命令查看提交历史,也就是版本演进历史

上面已经稍微使用了一下 git log 命令,这边更加详细的来阐述这个命令 git log# 只查看当前分支(Head所指的分支)的log情况 git log --oneline # 简洁的显示版本更新信息 git log -n2 # n2 代表查看最近两次commit历史 git log -2 # 2 代表查看最近两次commit历史 git log -n2 --oneline # 简洁的显示最近两次的版本更新信息 git log branch_name # 后面跟上分支名表示查看该分支的log日志 git log -all # 列出所有分支的log git log --all --graph # 以图形化的方式查看 git log --oneline --all # 以简洁的方式查看所有分支的log git log --oneline --all -n4# 以简洁的方式查看所有分支的log git helplog# 以web的方式查看log的帮助文档,等同于 git help --web log# 和上面那条效果一样

2.4. 分支相关

分支就相当于一个独立的开发空间,比如前端和后端开发,前端开发可以建立一个分支,后端开发也可以建立一个分支,但是彼此在不同工作空间里面工作的时候是互不影响的,当需要集成的时候又可以把他们集成到一个公共的分支上面去。下面是有关分支的操作:

  • HEAD->temp2 表示当前的 HEAD 指向的是 temp2 分支,那么其实真正指向的是该分支最后一次 commit
  • git branch 查看分支情况、创建分支、删除分支 git branch -v # 查看本地分支的详细情况 git branch -a # 查看所有分支,包括远端分支,但没有过于详细的信息 git branch -av # 查看所有分支情况 git branch branch_name hash_value # 创建一个新的分支,基于 hash_value 的这个 commit 创建一个新的分支,hash_value 可以省略,那么默认是基于当前分支的最后一个 commit 创建。 git branch -d branch_name git branch -D branch_name # 这个分支已经有了一些 commit 如下图所示,要想删除 temp 分支就得用 -D
  • git checkout 切换分支或者创建分支 git checkout branch_name # 切换分支 git checkout master git checkout -b branch_name git_id # 创建一个新的分支并切换过去,git_id可以是hash_value,也可以是某个分支的名字(分支的名字其实就指向了某个 commit) git checkout -b temp 9ef147d git checkout -b temp2 master ★ 切换分支,必须在.git的同级目录下执行 ”

2.5. 比较 --- git diff

2.5.1. 不同 commit、分支 之间进行比较
代码语言:javascript
复制
git diff hash_value1 hash_value2 # hash_value1 对应的 comimit 和 hash_value2 对应的 commit 进行比较
git diff hash_value1 hash_value2 -- file_name1 file_name2	# 在上述基础之上,只比较 file_name1、file_name2 这两个文件

git diff branch_name1 branch_name2	# 对两个分支进行比较
git diff branch_name1 branch_name2	-- file_name1 file_name2

git diff HEAD HEAD^		# HEAD 指向的 commit 与该 commit 的父亲 commit 进行比较
git diff HEAD HEAD^1	# 同上
git diff HEAD HEAD^^	# HEAD 指向的 commit 与该 commit 的父亲的父亲 commit 进行比较

git diff HEAD HEAD~		# HEAD 指向的 commit 与该 commit 的父亲 commit 进行比较
git diff HEAD HEAD~1	# 同上
git diff HEAD HEAD~~	# HEAD 指向的 commit 与该 commit 的父亲的父亲 commit 进行比较
git diff HEAD HEAD~2	# 同上

★ 1.可以直接使用 HEAD,因为 HEAD 实际上指向的是某个 commit 的。同理,比较两个分支的差异其实就是比较两个分支最近 commit 的差异,因为分支名其实就是一个指针,指向的还是分支最近的 commit。 2.^ 后面只能跟数字1,一个 ^ 就表示往父亲 commit 这边追溯一个,以此类推 3.~ 后面跟任何数字都可,同样一个 ~ 就表示往父亲 commit 这边追溯一个,以此类推 ”

2.5.2. 暂存区和 HEAD 做比较
代码语言:javascript
复制
git diff --cached

比如一开始的话,HEAD 、暂存区和工作目录都是一样的,都是状态A,并且 readme*.md 文件都已经被跟踪起来了。下面我们修改 readme3.md 文件,之后把它 add 到暂存区。然后使用上述命令进行比较,因为 HEAD 中的是历史,还没有被更新,是状态 A,而暂存区是状态 B,所以可以显示出差异。

2.5.3. 工作目录和暂存区做比较
代码语言:javascript
复制
git diff						# 对所有文件进行比较
git diff -- file_name1 file_name2 # 对指定文件进行比较

比如一开始的话,HEAD 、暂存区和工作目录都是一样的,都是状态A,并且 readme*.md 文件都已经被跟踪起来了。下面我们修改 readme3.md 文件,但是不 add 到暂存区,然后使用上述命令进行比较,由于readme3.md 是在工作区中已经被更改了,工作区是版本 B,而暂存区还没更新是版本 A,所以进行比较会有如下结果。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 多选参数 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Git 的三个区域
  • 2. Git 基础使用
    • 2.1. Git 配置相关
      • 2.2. 建立 Git 仓库
        • 2.3. 仓库管理常用命令
          • 2.4. 分支相关
            • 2.5. 比较 --- git diff
              • 2.5.1. 不同 commit、分支 之间进行比较
              • 2.5.2. 暂存区和 HEAD 做比较
              • 2.5.3. 工作目录和暂存区做比较
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档