前言
最近玩 git
命令游戏(Learn Git Branching (gitee.io))的时候想起原来刚刚入职的时候,对 git
命令不熟悉,提交的时候都要让同事看看有没有弄错。于是写下这篇文章。
大多数刚刚入职的人,并不需要将项目部署到 gitee
的操作,更多的是将项目拉下来,然后新建一个自己的分支,然后开发功能,然后合并到主分支上,可能遇到冲突,然后解决冲突即可。
安装 git
并配置环境
第一步
首先我们注册一下 gitee
,登录进去之后,然后让项目负责人把你拉进项目里面。
第二步
然后我们安装 git
,地址(Git (git-scm.com)),这个下载对应自己系统的版本,然后一直下一步(next)就好了,安装的路径我觉得可以就按默认的路径即可。可以参考一下这篇博客(Git 详细安装教程(详解 Git 安装过程的每一个步骤)_git安装_mukes的博客-CSDN博客)
第三步
接着我们点开刚刚安装好的 git
,下图这样的窗口。
第四步
然后我们需要做的是初始化,初始化自己的信息。在刚刚打开的黑窗口中配置如下信息
bash
# 配置用户名
git config --global user.name "username" //( "username"是自己的账户名,)
# 配置邮箱
git config --global user.email "username@email.com" //("username@email.com"注册账号时用的邮箱)
第五步
接着我们回到 gitee
, 点击 我的
=> 设置
=> SSH公钥
,如下图点击 怎样生成公钥
,
第六步
然后会新开一个标签页,里面会讲解如何生成公钥,接着按照里面的步骤,复制里面的命令粘贴到 git
黑窗口中。粘贴第一个命令后按三个回车,会出现官方给出的类似的图案,接着按官方给出的步骤操作就行,接着将生成好的公钥复制在上图中的公钥框内,标题的话取一个自己喜欢的名字就好了,然后点击确认,需要进行验证,验证通过即可。
拉取项目
接着在D盘新建一个文件夹,比如命名为 work
,然后进入这个文件夹,然后点击右键,找到 Git Bash Here
点击,会出现一个黑窗口,然后去到 gitee
仓库,找到项目负责人把你拉进的项目,比如类似下图一样,点击克隆/下载会有一个下拉窗,点击SSH,然后点击复制按钮
然后去到刚刚的黑窗口中,输入
bash
git clone (刚刚复制的链接)
当项目 clone
下来之后,会在 work
文件夹中生成一个新的文件,这个文件就是刚刚项目负责人拉我们进的项目,然后我们将新生成的文件通过 vscode
打开。然后找到终端, install
项目的包,然后就可以将项目跑起来了。
创建自己的分支与远程仓库相关联
刚刚拉下来的项目,我们可以在 vscode
中的终端的 bash
查看自己所处的分支,一般是 master
分支,这个时候需要问一下负责人需要从哪个分支开始开发,比如说需要从 dev
分支开始开发,那么此时我们回到 gitee
仓库,找到刚刚的项目,点击上图中的分支(在master边上),然后点击新建分支,会出现如下一个弹窗
我们将分支起点切换为 dev
然后给分支名称取一个自己喜欢的名字就好了,建议是英文的,我们以 aaa
为例,然后点击确认按钮,此时,我们在该项目的远程仓库建立了一个分支,但是并未与本地的相关联。然后我们回到编辑器 vscode
中依次输入如下命令
bash
// 本地新建一个aaa分支
git checkout -b test_zeo
// 拉去远程分支代码
git pull origin aaa
// 与远程分支相关联(第一个aaa是远程分支名,第二个aaa是本地分支名)
git branch --set-upstream-to=origin/aaa aaa
就这样,本地就新建了一个 aaa
分支与远程仓库的 dev
分支相关联了。如下图所示,然后就可以开始"写 bug
了"。
提交代码以及解决冲突
每个公司可能有每个公司的提交规范,这个可以问问负责人,而我以自己习惯的为例。当我们开发完一个功能(尽量是一个小功能,一小个功能提交一次,方便更改)。在终端的 bash
中输入如下命令
bash
// 将代码加到暂存区
git add .
// 将代码提交到本地仓库
git commit -m "2023/12/5 xxx功能完成"
// 将代码推送到自己这个分支相关联的远程仓库
git push
然后问问负责人是否需要将此次功能合并到 dev
分支,我们假设要,不然这文章怎么写下去对吧。然后在终端的 bash
中输入如下命令
bash
// 将dev分支代码拉过来
git pull origin dev
// 如果没有冲突
git push
git switch dev
git pull origin aaa
git push
// 如果产生冲突,我们解决完冲突之后(最好再看一下项目还能跑不,功能还在不)
git add .
git merge --continue
git push
git switch dev
git pull origin aaa
git push
// 如果产生冲突了,但是我们不会解决,使用如下命令取消此次拉代码
git merge --abort
cherry-pick
使用场景
某天,你依次开发了10个功能,但是项目第3个功能需要提前上线,你心想,咋操作呢,我现在的分支领先线上版本好几次提交了,低情商回答:我将第3个功能拷贝一份到上线的分支(假设是 master
分支),高情商回答:我 cherry-pick
一下。
bash
// 我们处在aaa分支,测试环境分支是dev分支,线上环境分支是master分支
// 查看我们的提交记录,找到第3个功能对应的哈希值并复制
git log -a
// 切换到master分支
git switch master
git cherry-pick (刚刚复制的哈希值)
// 然后跑起来看一下是不是有这个功能了,如果冲突了,我们可以如下命令取消cherry
git cherry-pick --abort
// 然后去解决冲突再去cherry操作
取消 add
或者 commit
有些情况下我们写好了代码,提交了一半但不需要了,如下图是取消 add
操作
bash
// 取消上一次commit操作
git reset --soft HEAD^
stash
的使用场景
有时候我在 dev
分支开发了一半功能,负责人说停一下手里的活,测试环境加个功能,你心里mmp,写了这么多代码要还原了?赶紧发挥一下我们的高情商回答:我们进行如下操作将刚刚写的代码隐藏
bash
git add .
git stash
然后我们就可以去开发负责人说的功能了,开发完提交上测试之后,我们再展示出前面隐藏的代码
bash
git stash pop
版本回退的使用
某个版本上线了,运营那边说,这次上线的功能好像用户使用减少了,这个功能还是砍掉不要了,那我们就进行版本回退的操作
bash
// 假如我们在master分支,查看一下提交记录
git log
// 然后回退到指定版本
git reset --hard (哈希值)
总结
git
还有许多命令,有的可能也是经常用的,但我并没有总结出来,欢迎大家私信我或评论区留言建议,如若有错误的地方也欢迎指出。好了,我下班了,谢谢大家的观看。