前端开发超实用的GIT教程

目录
文章目录隐藏
  1. 使用 Git
  2. 拉取项目
  3. 分支管理
  4. 内容推送
  5. 代码合并
  6. 解决冲突
  7. 获取更新时的意外情况
  8. 开发到一半,却需要切换分支
  9. 版本回退
  10. 小结
  11. 结束语

前端开发超实用的 GIT 教程
本文主要目的是在多人开发中让你能够熟练使用 Git 命令,完全从实战出发,不大谈原理,只谈实战应用。我们在入职新公司,接触新项目,基本是不需要你自己搭建 Git 项目来托管 code 的,所以搭建这块就直接略过,我只是教大家在前端开发实战时,如何使用 Git 命令轻松搞定多人开发。如果想要更详细的学习 git 教程推荐大家阅读我之前的文章《Git 入门与进阶教程之 Git 基础》《Git 入门与进阶教程之 GitHub

第一件事,肯定就是先安装 Git 了,官网下载 Git 比较麻烦,需要有梯子来帮助你,才能摸到它,这里直接给你一个Github上的镜像地址供你下载安装

使用 Git

安装好后,直接打开 Git Bash,也就是 Git 的控制台程序,就可以开始使用了

第一次使用 Git,需要先配置自己的邮箱与名称

配置邮箱地址

git config --global user.email "mybj123.@126.com"

配置用户名

git config --global user.name "mybj123"

配置完,Git 不会给出任何提示,Linux 的逻辑就是,没有提示就是最美的提示。

注意 git config 命令的–global 参数,用了这个参数,表示你这台机器上所有的 Git 仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和 Email 地址。

要想查看是否配置成功,依然是使用上述命令,把引号以及引号内的内容去掉即可。

拉取项目

配置好我们的个人信息后,自然也就需要拉取项目了

在磁盘中新建好存放项目的文件夹,进入文件夹点击鼠标右键,选择 Git Bash 即可

温馨提示:使用 Git 托管的项目,有两种地址,Https 与 SSH。

使用 Https 地址拉取,验证一次密码后,以后每次拉取/推送的时候不再需要验证密码。

使用 SSH 地址拉取的项目,每次拉取/推送的时候都需要密码验证。

各位读者自己抉择。

git clone 项目地址

分支管理

说分支管理之前,在此做个背景说明:一般在项目开发中会有 2 个主分支(master 与 develop)

master 分支上的内容是发布在生产环境运行的内容

develop 分支是所有开发人员开发完成发布到测试环境的内容

其它各种 feature 分支都是各位开发人员在开发时拉取使用的分支

此文,也沿用此方式,各位读者按照自己实际情况酌情判断

拉取下来后,我们要进行开发,肯定不能在 master 分支上开发,一般在项目上都会有各种分支

项目 clone 下来,首先就是查看分支了

git branch -r

加上-r 是代表查看远程仓库的分支,要是查看本地分支,只需要把-r 去掉即可,-r 是 remote 的简写

查看远程分支,所有的分支名前均会带有 origin/ 的前缀,这个前缀代表着远程分支,拉取远程分支,填写远程分支名时不需要带上 origin/

接到开发任务,我们需要从远程仓库上将我们需要开发的分支拉取到本地

git fetch origin x(远程分支名):y(本地分支名)

使用上述代码,可以将远程分支拉取到本地,并创建本地分支

接着就是要将刚刚创建的本地分支与远程分支做关联了,做了关联之后,拉取更新与推送都不需要再指定分支名称

git branch --set-upstream-to=origin/x(远程分支名)  y(本地分支名)

其中,x 是你本地分支对应的远程分支;y 是你当前的本地分支。

做完关联后,咱们就需要切换分支,在特定的分支上去进行开发任务

先查看本地分支,找到我们需要开发的分支

git branch

再切换到我们需要开发的分支上

git checkout y(分支名)

内容推送

我们在自己的分支上按照需求完成了开发任务,接着就是将我们开发的内容提交到远程仓库了

虽然咱们所在的分支,除了自己之外,按理说是没人会在自己这个分支上再进行开发,所以推送前拉取更新也不很必要

但是为了避免不必要的麻烦,提交之前还是先拉取一下最新的数据

git pull

获取了最新数据后,如果有别的同事动了咱们的分支,那肯定得先解决一下文件的冲突,若没有人动,那也就不用处理了

接着将我们添加/修改的文件提交到本地暂存区

git add xxx(文件名)

xxx 代表着文件名。当然,开发时咱们基本上很少只修改/添加一个单独的文件,当修改或添加了很多文件时,让我们一个一个文件的 add,能把人给累死

所以 Git 也给出了批量 add 的方法,简单粗暴

git add -A

-A 是 All 的缩写,git add all 可以提交未跟踪、修改和删除文件。

.git add . 可以提交未跟踪和修改文件,但是不处理删除文件。

提交到暂存区后完成后就是将改动内容全部提交

git commit -m "提交到暂存区"

引号内的文字,是此次提交内容的一个说明描述,以后看日志时也便于知道此次进行了什么内容的修改

提交完后就是将本次修改的内容推送至远程仓库

git push

好了,到这里 push 的时候,坑来了~~~

如果是自己一个人的项目,此时如何 push 都没问题,但问题就出在,咱们是多人开发的项目,咱们的分支是需要与主分支合并(merge)。

别的同事的任务完成了,早已推送到我们将要合并的 develop 分支上了

所以我们在 push 之前需要进行 code merge ,将 develop 分支上的内容 merge 到我们当前的 feature 分支上

代码合并

此时我们在 feature 分支上已经将修改内容 commit 了

需要将 develop 分支的内容合并到当前分支,先切换分支到 develop 上,再获取一次更新

git checkout develop
git pull

这里切换到 develop 分支上获取更新时有个小坑,咱们暂且按照一切顺利来处理,后面再说一些常见的意外情况的处理。

获取完更新后,再切换到我们的 feature 分支上,将 develop 的内容合并到我们的 feature 分支上

git checkout feature

合并某分支到当前分支

git merge develop

解决冲突

执行 merge 后,如果有冲突,控制台会将有冲突的文件名展示出来,我们按照文件名找到对应文件,将冲突给解决掉后。

打开文件我们可以看到冲突的内容,例如:

<<<<<<>>>>> develop

Git 用<<<<<<<,=======,>>>>>>>标记出不同分支的内容

<<<<<<<与=======之间的内容为当前分支的内容

=======与>>>>>>之间的内容为 develop 分支的内容(换句话说:就是需要被合并的分支内容)

将不需要保留的内容删除即可解决冲突

解决冲突后,我们再将当前的 feature 分支推送到远程仓库

git push

执行完本命令行后,即可将本地分支内容推送至远程仓库

获取更新时的意外情况

前面说从 feature 分支切换到 develop 分支拉取更新时,会有个小坑,因为有时候 Git 会报错

Git pull – Please move or remove them before you can merge

这个错误是因为无论原始文件中.gitignore 文件的内容是什么,文件都被添加到远程存储库中。

由于文件存在于远程存储库中,因此 git 也必须将它们提取到本地工作树,因此会抱怨文件已经存在。

.gitignore 仅用于扫描新添加的文件,它与已添加的文件没有任何关系。

因此,解决方案是删除工作树中的文件并提取最新版本。或者长期解决方案是如果错误地添加了文件,则从存储库中删除文件。

这时我们在 develop 分支上删除当前目录下没有被 track 过的文件和文件夹

git clean -d -f 

现在重新获取更新即可

开发到一半,却需要切换分支

软件开发中,Bug 就像家常便饭一样。有了 Bug 就需要修复,在 Git 中,由于分支是如此的强大,所以,在实战中,每个 Bug 都是通过一个新的临时分支来修复,修复后,将 Bug 分支合并到 develop 与 master 两个分支上,然后将临时分支删除

注意:将 Bug 分支合并到 develop 与 master 两个分支上,是在远程仓库完成。在本地,是需要将 develop 与 master 分支先获取最新,然后将这两分支分别合并在 Bug 分支上,解决冲突后直接推送 Bug 分支即可

可我们在 feature 分支上开发功能开发到一半,leader 突然跑来告诉我们,生产环境出现了一个 Bug,需要咱们紧急修复,咱们兴致勃勃的使用 git checkout Bug 命令,打算切换到 Bug 分支上去修复 Bug

结果……Git 却告诉我们,无法切换过去,因为我们目前所在分支没有提交……

可我们若要完成开发任务再去修复 Bug,可能需要好几个小时甚至几天时间才能完成,而 Bug 修复却是紧急任务,这该如何是好呢?

问题不大,不慌。此时我们可以将当前分支开发的工作状态储藏下来,待我们解决了 Bug,再恢复我们现在的状态

git stash

执行完上述命令后,我们再来看看我们工作区是否干净

git stash status

我们发现工作区非常干净,此时我们就可以顺利的执行 git checkout Bug 到 Bug 分支上去修改 Bug 了

咱们现在将 Bug 也解决了,也推送了,现在又回到 feature 分支继续咱们之前的任务了,切换回 feature 分支后,之前修改的内容也没有恢复啊!说好的储藏了工作状态呢?

咱们就来看看所有储藏的工作

git stash list

使用上述命令,Git 会将所有的储藏工作罗列出来,当我们想要恢复其中某一个储藏状态时,指定其名字就好了

git stash apply stash@{0}

上述的 stash@{0} 是当前分支储藏的工作名,各位读者根据自己的 git stash list 中的内容,自行替换

切换后,确认完当前状态无误了,就可以将之前保存的储藏删除

git stash drop stash@{0}

觉得要执行两行命令比较麻烦?没关系,还有一次性解决问题的方法

切换后并自动删除

git stash pop stash@{0}

不过我个人不大推荐这种方式,万一咱们恢复的储藏指定错了呢,要恢复起来还挺麻烦的。

版本回退

在开发时,总有需要回退到某个版本的时候,不然用版本控制系统干嘛?是吧

我们先来看看我们的历史版本

git log

现在控制台输出了最近三次提交的日志信息,友情提示一下,按键盘 Q 可退出,按回车可查看更多的日志

要是嫌弃输出的内容过于冗杂,可以让 Git 显示个简单版

git log --pretty=oneline

加上一个–pretty=oneline 参数,就可以只看提交的 ID 了

现在我们可以根据当时 commit 时填写的描述信息,来判断哪一个 ID 是我们想要回退的版本

版本的回退,有两种常用的方式

回退到上一个版本

git reset --hard HEAD

根据 commit 的 ID,回退到指定版本

git reset --hard commit_id

commit_id 这个版本号没必要写全,只需要写 6 位以上就差不多了,Git 能自己找到它,若存在前 6 位重复 ID,那再多加几位就好了

版本的回退也非常的简单吧,Git 的命令行操作写到这儿,也进入尾声了。上述的命令基本可以满足日常的使用

小结

Git 命令行的操作,使用起来并不复杂,作为开发人员,会用就行了,使用 Git 的要领就是大量使用分支

总结一下本文牵扯到的 git 操作

git config –global user.name 查看用户名或配置用户名

git config –global user.email 查看 email 或配置 email

git clone 将远程仓库的项目克隆到本地

git branch 查看分支

git branch -r 查看远程分支

git branch 创建分支

git fetch origin origin/remote_branch:your_branch 将远程分支下载到本地,并创建分支

git branch –set-upstream-to=origin/remote_branch your_branch 将本地分支与远程分支做关联

git pull 获取更新

git clean -d -f 删除当前目录下没有被 track 过的文件和文件夹

git merge 将目标分支合并到当前分支

git add 将内容添加到暂存区

git commit 将添加的内容提交

git push 将本地提交内容推送到远程仓库

git checkout 切换分支

git branch -d 删除分支

git stash 储藏当前分支所有内容

git stash list 查看当前分支储藏列表

git stash apply 恢复指定储藏内容

git stash drop 删除指定储藏内容

git stash pop 恢复并删除指定储藏内容

git status 显示工作目录和暂存区的状态

git log 显示 commit 的详细日志

git log –pretty=oneline 只显示 commit 的 ID 与描述

git reset –hard HEAD 回退到最近的一个版本

git reset –hard commit_id 根据 commit_id 回退到指定版本

结束语

以上就是码云笔记为大家带来的全部前端开发超实用的 GIT 教程,希望对大家有帮助,当然也欢迎大家留言拍砖。

「点点赞赏,手留余香」

10

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 前端开发超实用的GIT教程

发表回复