因为我使用的是 Windows 系统,所以以下笔记都基于 Windows 系统写就。如果以后有精力玩 Linux 或者有钱买 MacBook,可能会开新的笔记。
哥们并非专业人士,所有知识都来自于到处查找资料和自己的摸索,因此并不系统,也有很多错漏。如果有任何意见和建议,请在评论区给我提喵🥺我很会说谢谢。
Git是什么
Git是一款版本控制系统。具体的原理介绍很容易在互联网上查到。可以参考这里。
为了便于阅读以下笔记,在此简要介绍一下 Git 的某些基本原理。
基础概念
Git 里有三个最基础的概念:工作区、暂存区和版本库。
- 工作区:在电脑里能看到的目录。
- 暂存区:英文叫 stage 或 index。一般存放在
.git
目录下的 index 文件(.git/index)中,所以暂存区也叫作索引(index)。 - 版本库:工作区有一个隐藏目录
.git
,这个不算工作区,而是 Git 的版本库。
工作流程
- 在工作区中修改文件
假设被修改的文件名为Akiyama.txt
。 - 工作区 -> 暂存区
使用git add
命令将工作区中的修改添加到转存区。1
git add Akiyama.txt
- 暂存区 -> 版本库
使用git comment
命令将工作区中的修改提交到转存区。1
git commit -m "Commit message"
- 版本库 -> 远程仓库
使用git push
命令将本地版本库中的修改推送到远程仓库。
这就是Git最基本的工作流程。Git 其他功能都是基于这几个概念实现的。
Git安装
直接 Google 一下「Git」就能下载了。或者直接前往官网下载。
因为众所周知的原因,别用百度。除非对自己的信息识别能力很有信心。
Git使用简介的简介
Git 最基础的使用无非就是「创建新仓库,克隆,添加,提交,推送」几点。
创建新仓库
此时我们新建一个空文件夹,这个空文件夹即将用来存放工程文件。
打开这个文件夹,然后执行:1
git init
现在,我们在这个文件夹内创建了一个新的 Git 仓库。进入文件管理器可以看到一个名为.git
的文件夹,这里面是版本库。
克隆
这一步并不是必须的。
有时候,我们需要克隆已经存在的库——这个库可能是本地仓库,也可能是远端服务器上的仓库。类似svn checkout
,我们使用git clone
来从现有的 Git 仓库里拷贝项目。
1 | git clone <repo> <name> |
1 | <repo>:原仓库的地址。 |
举个例子
我们现在有一个远程仓库github.com/teigensu/git-test
,则可以通过git clone
拷贝到本地。1
2
3
4
5
6
7$ git clone git@github.com:teigensu/git-test.git
Cloning into 'git-test'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 0), reused 6 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (6/6), done.
如果觉得git-test这个名字不好看,可以改成其他名字,比如tset-tig等。命令和运行结果如下所示。1
2
3
4
5
6
7$ git clone git@github.com:teigensu/git-test.git tset-tig
Cloning into 'tset-tig'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 0), reused 6 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (6/6), done.
这两条命令的效果如下图所示。方便起见,我在同一个文件夹下执行了这两个命令,正好做对比。
添加
修改本地文件后,可以通过git add
把更改添加到暂存区。
1 | git add <filename> |
1 | <filename>:指定文件的文件名。 |
举个例子
现在,我们修改了hello.cpp
的内容。ctrl s
保存文件后,可以通过以下方式添加到暂存区。1
$ git add hello.cpp
不出意外的话,什么都不会显示。这就对了。
提交
将更改添加到暂存区后,可以通过git commit
实际提交改动。
1 | git commit -m "Commit message" |
1 | Commit message:本次提交的说明。可以是任意内容。 |
举个例子
添加了hello.cpp
之后,确认没有错误就可以提交。1
2
3
4$ git commit -m "1.0.0"
[master (root-commit) ea5ef77] 1.0.0
1 file changed, 6 insertions(+)
create mode 100644 hello.cpp
运行结果如下图。
推送
如果需要将本地仓库推送到云端,比如 GitHub,应当使用git push
命令。
Git 许多命令都是在本地执行,因此如果要分享代码、与其他人合作,或者将数据存储到云端,就需要将数据放到服务器上。
本笔记以 GitHub 为例。因为博主目前只用得到 GitHub 。
添加远程仓库
1 | git remote add <shortname> <url> |
1 | <shortname>:为仓库指定一个名字,方便后续引用。 |
请注意,如果推送到 GitHub 上的话,需要提前配置验证信息。由于本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 加密的,所以我们需要先生成 SSH Key。
生成 SSH Key
举个例子
推送到远程仓库
1 | git push <shortname> <branch> |
1 | <shortname>:远程仓库的指定名字。 |
提取远程仓库的内容
1 | git fetch //从远程仓库下载新分支与数据 |
删除远程仓库
1 | git remote rm <shortname> |
1 | <shortname>:远程仓库的指定名字。 |