分布式版本管理软件git的使用

git 基础知识#

git:分布式版本管理软件

版本管理:记录文件变更记录

分布式:可以有多个本地版本库,A 电脑可以有一份、B 电脑也可以有一份,各自独立,通过远程版本库合并协同统一

集中式:只有一个远程版本库(svn,cvs,多人协同需提交至远程版本库)

图片

查看配置信息

  • git config –global –list

配置提交的显示的用户名与邮箱

  • git config –global user.name “显示的用户名”

  • git config –global user.email “显示的邮箱”

git 工作目录划分

图片

一般都有远程仓库,从远程仓库直接克隆即可

  • git clone address (远程仓库地址)

本地测试时,也可以初始化本地仓库

  • git init

添加文件至暂存区

  • git add (指定文件)

  • git add . (. 代表所有变更文件)

查看 git 文件管理状态

  • git status

提交文件至本地版本库

  • git commit -m

比较文件变更记录

显示暂存区和工作区的差异

  • git diff

显示暂存区和上一次提交 (commit) 的差异

  • git diff –cache

显示两次提交之间的差异

  • git diff [first-branch]…[second-branch]

查看提交记录

  • git log

本地版本库回退至指定版本,具体参数看文档即可

  • git reset

查看回退历史记录

  • git reflog

放弃工作区修改

  • git checkout – file (与切换分支命令一致,多了–)

撤销暂存区修改,回退至工作区

  • git reset (命令与版本回退一致)

场景使用案例

图片

  • 1. 放弃工作区文件修改 git checkout HEAD

  • 2. 放弃暂存区修改 git reset HEAD , 回退至工作区,如需放弃,则参考 1

  • 3. 本地分支回退,git reset commit_id

远程仓库#

图片

添加远程版本库关联

  • git remote add origtin (远程版本库别名) address (远程仓库地址)

推送本地版本库至远程版本库

  • git push -u origin master (本地主分支)

查看远程版本库信息

  • git remote -v

克隆远程版本库

  • git clone address (远程仓库地址)

分支管理#

创建分支并切换分支

  • git checkout -b

创建分支

  • git branch dev

切换分支

  • git checkout dev

查看分支

  • git branch

删除分支

  • git branch -d

合并分支

  • git merge

当你要切换分支时且工作区已经改动了代码,可先把工作区代码暂时存储下来,保存在堆栈区

  • git stash

查看堆栈区暂存信息

  • git stash list

从堆栈区恢复

  • git stash pop

复制某个提交至当前分支

  • git cherry-pick commit_id

拉取远程代码

  • git pull address (git 地址)

多人协作工作模式

  • 1.git push original

  • 2. 若失败,git pull

  • 3. 若冲突,解决冲突,git commit -m ‘备注信息’

  • 4. 推送,git push

合并多个分支的提交信息

  • git rebase

标签管理#

创建标签 git tag v1.0

删除标签 git tag -d v1.0

查看标签 git tag

标签明细

git show

忘记打标签,补标签

查看提交版本

  • git log –pretty=oneline –abbrev-commit

  • git tag v0.9 f52c633

还可以创建带有说明的标签,用 - a 指定标签名,-m 指定说明文字:

  • git tag -a v0.1 -m “version 0.1 released” 1094adb

推送单个标签至远程仓库 git push origin

推送所有标签至远程仓库 git push origin – tags

其他

仓库管理站点:github gitgee

版本库软件:source tree

某些文件不添加至版本库,则把这些文件或目录添加至.gitignore 文件中即可

Git Flow 介绍#

Production 分支

也就是我们经常使用的 Master 分支,这个分支最近发布到生产环境的代码,最近发布的 Release, 这个分支只能从其他分支合并,不能在这个分支直接修改。

Develop 分支

这个分支是我们是我们的主开发分支,包含所有要发布到下一个 Release 的代码,这个主要合并与其他分支,比如 Feature 分支

Master/Devlop 分支

所有在 Master 分支上的 Commit 应该打上 Tag,一般情况下 Master 不存在 Commit,Devlop 分支基于 Master 分支创建

Feature 分支 feature1 feature2

Feature 分支做完后,必须合并回 Develop 分支,合并完分支后一般会删点这个 Feature 分支,毕竟保留下来意义也不大。

Release 分支

Release 分支基于 Develop 分支创建,打完 Release 分支之后,我们可以在这个 Release 分支上测试,修改 Bug 等。同时,其它开发人员可以基于 Develop 分支新建 Feature (记住:一旦打了 Release 分支之后不要从 Develop 分支上合并新的改动到 Release 分支) 发布 Release 分支时,合并 Release 到 Master 和 Develop, 同时在 Master 分支上打个 Tag 记住 Release 版本号,然后可以删除 Release 分支了。

Hotfix 分支

hotfix 分支基于 Master 分支创建,开发完后需要合并回 Master 和 Develop 分支,同时在 Master 上打一个 tag。

基本流程#

图片

开发代码流程

  1. 拉取代码

  2. 主分支 master 远程分支 master

  3. 基于 master 分支 创建 develop 分支

  4. 基于 develop 分支 创建 feature-* 分支

  5. feature-* 分支开发完 合并至 develop 分支

  6. 基于 develop 分支 创建 release 分支

  7. release 分支测试完 合并至 master 分支 /develop 分支

  8. 推送 master 分支 /develop 分支

  9. 打标签,标签推送至远程

常用命令#

帮助

  • git help 显示某个命令的详细使用文档

  • git -h 显示某个命令的使用说明

初始配置

  • git config –global user.name [] 配置用户名

  • git config –global user.email [] 配置邮箱

  • git config –global core.editor [] 配置编辑器

创建项目

  • git clone 克隆远程仓库

  • git init [project] 初始化本地项目

添加

  • git add 添加文件到暂存区

  • git commit -m 将暂存区的内容提交到 HEAD

  • git commit -am 将 add 和 commit 合并操作

  • git commit –amend -m 将 add 和 commit 合并操作且合并到上次 commit

显示

  • git status 显示状态

  • git diff [HEAD] 显示差异

  • git log 显示日志

  • git show 显示某个 commit 的详细内容

  • git blame 显示文件每行的 commit 信息

撤回

  • git restore 撤回工作区的修改

  • git restore –staged 将已提交到暂存区的修改撤回工作区

  • git reset [–mixed] 将当前版本撤回到某个 commit,保留工作区的修改

  • git reset –soft 将当前版本撤回到某个 commit, 保留工作区和暂存区的修改

  • git reset –hard 将当前版本撤回到某一个 commit,不保留工作区的修改

  • git rm 将文件从工作区和暂存区删除

  • git mv 将文件从工作区和暂存区移动或改名

分支

  • git branch [–list] 显示所有分支

  • git branch -a 显示远程分支

  • git branch 创建分支

  • git branch -d|-D 删除分支

  • git branch -m 重命名当前分支

  • git switch 切换到已有分支

  • git switch -c 创建并切换分支

  • git merge 将某个分支合并到当前分支

  • git tag 给当前分支打标签

  • git stash 将工作区的更改存储到脏工作目录中

  • git stash apply 将脏工作目录中的数据恢复到工作区(不会删除脏工作目录保存的数据)

  • git stash drop 将脏工作目录中的数据删除

  • git stash pop 将脏工作目录中的数据恢复工作区并删除脏数据

远程

  • git remote [-v] 显示远程库

  • git remote show 显示某个远程库的信息

  • git remote add 添加远程库链接

  • git remote rm 删除远程库链接

  • git remote rename 重命名远程库

  • git pull [] 拉取远程库到本地库

  • git push [-u] 将本地库推送到远程库

  • git push origin –delete |git push origin :crazy-experiment 删除远程分支

  • git fetch 从远程库获取到本地库

checkout 该命令职责不明确,不建议使用;

  • git checkout 丢弃工作区的修改

  • git checkout -f 强制丢弃工作区和暂存区的修改

  • git checkout 切换分支

  • git checkout -b 创建并切换分支

参考文章
原文链接

本作品采用《CC 协议》,转载必须注明作者和本文链接
写的不好,就当是整理下思绪吧。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。