【udacity】用git进行版本控制

udacity 课程 用git进行版本控制
https://cn.udacity.com/course/version-control-with-git–ud123
学习笔记
kaspar
20190308

什么是版本控制

  • 两大类:
    • 集中式模型:所有用户都连接到一个中央的主仓库(master repository)
    • 分布式模型:每个用户都在自己的计算机上拥有完整的仓库
  • 版本控制的目的是帮助你保留项目的详细历史记录,并且能够在不同的版本上进行工作;
  • 仓库(Repository / repo)
  • 工作目录 / 工作区(Working Directory)
  • 暂存区 / 暂存索引 / 索引(Staging Area / Staging Index / Index)
  • 初次设置Git
    设置你的 Git 用户名
    git config --global user.name "<Your-Full-Name>"
    设置你的 Git 邮箱
    git config --global user.email "<your-email-address>"
    确保 Git 输出内容带有颜色标记git config --global color.ui auto
    对比显示原始状态git config --global merge.conflictstyle diff3
    git config --list
  • Git 与代码编辑器
    VSCode 设置
git config --global core.editor "code --wait"

创建Git仓库

  • git init初始化 Git 跟踪所有内容会用到的所有必要文件和目录。
  • git clone <url>于创建一个与现有仓库完全相同的副本.
  • git status它将告诉我们 Git 正在考虑什么,以及 Git 所看到的我们仓库的状态。

查看仓库的历史记录

  • git log于显示仓库中所有 commit 的信息_默认情况下_,该命令会显示仓库中每个 commit 的:
    • SHA
    • 作者
    • 日期
    • 消息
  • git log --oneline用来更改仓库信息的显示方式.
    此命令:

    • 每行显示一个 commit
    • 显示 commit 的 SHA 的前 7 个字符
    • 显示 commit 的消息
  • git log --stat用来显示 commit 中更改的文件以及添加或删除的行数.此命令会:
    • 显示被修改的文件
    • 显示添加/删除的行数
    • 显示一个摘要,其中包含修改/删除的总文件数和总行数
  • git log -p可用来显示对文件作出实际更改的选项。该选项是 --patch,可以简写为 -p.

  • git log -p -w 将显示补丁信息,但是不会突出显示仅更改了空格的行。忽略更改空格的行。
    此命令会向默认输出中添加以下信息:

    • 显示被修改的文件
    • 显示添加/删除的行所在的位置
    • 显示做出的实际更改
  • 可以叠加使用git log -p --stat同时显示两种信息,并且统计信息显示在补丁信息的上方。
  • git show SHA 将仅显示一个 commit.会显示:
    • commit
    • 作者
    • 日期
    • commit 消息
    • 补丁信息

向仓库中添加commit

  • git add <file1> <file2> ...用于将文件从工作目录移到暂存区。
    此命令:

    • 可接受多个文件名(用空格分隔)
    • 此外,可以使用句点 . 来代替文件列表,告诉 git 添加当前目录至暂存区(以及所有嵌套文件)
  • git commit会取出暂存区的文件并保存到仓库中
    此命令:

    • 将打开配置中指定的代码编辑器
    • 可以加 -m 绕过编辑器
      git commit -m "Initial commit"
  • git diff用来查看已经执行但是尚未 commit 的更改.
    此命令会显示:

    • 已经修改的文件
    • 添加/删除的行所在的位置
    • 执行的实际更改
  • .gitignore文件
    .gitignore 文件用来告诉 git 不应跟踪的文件。该文件应该放在 .git 目录所在的目录。

标签、分支和合并

标签

  • git tag -a v1.0
    上述命令将打开代码编辑器,并等待你为标签输入信息。向最近的commit中添加标签。
    注意:在上述命令中,使用了 -a 选项。该选项告诉 git 创建一个带注释的标签,会额外显示以下信息:

    • 标签创建者
    • 标签创建日期
    • 标签消息
  • git tag -d v1.0
    删除git标签
  • git tag -a v1.0 a87984
    向具体的commit中添加标签
  • git branch
    列出所有分支,活跃的分支旁边有一个星号;

分支

  • git branch footer_fix
    创建新的“footer_fix”分支
  • git checkout footer_fix
    切换分支
  • git branch -d footere_fix
    删除该分支
  • git checkout -b footer master
    使用新的 git checkout 命令来创建新的 footer 分支并让此 footer 分支的起点位置与 master 分支的一样.
    git checkout 命令可以创建一个新的分支。如果你添加 -b 选项,则能够用一个命令创建分支并切换到该分支。
  • git log --oneline --decorate --graph --all
    同时查看所有分支
    使用--graph--all选项

合并

将分支组合到一起成为合并。

  • git merge <other-branch>
    合并有以下两种类型:

    • 快进合并 – 要合并的分支必须位于检出分支前面。检出分支的指针将向前移动,指向另一分支所指向的同一 commit。
    • 普通类型的合并
    • 两个完全不同的分支被合并
    • 创建一个合并 commit
  • 合并失败时,就称为合并冲突
  • 当相同的行在要合并的不同分支上做出了更改时,就会出现合并冲突。git 将在合并途中暂停,并告诉你存在冲突,以及哪些文件存在冲突。要解决文件中的冲突:
    • 找到并删掉存在合并冲突指示符的所有行
    • 决定保留哪些行
    • 保存文件
    • 暂存文件
    • 提交 commit

      注意一个文件可能在多个部分存在合并冲突,因此检查整个文件中的合并冲突指示符,搜索 <<< 能够帮助你找到所有这些指示符。

撤销更改

  • git commit --amend来更新最近的commit,而不是创建新的commit
  • git revert <SHA-of-commit-to-revert>
    此命令:

    • 将撤销目标commit所做出的更改
    • 创建一个新的commit来记录这一更改
  • git reset <reference-to-commit>
    它可以用来:

    • 将 HEAD 和当前分支指针移到引用的 commit
    • 使用 --hard 选项清除 commit
    • 使用 --soft 选项将 commit 的更改移至暂存区
    • 使用 --mixed 选项取消暂存已被 commit 的更改

    我们通常会用到祖先引用来指代之前的 commit。祖先引用包含:

    • ^ – 表示父 commit
    • ~ – 表示第一个父 commit

[bdbtn]https://www.ersaijun.cn/blog/wp-content/uploads/2019/04/github-git-cheat-sheet.pdf[/bdbtn]

 

《【udacity】用git进行版本控制》有2条留言

  1. Nice post. I was checking continuously this blog and I’m impressed!

    Very helpful information particularly the last part 🙂 I care for such info much.
    I was looking for this certain info for a very long time.
    Thank you and best of luck.

留下评论