0.1 Git 是一种分布式版本控制系统
使用 Git 可以方便地管理代码的版本,以及在不同的分支上开发不同的功能。它可以跟踪代码的变更历史,并且支持多人协作开发。
在使用 Git 时,我们通常需要先初始化一个仓库,创建一个.git文件夹来存储版本控制相关信息。接着,通过 git add 命令将修改添加到暂存区,然后使用 git commit 命令将修改提交到本地仓库。如果需要与远程仓库同步代码,可以使用 git pull 命令从远程获取最新代码,或者使用 git push 命令将本地提交推送到远程。
以下是一个简单的例子:
- 初始化一个新的Git仓库
$ mkdir myproject
$ cd myproject
$ git init
- 添加文件并提交修改
$ touch README.md
$ echo "Hello, Git!" > README.md
$ git add README.md
$ git commit -m "Add README.md"
- 查看提交历史
$ git log
commit 4dfad1d97a4a12c6e22e9f8c0b7d6b9292e7ff56 (HEAD -> master)
Author: John Doe <johndoe@example.com>
Date: Mon Sep 20 10:00:00 2021 +0800
Add README.md
0.2 git 提交暂存
提交暂存(git add)是将修改过的文件放入暂存区,等待下一次提交。这样做的意义在于可以对修改进行分组,更加方便管理和记录变更历史,一次性提交多个文件。
例如,当我们在一个项目中修改了多个文件,但这些修改并不是同一个功能或同一个模块的内容时,使用提交暂存可以将它们分别放入不同的暂存区域。在下一次提交时,可以分别提交这些暂存区域的内容,并附上相应的注释说明。
0.3 git 提交注释
提交注释(git commit)是对当前所有暂存区域的修改进行一次性提交,并附上详细说明。这样做的意义在于方便管理和查看项目的变更历史记录。通过查看每次提交所对应的注释说明,可以清楚地了解每个版本所做出的改动和原因。
例如,在一个团队协作开发项目中,每个成员都需要进行频繁的提交操作。如果没有提交注释来记录每次提交所对应的内容和意义,那么在出现问题或需要回滚版本时将会非常困难。而有了提交注释后,任何人都可以轻松查看到每个版本所做出的改动和原因,并快速定位问题点、回滚版本等操作。
0.4 git checkout 命令来回到曾经的某一版本
*可视化中可以直接双击某一结点
- 首先,使用git log命令查看提交历史记录,找到想要回退到的版本号(例如commit id为abcdefg)。
$ git log
commit abcdefg (HEAD -> master)
Author: xxx <xxx@example.com>
Date: Fri Jun 25 16:47:41 2021 +0800
Commit message
...
- 使用git checkout命令加上想要回退的版本号,例如:
$ git checkout abcdefg
Note: checking out 'abcdefg'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at abcdefg... Commit message
执行这个命令后,会提示你已经处于“分离头指针”状态。在这个状态下,你可以查看代码、修改代码并提交修改等操作。如果不小心做出了错误的修改,可以直接切换到其他分支或版本来撤销修改。
- 如果需要在某个特定分支上进行修复或开发工作,请先创建新的分支:
$ git checkout -b new_branch_name
Switched to a new branch 'new_branch_name'
这时你就可以在新的分支上进行修复或开发工作了。如果需要回到原来的分支,只需要使用git checkout命令就可以了。
$ git checkout original_branch_name
Switched to branch 'original_branch_name'
0.5 git 分支和合并分支
Git 分支是一种指向 Git 仓库中特定提交的指针。分支允许您在同一仓库中同时开发多个功能。合并分支是将两个或多个分支的更改合并到一个单独的分支中。
*分支,就是指针 指针,简而言之就是“当前” 使用 checkout 命令可以移动分支。
操作步骤:
- 创建一个新的分支
git branch new_branch_name
- 切换到新的分支
git checkout new_branch_name
- 在新的分支上进行修改和提交
git add .
git commit -m "commit message"
- 切换回主分支
git checkout master
- 合并新创建的分支到主分支
git merge new_branch_name
-
解决冲突(如果有)
-
提交更改
git add .
git commit -m "commit message"
- 推送更改到远程仓库
git push origin master
0.6 git 分支管理工作流
Gitlab 推荐的工作流是在 GitFlow 和 Github Flow 上做出优化,既保持了单一主分支的简便,又可以适应不同的开发环境。
原则:上游优先(upstream first)
只有在上游分支采纳的代码才可以进入到下游分支,一般上游分支就是 master。
分支管理工作流 | 特点 |
---|---|
Git Flow | 分支类型丰富,规范严格 |
Github Flow | 只有主干分支和开发分支,规则简单 |
Gitlab Flow | 在主干分支和开发分支之上构建环境分支,版本分支,满足不同发布or环境的需要 |