目前Git已经是大部分公司默认的版本控制工具,也是一个软件开发人员必会的技能。最近公司招了几个刚入行的新人不会使用Git,为了帮助他们快速了解和上手Git,就给他们大致讲解了一些基本操作。
Git是分布式的版本管理系统,所以每一个Git客户端必须明确地自报家门,配置你的用户名和电子邮箱,方便大家检索到你(这个 Bug 是不是你写的?)你可以全局配置它们:
# 全局名称为 felord
git config --global user.name felord
# 全局信箱为 felord@felord.com
git config --global user.email felord@felord.com
❝初始化 Git 仓库如果你不想配置全局,你还可以在具体项目的根目录下 使用
git config --local
为该项目添加独立的配置。
这是每一个项目被Git仓库托管的开始。假如你的项目已经建立并编写了不少的代码,你可以执行
# 转到代码的目录 执行 git init
cd /path/to/your/existing/code
git init
如果你想初始化一个新的项目并由Git托管。你可以换个方式执行git init
命令:
git init <项目的目录路径>
还有一种初始化的方式就是使用git clone
命令克隆远程项目到本地,这种方式每一个接触 Git 的人应该已经熟知了。
git clone https://github.com/NotFound403/payment-spring-boot.git
提交变更到本地然后你编写了一些代码或者改动了一些代码,你需要把这些变更先提交到本地然后才能提交给远程仓库。如果这些代码没有被Git管理,你需要执行:
# 添加文件到Git
git add /path/file
# git add ./cn/felord/Test.java
然后提交到本地仓库:
git commit -m '提交的信息'
如果想规范提交信息,可参考我的另一篇文章Git 提交规范。
推送代码到远端如果你是git clone
获取的项目,直接使用git push
就可以了。如果你是一个没有关联远端Git仓库的新项目,你可以通过以下命令进行关联:
# git remote add origin https://github.com/NotFound403/payment-spring-boot.git
git remote add <名称 通常是 origin> 项目的远程仓库地址
当然你可以添加多个远端,比如同时托管到Gitee和GitHub,但是同时只能推送到一个远端仓库。
然后执行下列命令就可以将代码提交的远端仓库:
# 将代码提交到 origin 仓库的 master 分支
git push -u origin master
检出分支master
分支的代码通常只合并完全没有问题的、可发布的代码。通常我们在开发或者修复 Bug 时会切换到其它分支进行,通常有以下几种Git工作流。
GitFlow
你可以使用git checkout
命令来进行分支切换,例如切换到dev
分支:
git checkout dev
如果你接到一个新需求或者修复一个新 Bug,而且被要求在新的分支上进行开发,则可以通过以下命令来新建并切换到一个新分支:
# 创建并切换到一个新特性开发分支
git checkout -b feature/9527
恢复/保存进度当你开发着一个需求时,产品经理跑了过来告诉你有一个很急很关键的需求,明天上线!你不得不弄一个新分支,可你当前的需求还没搞完,除非git commit
之后才能切换分支。但是把没有完成的工作commit
不太利于维护 Git Log。这就用到另一个命令https://www.3tt.net/?mod=artinfo&aid=981git stash
了。
git stash save '不急不关键的需求暂存信息'
它可以把你未完成的工作暂存起来。等你完成了很急很关键的需求后再切回对应的分支,然后从stash列表中恢复继续开发。
查看状态忘记了说另一个有用的命令git status
了,它用于显示当前工作目录和暂存区的状态。使用此命令能看到哪些修改被暂存到了, 哪些没有, 哪些文件没有被 Git tracked 到。
> git status
On branch dev
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: src/main/java/cn/felord/app/util/Coding.java
no changes added to commit (use "git add" and/or "git commit -a")
❝总结如果你要查看提交的历史,就得使用另一个命令
git log
。
如果你是一个项目组长或者负责人,需要掌握的更多,可以去https://git-scm.com/book/zh/v2了解更多;对于一个普通开发者,这些基本命令足够应付日常工作了。给他们讲完后,他们很快就适应了 Git 开发工作流。虽然大多数 IDE 已经有替代了这些命令的可视化操作,但是掌握这些命令依然是有必要的。