初入git

初始化git仓库

可以使用git init将文件夹初始化成一个空的git仓库,会在文件夹里生成.git隐藏文件,用来存储所有的内部数据。
init
图中,git_demo被初始化成了一个git仓库,同时可以看到.git中所包含的内容。后续有关git的操作都会使用这个仓库来展示。

一些基本的git命令

1
git status

这个命令可以用来查看仓库的状态。


1
git add

这个命令可以将对应的文件进行追踪。git add .可以追踪所有的文件。


1
git commit

这个命令可以将追踪的文件进行提交,同时可以对该次提交添加注解。可以使用git commit -m 'xxx'对提交进行快速注解。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
git log
```
这个命令可以可视化提交历史。
但更常用的是他的魔法咒语:`git log --all --graph --decorate`
这是一个图结构的提交历史,可以更好地展示提交之间的关系。另外,可以添加`--oneline`,展现省略部分信息后的图结构提交历史。

<hr>

```shell
git checkout
```
这个命令允许我们改变当前工作目录到指定的历史提交。后面可以跟上对应提交的哈希值(不需要完整的哈希值)转到对应的提交。同时也可以键入分支名来回到对应的版本。

<hr>

```shell
git diff

这个命令可以显示当前目录与上一次快照相比发生了什么变化,当然也可以比较指定的两个版本之间的变化,通过哈希值或分支名。


问题:哈希值到底代表着什么?
我们可以使用git cat-file来展示哈希值背后到底代表着什么。
cat-file
从图中可以看出,我们从第一次提交的哈希值开始,一步步深入,最后通过哈希值找到了对应文件中的内容。

有关分支和合并

在初始化仓库后,会有一个master引用,‘master’通常代表项目的最新版本。同时还有一个特殊对的HEAD引用,它基本上用于指向你当前正在查看的提交。因此一开始HEAD指针指向master。进入不同的分支通常是由HEAD指针的移动来实现的。

我将通过language.py文件更好地展示有关分支和合并的操作。
首先让我们看一下master分支下的language.py文件。
language_English


然后我们创建两个不同的分支分别为language.py文件增加新的不同功能。这里使用到了git branch创建新的分支。我们创建两个名为ChineseJapanese两个分支。
branchs
此时这两个分支和master在同一位置。


我们各自为新建的两个分支增添一些内容。使用git checkout使HEAD指向对应分支。
add_Chinese
add_Japanese
日志输出结果如下图:
log1
可以清楚地看到对应的分支。


接下来我们将合并分支,用到git merge命令。
合并时,git会自动处理没有冲突的部分,如果遇到冲突,则可以手动处理,也可以借用插件帮助处理。
merge
我选择手动解决冲突,如何使用插件目前还没有深入的了解。
合并后,日志输出如下:
log2
可以清楚地看到分支合并成了一条主分支。


未完待续…

-------------本文结束,感谢您的阅读-------------