工作区(Workspace):存放项目代码的地方。

暂存区(Stage):存放临时的改动,事实上它只是一个文件,保存即将提交到文件列表信息。

资源库(Repository):安全存放数据的位置,这里面有提交到所有版本的数据。其中 HEAD 指向最新放入仓库的版本。

创建仓库命令

下表列出了 git 创建仓库的命令:

命令

说明

git init

初始化仓库

git clone

拷贝一份远程仓库,也就是下载一个项目。


提交与修改

Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。

下表列出了有关创建与提交你的项目的快照的命令:

命令

说明

git add

添加文件到暂存区

git status

查看仓库当前的状态,显示有变更的文件。

git diff

比较文件的不同,即暂存区和工作区的差异。

git commit

提交暂存区到本地仓库。

git reset

回退版本。

git rm

将文件从暂存区和工作区中删除。

git mv

移动或重命名工作区文件。

Git 的提交流程分为三个步骤:修改文件 --> git add --> git commit

当你添加、修改或删除文件之后,你需要使用 git add 命令将它们添加到 Git 的暂存区中,即将更改添加到下一个提交中。

提交日志

命令

说明

git log

查看历史提交记录

git blame <file>

以列表形式查看指定文件的历史修改记录

包括三个字段:type(必需)、scope(可选)和subject(必需)。

type(必填):

type用于说明 commit 的类别。

feat:新增功能 (ADD,feature)

fix:bug 修复

refactor:重构代码(既没有新增功能,也没有修复 bug)

perf:性能, 体验优化

revert:回滚某个更早之前的提交

远程操作

命令

说明

git remote

远程仓库操作

git fetch

从远程获取代码库

git pull

下载远程代码并合并

git push

上传远程代码并合并

git remote add origin https://gitee.com/sadj9876/git-test01g.git
git push -u origin "master"

分支操作

列出分支基本命令:

git branch

可以使用 git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下,从而在该分支中操作

一旦某分支有了独立内容,你终究会希望将它合并回到你的主分支。 你可以使用以下命令将任何分支合并到当前分支中去:

git merge

我们将前一个分支合并到 master 分支,一个合并冲突就出现了(git diff查看),接下来我们需要手动去修改它。

用 git add 要告诉 Git 文件冲突已经解决

用rebase更新主线分支的最新提交到当前分支,这样的好处是自己的提交一直是在最上边,方便回退,而且提交历史都是一条线,清晰明了;但是merge也有个好处就是可以看到主线分支的某一个提交是从哪一个节点切出去进行的开发,可以更清晰的定位,两个都有好处

idea中的操作

Manage Remotes... :管理远端

创建补丁,记录当前提交所影响的文件,别人或者别的时刻要应用这个变更时读取补丁,相当于手动的Cherry Pick


Cherry Pick

cherry-pick命令“复制”一个提交节点并在当前分支做一次完全一样的新提交。

回退

反做,会自动生成提交

多个提交压缩

Rebase

衍合是合并命令的另一种选择。合并把两个父分支合并进行一次提交,提交历史不是线性的。衍合在当前分支上重演另一个分支的历史,提交历史是线性的。本质上,这是线性化的自动的 cherry-pick。

拉去远端

新建分支开发,同时远端master有新的提交

切回master分支,git pull

切回feature1做rebase,并测试

切到master,并rebase

Q.E.D.