美文网首页
# Pro Git 阅读笔记

# Pro Git 阅读笔记

作者: 简流星 | 来源:发表于2021-06-18 13:46 被阅读0次

第 1 章:起步

1.1 初次运行 Git 前的配置

  • /etc/gitconfig 文件:

    系统中对所有用户都普遍适用的配置。使用 --system 选项读写。

  • ~/.gitconfig 文件:

    用户目录下的配置文件只适用于该用户。使用 --global 选项读写。

    在 Windows 下路径为:C:\Documents and Settings\$USER\.gitconfig。

  • .git/config 文件:

    这里的配置仅仅针对当前项目有效。

配置用户信息

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

配置文本编辑器

$ git config --global core.editor code

配置差异分析工具

$ git config --global merge.tool code

查看配置信息

$ git config --list

1.2 获取帮助

$ git help <verb>
$ git <verb> --help
$ man git-<verb>

第2章 Git 基础

2.1 获取项目的 Git 仓库

在工作目录初始化新仓库

$ git init

从现有仓库克隆

$ git clone https://github.com/schacon/grit.git

2.2 记录每次更新到仓库

文件状态的变化周期

image

检查当前文件状态

$ git status

跟踪新文件或暂存已修改文件

$ git add [file or folder path]

忽略某些文件

.gitignore 文件的格式规范:

  • 空行和注释(#)被 Git 忽略
  • 可以使用标准的 glob 模式匹配
  • 匹配模式最后跟 / 说明要忽略的是目录
  • 要忽略指定模式模式意外的文件或目录,可以在模式前加上 !取反。

.gitignore 文件例子:

# 忽略以 .a 结尾的文件
*.a 
# 但 lib.a 除外
!lib.a
# 仅仅忽略根目录下的 TODO 文件,但不包括子目录下的 TODO
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt

查看已暂存和未暂存的更新

$ git diff

此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。

若要看已经暂存起来的文件和上次提交时的快照之间的差异,可以用:

$ git diff --cached
$ git diff --staged  # 效果一样,但更好记。

提交更新

$ git commit -m "Fix benchmarks for speed"

跳过使用暂存区域

在提交的时候,添加 -a 选项,则可以跳过使用暂存区,直接提交。

$ git commit -a -m "Fix benchmarks for speed"
# 相当于(只对修改过的文件有效)。
$ git add .; git commit -m "Fix benchmarks for speed"

删除文件

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(从暂存区域移除),然后提交。

$ git rm hello.txt

移动文件

$ git mv old-filepath new-filepath

2.3 查看提交历史

$ git log

默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面。

git log 的一些选项:

  • -p

    展示每次提交内容的差异

  • -2

    仅显示最近两次的提交

  • --stat

    显示监要的增改函数的统计

  • --pretty=oneline

    将每个提交放在一行显示(完整哈希)

  • --pretty=format:"%h - %an, %ar : %s"

    以格式化的方式显示提交信息

  • --graph

    以图的方式显示

  • --oneline

    将每个提交放在一行显示(简短哈希)

限制记录范围

使用一下一些选项,可以限制记录的范围:

  • --since, --after

    仅显示指定时间之后的提交

  • --until, --before

    仅显示指定时间之前的提交

  • --author

    仅显示指定作者的提交

  • --committer

    仅显示指定提交者的提交

  • --grep

    仅显示包含选项关键字的提交

$ git log --since=2.weeks
$ git log --pretty="%h - %s" --author=gister --since="2008-01-15" --before="2008-11-01"

2.4 撤销操作

修改最后一次提交

有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 --amend 选项重新提交:

$ git commit -amend -m "message"

取消已经暂存的文件

$ git reset HEAD <file>...

取消对文件的修改

$ git checkout <file>...

2.5 远程仓库的使用

查看当前的远程库

$ git remote -v
$ git remote --verbose

添加远程仓库

$ git remote add [remote-name] [remote-repo-url]

从远程仓库抓取数据

$ git fetch [remote-name]

如果是克隆了一个仓库,此命令会自动将远程仓库归于 origin 名下。

$ git fetch origin

推送数据到远程仓库

$ git push [remote-name] [branch-name]
$ git push origin master # 默认就是 origin 和 master

查看远程仓库信息

$ git remote show [remote-name]

远程仓库的删除和重命名

$ git remote remove <remote-name>
$ git remote rename <remote-old-name> <remote-new-name>

2.6 打标签

列显已有的标签

$ git tag

新建标签

Git 使用的标签有两种类型:轻量级的(lightweight)和含附注的(annotated)。

轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。

含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。

含附注的标签(使用 -a)

$ git tag -a v1.4 -m "version 1.4"

轻量级标签

$ git tag v1.4-lightweight  # 不用 -a 即创建轻量级的标签

后期加注标签(从以前的提交创建标签)

git tag -a v1.2 9fceb02 

可以使用 git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象。

$ git show v1.4

分享标签

默认情况下,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库。

$ git push origin v1.4    # 将 v1.4 推送到远程
$ git push origin --tags  # 将所有的新增的标签推送到远程

第 3 章 Git 分支

3.1 何谓分支

Git 中的分支,其实本质上仅仅是个指向 commit 对象的可变指针。Git 会使用 master 作为分支的默认名字。

Git 是如何知道你当前在哪个分支上工作的呢?其实答案也很简单,它保存着一个名为 HEAD 的特别指针,它是一个指向你正在工作中的本地分支的指针。

image

3.2 分支的新建与合并

新建分支

# 新建分支
$ git branch <branch>
# 切换到分支
$ git checkout <branch>

# 新建并切换到分支
$ git checkout -b <branch>

删除分支

$ git branch -d <branch>

合并分支

$ git merge <branch>

3.3 分支的管理

显示前所有分支的清单

$ git branch

$ git branch -v  # 查看最后一个提交对象的信息

显示已合并或未合并的分支

$ git branch --merged
$ git branch --no-merged

3.5 远程分支

拉取远程数据

$ git fetch [remote-name]

推送本地分支

$ git push [remote-name] [branch-name]

跟踪远程分支

跟踪分支是一种和某个远程分支有直接联系的本地分支。

# 创建跟踪分支
$ git checkout -b [branch-name] [remote-name]/[branch-name]
$ git checkout --track [remote-name]/[branch-name]

删除远程分支

推送时分支名前面加冒号,可以删除远程分支。

$ git push [remote-name]:[branch-name]

3.6 rebase

rebase 命令,可以把在一个分支里提交的改变移到另一个分支里重放一遍。

$ git rebase <branch-name>
image

rebase 的风险

一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。

相关文章

  • svn & git 常用命令(简)2014-12-16

    svn 命令: git 命令: 《pro git》笔记后面梳理

  • # Pro Git 阅读笔记

    第 1 章:起步 1.1 初次运行 Git 前的配置 /etc/gitconfig 文件:系统中对所有用户都普遍适...

  • git相关文章地址

    pro git pro git

  • .git目录结构和数据保存形式

    这是看《Pro Git》底层原理的一点笔记。 Git目录 用git init Test命令创建一个空的Git仓库,...

  • Git Pro 笔记

    基本须知 Git 文件流转的三个工作区域: Git的本地数据目录, 工作目录,以及暂存区域 Git 内只存在三种状...

  • Git学习资源

    Pro Git book 精排版 Pro Git book The GitHub Blog

  • Git 入门

    拓展阅读 Git Pro 中文 开源许可证的一些介绍

  • git

    git 推荐阅读Pro Git电子书。 注意: 设置ssh key的时候不用设置密码,否则每次同步都要输入密码 常...

  • pro git读书笔记

    pro git读书笔记 起步 三种区域以及三种状态 Git 项目有三个工作区域的概念:工作目录,暂存区域以及Git...

  • 常用Git命令

    推荐《Pro Git中文|Pro Git英文》 每天都在使用 Git ,但是很多命令记不住。一般来说,日常使用只要...

网友评论

      本文标题:# Pro Git 阅读笔记

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