0. 前言

了解 Git 的常用指令,以下将以 Visual Studio Code 作为编辑器、Gitee 作为长途库房介绍相关运用。

Git 的含义在于控制多版本的代码以及更好的团队协作。

Reading && More References:

  1. Git 官方教程:git-scm.com/book/zh/v2

  2. 如安在 Visual Studio Code 中运用 Git:code.visualstudio.com/Docs/editor…

  3. 如安在 WebStorm 中运用 Git:www.jetbrains.com/help/idea/u…


1. 代码克隆(至本地库房) git clone <git address>

仿制代码库房地址(gitee.com/hp-chenpc/f…),找到你寄存本地代码库房的文件夹,右击点选 Git Bash Here。

Git 命令使用(基础篇)

进入 Bash 终端界面,运用以下指令克隆线上代码至本地库房

git clone https://gitee.com/hp-chenpc/frontend_practice.git

Git 命令使用(基础篇)

留意:假如无法执行克隆,请确保在初次运用 git 前,设置相关配置,详细可参看:

  • git-scm.com/book/zh/v2/…
  • git-scm.com/book/zh/v2/…

2. 检查(本地库房的)现有分支 git branch

源码文件夹拖进 vs code,打开终端(Ctrl + ~),能够看到本地库房默认坐落 master 分支:

Git 命令使用(基础篇)

也能够经过指令 git branch 检查本地现有分支,目前仅有 master 一个分支。

经过颜色可知,当时处于 master 分支。

git branch

Git 命令使用(基础篇)

3. 新建分支 git branch <branch name>

一般来讲,正常开发中绝不允许直接在 master 上直接批改代码,咱们需求依据详细使命在本地新建分支。例如,我现在要增加 Vue 脚手架初始化项目,那么新的分支的姓名能够依据【使命类型-使命内容-使命执行人】的方法起为:update-init_project-cpc。

留意:新建的分支需求基于现有分支进行创立,能够理解为造房子需求有一个地基,也能够理解为 JavaScript 中创立一个新的目标实例的条件是要有一个结构函数,是的,它需求有一个地基。

初始化项目的新分支暂时基于 master 分支进行创立,键入以下指令:

git branch update-init_project-cpc

之后,经过 git branch 指令能够看到,本地代码库房中确实有这个分支。

Git 命令使用(基础篇)

4. 切换分支 git checkout <branch name>

尽管咱们创立了新的本地分支,但目前地点的分支并非是它。

需求运用以下指令切换分支:

git checkout update-init_project-cpc

之后,经过 git branch 指令能够看到,当时分支已切换成功。

Git 命令使用(基础篇)

留意:新建分支并切换到新的分支的指令能够兼并为 git checkout -b <branch name>

git checkout -b update-init_project-cpc
# 等价于下面两条指令:
# git branch update-init_project-cpc
# git checkout update-init_project-cpc

5. 检查(文件的)状况陈述 git status

当分支上的文件发生改动时 (这儿我初始化了 Vue 脚手架,详细细节减。),vs code 内置的 git 功用会监测这些文件变化。

输入以下指令检查状况陈述:

git status

Git 命令使用(基础篇)

留意:

  • 在提交(commit)代码之前,咱们需求将发生变化的文件(staged changes)存入一个位置——暂存区
  • 暂存区的含义在于,它会追寻变化。
    • 当你提交代码时,存在暂存区的文件(就是被追寻的文件)将会被提交上去;
    • 而不在暂存区的(肯定是有变化的)文件,没有被追寻,因而不会被提交上去。
    • 所以,当你将当时分支的代码与上游分支兼并,却发现上游分支的代码某些功用缺失时,你就要想到是不是有文件没有被提交到暂存区。

6. 追寻新文件(放入暂存区) git add <file name>

一般来说,一个大的功用点将会被拆分为少许小的功用点,每开发完一个小的功用点后,都会提交一次代码,在提交之前,需求将改动的文件增加至暂存区,然后再提交。

git add .

git add 后边我只写了一个点,表明将当时文件夹下一切的改动文件(不管是未被追寻的,还是被追寻的。)全部增加至暂存区。

Git 命令使用(基础篇)

接着再看一次文件状况,git status。

Git 命令使用(基础篇)
一切改动的文件已被放进暂存区。

留意:假如想要指定文件,例如,我只想将 README.md 文件增加进暂存区,那么输入以下指令即可:

git add README.md

Git 命令使用(基础篇)

7. 提交更新记载 git commit -m 'some commit logs'

提交暂存区内一切文件,更新本地库房,从而确保从本地库房向长途库房推送的代码是最新的。

git commit -m 'init project'

Git 命令使用(基础篇)

每次提交都会生成一个提交记载的 id 值,这个是有含义的,感兴趣的能够去查找资料。


8. 推送分支(至长途库房) git push origin <branch name> / git push

现在能够将这批代码推送至长途库房了。

git push origin update-init_project-cpc

Git 命令使用(基础篇)

留意:到这儿,或许会有疑惑,一般不是 git push 就好了么?

原因在于:update-init_project-cpc 这个分支并没有在长途库房,因而需求将推送指令写完整才行。

之后,长途库房也有这个分支以后,便可直接 git push。


9. 拉取(长途库房的)分支 git pull

以上,咱们完成了代码克隆、新建分支、切换分支、文件追寻(暂存)、提交更新记载、分支推送,现在能够说是完成了 60% 的使命了,剩下 40% 要做的事是更新长途库房的主分支 master

分为四步:

第一步,从 update-init_project-cpc 分支切换至 master 分支 (留意都是本地库房);

git checkout master

Git 命令使用(基础篇)

第二步,master 分支拉取长途库房,确保本地的 master 分支与长途库房中的 master 文件状况保持一致

git pull

Git 命令使用(基础篇)

留意:这儿看似多了一步,实践上在实在开发过程中,长途库房的 master 分支或许与咱们最开始的不一样了,有更新,因而这一步是有必要的!


10. 兼并分支 git merge <branch name>

第三步,将 update-init_project-cpc 分支上的代码兼并进 master 分支。

留意,此刻咱们坐落 master 分支,要兼并谁,branch name(分支名) 就写谁,这儿是 update-init_project-cpc。

git merge update-init_project-cpc

11. 检查未暂存的批改 git diff

Git 命令使用(基础篇)

一般情况下,能够正常兼并。

但这儿呈现了一个错误,提示咱们有一个文件(.gitignore)没有被提交。

原因是 vs code 发现 master 分支上的 .gitignore 文件能够做一些更好的批改,所以我遵循它的主张作了批改,但此刻并未提交这些批改

还记得吗?能够经过 git status 来检查本地库房的文件状况:

git status

Git 命令使用(基础篇)

假如git status 指令的输出关于你来说过于简略,而你想知道详细批改了什么地方,能够用git diff 指令。—— git-scm.com/book/zh/v2/…

git diff

git diff 指令能够看到文件批改的详细细节,而不仅仅是文件的姓名。

Git 命令使用(基础篇)

接下来,文件增加追寻,放进暂存区,并提交更新。

git add .gitignore && git commit -m 'update .gitignore'

Git 命令使用(基础篇)

留意:上面的指令是连写方法,也能够像下面这样分开写:

git add .gitignore
git commit -m 'update .gitignore'
# 上面两条可兼并为一条:
# git add .gitignore && git commit -m 'update .gitignore'

当然,还需求推送到长途库房才行。

git push

Git 命令使用(基础篇)

终究,从头进行代码兼并。

git merge update-init_project-cpc

Git 命令使用(基础篇)

又犯错了!主动兼并时,提示 .gitignore 文件存在抵触。


12. 处理分支抵触

Git 命令使用(基础篇)

如上图所示,在 vs code 中,假如呈现分支抵触,那么在这个发生抵触的文件中,绿色代表当时分支 (此刻是 master 分支) 的内容,蓝色表明外来分支 (此刻是 update-init_project-cpc 分支) 的内容。

依据实践情况,这儿应该挑选外来分支的内容,点击绿色规模上方的第二个选项:Accept Incoming Change

Git 命令使用(基础篇)

这样,就处理了分支抵触。

留意:实践工作中,遇到的抵触或许远比这个杂乱,有必要的情况下,请和团队成员承认兼并结果,避免兼并犯错,造成代码丢掉等问题。

接下来,从头增加文件放进暂存区、提交并推送。

git add .gitignore && git commit -m 'fix conflicts in .gitignore && git push'

Git 命令使用(基础篇)

好像推送成功了,可是又没有成功。

因为我把 && git push 指令写进了提交记载的字符串中,本来要写的是:

git add .gitignore && git commit -m 'fix conflicts in .gitignore' && git push

现在,已经提交了记载了,该怎么办?

从头批改提交信息即可。

13. 检查分支提交前史 git log

在批改提交信息之前,咱们需求看一下提交前史,承认上一次的提交信息是否写错。

那么如何检查提交前史呢?

git log

Git 命令使用(基础篇)

咱们能够看到最近一条提交记载的提交信息被误写成:fix conflicts in .gitignore && git push。

14. 批改上一次的提交 git commit —amend

有时候咱们提交完了才发现漏掉了几个文件没有增加,或者提交信息写错了。 此刻,能够运转带有--amend 选项的提交指令来从头提交。——git-scm.com/book/zh/v2/…

git commit --amend

输入后,呈现以下界面,第一行就是刚刚的提交信息:

Git 命令使用(基础篇)

此刻,按下 i 键进入 insert 模式

Git 命令使用(基础篇)

移动光标,批改第一行的提交信息:

Git 命令使用(基础篇)

完成后,按下 Esc 键,退出 insert 模式,底部的”刺进“字样消失。

Git 命令使用(基础篇)

此刻,直接键入 Linux 指令 —— :wq ,保存编辑并退出。呈现以下界面说明批改成功:

Git 命令使用(基础篇)

这时再次运用 git log 检查提交前史。

Git 命令使用(基础篇)
没有问题。

终于,正式来到终究章——将兼并好的 master 分支推送至长途库房(git push),并运用 git status 再次检查文件状况:本地库房的分支已更新到长途库房,也确实没有东西提交了,本地和长途库房的内容保持一致。

Git 命令使用(基础篇)

至此,完成了初始化 Vue 脚手架的使命(相关分支:update-init_project-cpc)。

15. Summary

假如你边读边做,我相信你应该会把握以下技术:

  1. 将一个长途库房克隆到本地
  2. 在本地新建分支
  3. 切换(检出)分支
  4. 追寻文件,放进暂存区
  5. 提交更新
  6. 推送分支

除此之外,还包含分支兼并、分支抵触的处理、提交信息的批改等内容。

完毕了么?并没有~ 未完待续……

增加我的微信:enjoy_Mr_cat,共同成长,卷卷群里等你 。

以上,感谢您的阅读。