25.0 本课内容
- 如何将 Git 用于自己计算机上的单独项目
- 如何新建仓库(repository)并进行提交(commit)
- 在 Git 进行合并和分支以及使用上述工具追踪项目的更改
25.1 练习初始化仓库
初始化./创建新的 Git 代码库:git init
当初始化 Git 代码库的时候, Git并不会自动进行 commit
当 Git 要进行提交的时候,并不需要将整个 Git 仓库进行提交,而可以选择性的将文件添加到存储区域,该命令为:git add
如果你意外地将某个文件添加到暂存区中,可以使用
git reset
删除它。例如,如果你意外地添加了 lesson_2_reflections.txt,但不想提交它,请运行git reset lesson_2_reflections.txt
,此命令会从暂存区中删除该文件,但它仍在你的工作目录中。
自我们上次再次查看概念图以来,我们引入了一些新概念。
git init
(git 初始化)
git add
(git 添加)
git status
(git 状态)
staging area
(暂存区)
working directory
(工作目录)
[//]: #()
[//]: # (This may be the most platform independent comment)
25.2 写好提交信息
在将仓库进行提交的时候,需要编写提交信息,以说明所做的更改。可以通过命令行指定提交信息,git commit -m "Commit message"
。
设置编辑器仍然是一种好的做法,因为这可更轻松地编写较长的提交信息,以全面说明所做的更改。
提交信息的风格
虽然提交信息的风格因人而异,但此风格指南介绍了在编写提交信息时的一些常见最佳做法。
25.3 再次学习 git diff
git diff
有了新功能,如下:
git diff
:比较 working directory 以及 staging area
git diff --staged
:比较 staging area 以及 repository 中最新的 commit
git diff commit1 commit2
:比较 repository 中的 commit1 和 commit2
25.4 分支 Branch
branch
实际就是 Git
为了操作方便而对 commit
添加的标签(label)。使用 git branch
创建和查看分支。
直接
git branch
可以显示当前的分支
而给 git branch 后赋一个参数后,则会新建一个与参数同名的分支:git branch easy-mode
- 使用
git branch branch_name
创建以 branch_name 命名的 branch。 - 使用
git checkout branch_name
检出以 branch_name 命名的 branch。
上述两条命令可以简单表示成:
git checkout -b branch_name
- 使用
git commit
以提交添加到存储区域的内容。 - 使用
git log --graph --oneline branch1_name branch2_name
以查看branch1_name
和branch2_name
分支的提交记录。
25.5 练习合并简单文件(将多个分支中的更改合并到单一版本)
Git 创建单一版本将多个分支的所有更改包含在内的合并策略。
Git 根据当前两个 branch 最新的 commit,以及它们 fork 之前的 commit 的记录(即形成分支的时候所具有的原始文件)来创建者两个分支的合并提交。当前两个分支的最新提交均为该合并提交(merged commit)的父提交。
使用 git merge master new-branch
合并 master
与 new-branch
并且将合并后的提交作为 master
的新顶点。
使用 git show commit_id
通过该命令查看 commit_id
与其父级 commit
当中的更改,而无需了解父级 commit
到底是哪个
使用 git branch dash -d branch-name
将标签 branch-name
删除,但并不会删除分支中的提交。-d 指代 delete
25.6 练习合并冲突 & 检测冲突
合并冲突(merge conflict):意味着 master
和 branch_name
更改了某文件的同一部分。Git 自身无法判断哪些更改需要保留,因此会提示作者进行抉择。
25.7 概念图:分支和合并
分支与合并都需进行提交,但提交与分支/合并之间到底有什么关系?
分支实际上就是提交的标签(label)